LSTM 模型是对SimpleRNN的改进,LSTM可以避免梯度消失的问题,可以有更长的记忆。
LSTM中最重要的设计就是传输带
- 传输带(Conveyor belt) C t C_t Ct:过去的信息通过传输带直接送到下一时刻,不会发生太大的变化。LSTM就是通过传输带避免了梯度消失的问题。
LSTM中的Gate:可以让信息有选择的通过。
Forget Gate
遗忘门由sigmoid函数和单元乘法两部分组成
1、输入向量a通过sigmoid函数作用得到输出向量f
2、接着计算传输向量 c 和 f 的单元乘法。这个遗忘门 f 有选择的让传输带c的值通过:
- if f 的一个元素为 0,那么 c 对应的值不能通过
- if f 的一个元素为1, 那么 c 对应的值可以全部通过,对应的输出为本身
遗忘门 f 的计算
Input Gate
- 输入门 i t i_t it 的计算。
- New value C ⃗ t \vec C_t Ct计算。所用激活函数是tanh,故输出值在[-1, 1]之间
如图,传送带 C t C_t Ct 的一轮更新
输出门 o t o_t ot
最后,计算LSTM的输出 (状态 h t h_t ht)。
h t = o t ⋅ t a n h ( c t ) h_t=o_t ·tanh(ct) ht=ot⋅tanh(ct)
h t h_t ht有两份拷贝,一份作为LSTM的输出,另一份传输到下一步
总结
- LSTM和SimpleRNN的主要区别是LSTM用了一条传输带,让过去的信息很容易传输到下一时刻,这样就有了更长的记忆
- LSTM有四个组件:
- Forget gate
- Input gate
- New values C ⃗ t \vec C_t Ct
- Output gate
- LSTM 参数数量:4 * shape(h) * [shape(h) + shape(x)]