最通俗易懂的LSTM讲解--NLP

最通俗易懂的LSTM讲解

LSTM 是一种带有门控机制的RNN模型,他的提出是为了解决RNN的梯度消失问题。

LSTM与RNN不同的地方在于LSTM每次向下传递两个状态, 一个是和RNN一样的隐藏状态 hiddenthidden_{t}, 一个是此刻的信息 celltcell_{t}

LSTM 通过遗忘门zfz^{f}, 输入门ziz^{i}, 输出门zoz^{o},三个门控制信息的流入流出量。

这三个门又是怎么得到的呢?
最通俗易懂的LSTM讲解--NLP
最通俗易懂的LSTM讲解--NLP
拼接t时刻的输入x 和 前一时刻的隐藏状态, 乘一个权重矩阵(注意权重矩阵不是共享的),再套一个sigmoid函数映射到0~1之间, 达到一个门控的效果。
注意z代表t时刻的输入信息, 不是门控,所以没有用sigmoid**函数。

得到三个门以及输入之后,就进入到了LSTM单元内部。
最通俗易懂的LSTM讲解--NLP
图片来源

ctc^{^{t}} 是更新t时刻的cell状态, 用遗忘门乘前一时刻的cell状态(前文说了lstm会传递两个状态),代表要保存多少前边的信息, 输入们乘t时刻的输入,采纳多少t时刻的信息。

将t时刻的cell信息通过**函数,乘输出门,就得到了t时刻的隐含状态。

和RNN的输出状态的计算方法一样, 隐含状态乘一个权重矩阵在套sigmoid函数就得到了t时刻的输出值。

然后再将ctc^{t}hth^{t} 传递到下一时刻, 实现时序序列信息对前边时刻的记忆。