相比于RNN只传递一个状态ht,LSTM传递两个状态:ht和Ct
RNN中的ht相当于LSTM中的Ct。
Ct变化较慢,通常是上一个细胞状态Ct-1加上一些数值形成的
ht在不同节点下差别会很大
首先使用LSTM的输入xt和上一个时间步里传递下来的ht-1拼接得到四个状态。
zf、zi和zo是拼接向量乘以权重矩阵后,再通过sigmoid激活函数转换成0到1之间的数值——作为门控状态。
z是将结果通过tanh激活函数转换到-1到1之间的值。
LSTM三个阶段
- 忘记阶段。对上一个节点传进来的输入进行选择性忘记。
通过计算得到的zf作为忘记门控,控制上一个状态的ct-1哪些被遗忘。 - 选择记忆阶段,对这个阶段的输入选择性记忆。
- 输出阶段
复杂度:LSTM>GRU>RNN。当数据集不大时,LSTM和GRU效果差不多,但数据量很大时,LSTM效果更优。
RNN和GRU都只传递隐状态,LSTM还传递细胞状态。
对于普通RNN,要么求导公式总是大于1,要么总是在[0,1]范围内,连乘后就会出现梯度消失或梯度爆炸问题,而对于LSTM,任何时间步里,可以取[0,1],或者[0,1]范围内,当时间步延伸到无穷时,可以通过设置gate,防止梯度消失和梯度爆炸。