为了进一步改善循环神经网络的梯度消失和梯度爆炸问题,基于门控的循环神经网络,利用门控单元控制隐藏状态随时间的积累程度。门控单元通过捕捉过去信息,可以对长序列进行建模。在门控循环神经网路中使用最多的就是GRU和LSTM。
1 GRU
门控循环单元GRU(Gate Recurrent Unit)在普通循环神经网络的基础上引入了重置门和更新门,对隐藏状态进行调整。GRU在循环神经网络的每个时刻上对前馈神经网络的隐藏层进行修改。
- 重置门为
R
t
R_t
Rt,更新门
Z
t
Z_t
Zt为(0,1)之间的数,通过学习得到
R t = σ ( X t W x r + H t − 1 W h r + b r ) Z t = σ ( X t W x z + H t − 1 W h z + b z ) R_t = \sigma(X_tW_{xr}+H_{t-1}W_{hr}+b_r)\\ Z_t = \sigma(X_tW_{xz}+H_{t-1}W_{hz}+b_z) Rt=σ(XtWxr+Ht−1Whr+br)Zt=σ(XtWxz+Ht−1Whz+bz) - 隐藏状态为上一层隐藏状态和候选隐藏状态移动平均
H t = Z t ⊙ H t − 1 + ( 1 − Z t ) ⊙ H ~ t H_t = Z_t\odot H_{t-1}+(1-Z_t)\odot \tilde H_t Ht=Zt⊙Ht−1+(1−Zt)⊙H~t - 更新门 Z t Z_t Zt决定了对过去隐藏状态的更新程度
- 候选隐藏状态根据当前信息X_t、过去信息计算
- 候选隐藏状态
H ~ t = t a n h ( X t W x h + ( R t ⊙ H t − 1 ) W h h + b h ) \tilde H_t = tanh(X_tWxh+(R_t\odot H_{t-1})W_{hh}+b_h) H~t=tanh(XtWxh+(Rt⊙Ht−1)Whh+bh) - 重置门决定了是否重置信息积累,局部是否发生显著变化,短期关系
- 更新门决定了是否对过去隐藏状态进行更新,长期依赖关系
2 LSTM
长短期记忆单元LSTM(Long short-term memory)在普通循环神经网络的基础上引入了输入门、输出门和遗忘门。同样是对隐藏状态进行调整,在循环神经网络的每个时刻上对前馈神经网络的隐藏层进行修改。
- 输入门
I
t
I_t
It、输出门
O
t
O_t
Ot、遗忘门
F
t
F_t
Ft为(0,1)之间的数,通过学习得到
I t = σ ( X t W x i + H t − 1 W h i + b i ) O t = σ ( X t W x o + H t − 1 W h o + b o ) F t = σ ( X t W x f + H t − 1 W h f + b f ) I_t = \sigma(X_tW_{xi}+H_{t-1}W_{hi}+b_i) \\ O_t = \sigma(X_tW_{xo}+H_{t-1}W_{ho}+b_o) \\ F_t = \sigma(X_tW_{xf}+H_{t-1}W_{hf}+b_f) It=σ(XtWxi+Ht−1Whi+bi)Ot=σ(XtWxo+Ht−1Who+bo)Ft=σ(XtWxf+Ht−1Whf+bf) - 隐藏状态由输出门控制
H t = O t ⊙ t a n h ( C t ) H_t = O_t\odot tanh(C_t) Ht=Ot⊙tanh(Ct) -
C
t
C_t
Ct为记忆单元,类似GRU中的隐藏状态,代表当前信息累积大小,取决于上一时刻隐藏层的信息累积(上一时刻记忆单元)×遗忘程度(遗忘门控制)和当前信息(当前候选记忆单元)×更新程度(输出门控制)
C t = F t ⊙ C t − 1 + I t ⊙ C ~ t C_t = F_t\odot C_{t-1}+I_t \odot \tilde C_t Ct=Ft⊙Ct−1+It⊙C~t - 候选记忆单元类似GRU中的候选隐藏状态
C ~ t = t a n h ( X t W x c + H t − 1 W h c + b c ) \tilde C_t = tanh(X_tW_{xc}+H_{t-1}W_{hc}+b_c) C~t=tanh(XtWxc+Ht−1Whc+bc) - LSTM 需要额外一个记忆单元序列 { C t } \{C_t\} {Ct}
- 输入门 I t I_t It:控制当前信息是否输入动态系统,更新过去状态
- 输出门 O t O_t Ot:控制记忆单元输出大小
- 遗忘门 F t F_t Ft:控制过去信息累积需要丢弃多少