RNN

增加了上一个时间步的隐藏状态H(t1)H_{(t-1)}

Ht=f(XWxh+Ht1Whh+bh)H_t = f(XW_{xh}+H_{t-1}W_{hh}+b_h)

Ot=HtWhc+bcO_t = H_tW_{hc}+b_c

缺陷:

  • 梯度消失与梯度爆炸;
  • 长期依赖的问题

循环神经网络 (Recurrent Neural Network, RNN)

LSTM

增加了输入门、遗忘门和输出门,同时包含隐藏状态的记忆细胞,这种门结构使其具有向单元状态增加或删除信息的能力。输入为记忆细胞Ct1C_{t-1}、隐藏状态Ht1H_{t-1}和输入XtX_t

LSTM

  • 遗忘门:决定从上一时刻记忆细胞中遗忘的信息。Ft=σ(XtWxf+Ht1Whf+bf)F_t = \sigma(X_tW_{xf}+H_{t-1}W_{hf}+b_f)
  • 输入门:决定记忆细胞中储存什么新信息。It=σ(XtWxi+Ht1Whi+bi)I_t = \sigma(X_tW_{xi}+H_{t-1}W_{hi}+b_i)
  • 控制细胞状态:C^t=tanh(XtWxc+Ht1Whc+bc)\hat C_t= tanh(X_tW_{xc}+H_{t-1}W_{hc}+b_c)
  • 更新细胞状态:Ct=ftCt1+itC^tC_t=f_t \odot C_{t-1} + i_t \odot \hat C_t
  • 输出门:Ot=σ(XtWxo+Ht1Who+bo)O_t = \sigma(X_tW_{xo}+H_{t-1}W_{ho}+b_o)
  • 隐藏状态:Ht=Ottanh(Ct)H_t = O_t \odot tanh(C_t)

如果遗忘门值接近1,而输入门值接近0,过去的记忆细胞将一直流入并传递到当前状态,这可以缓解RNN梯度衰减的问题,并且更好地捕捉长序列的依赖关系。(细胞状态与输出共同生成隐藏状态)

sigmoid 与 tanh

三个门采用sigmoid激活函数,变换到0-1之间;tanh用于状态和输出,是对数据的处理。
Sigmoid的输出在0-1之同,符合门控的物理定义,且当输入较大或较小时,其输出会非常接近1或0,从而保证该门开或关。
在生成候选记亿时,使用tanh函数,是因为其输出在-1-1之间,这与大多数场景下特征分布是0中心的吻合。