RNN
增加了上一个时间步的隐藏状态H(t−1)
Ht=f(XWxh+Ht−1Whh+bh)
Ot=HtWhc+bc
缺陷:
循环神经网络 (Recurrent Neural Network, RNN)
LSTM
增加了输入门、遗忘门和输出门,同时包含隐藏状态的记忆细胞,这种门结构使其具有向单元状态增加或删除信息的能力。输入为记忆细胞Ct−1、隐藏状态Ht−1和输入Xt。
- 遗忘门:决定从上一时刻记忆细胞中遗忘的信息。Ft=σ(XtWxf+Ht−1Whf+bf)
- 输入门:决定记忆细胞中储存什么新信息。It=σ(XtWxi+Ht−1Whi+bi)
- 控制细胞状态:C^t=tanh(XtWxc+Ht−1Whc+bc)
- 更新细胞状态:Ct=ft⊙Ct−1+it⊙C^t
- 输出门:Ot=σ(XtWxo+Ht−1Who+bo)
- 隐藏状态:Ht=Ot⊙tanh(Ct)
如果遗忘门值接近1,而输入门值接近0,过去的记忆细胞将一直流入并传递到当前状态,这可以缓解RNN梯度衰减的问题,并且更好地捕捉长序列的依赖关系。(细胞状态与输出共同生成隐藏状态)
sigmoid 与 tanh
三个门采用sigmoid激活函数,变换到0-1之间;tanh用于状态和输出,是对数据的处理。
Sigmoid的输出在0-1之同,符合门控的物理定义,且当输入较大或较小时,其输出会非常接近1或0,从而保证该门开或关。
在生成候选记亿时,使用tanh函数,是因为其输出在-1-1之间,这与大多数场景下特征分布是0中心的吻合。