Mxnet (21): 门控循环单元(GRU)
梯度爆炸通过裁剪梯度进行控制,但是矩阵的长乘积会导致梯度消失或发散。梯度消失在实践中的含义:
目前已经有很多方法拉解决此类问题。最早的一种是长短期记忆(LSTM)。门控循环单元(GRU)是一种变体,通常可以提供足够的性能,并且计算速度更快。
1. 门控隐藏状态
GRU和常规RNN的主要区别在于,GRU支持隐藏状态的门控。也就是说具有专门的机制可以确定隐藏状态的更新和重置。这些机制可以解决上面列举的问题:
1.1 重置门和更新门
GRU中复位门和更新门的输入 X t X_t Xt 和上一个时间步的隐藏状态 H t − 1 H_{t−1} Ht−1 。输出由具有S形作为其激活功能的全连接层给出。
对于一个时间步长 t t t, 最小的批量输入为 X t ∈ R n × d \{X}_t \in \{R}^{n \times d} Xt∈Rn×d (样本数: n n n, 输入数: d d d) 最后一步的隐藏状态为 H t − 1 ∈ R n × h \{H}_{t-1} \in \{R}^{n \times h} Ht−1∈Rn×h (隐藏状态数为: h h h). 重置门 R t ∈ R n × h \{R}_t \in \{R}^{n \times h} Rt∈Rn×h, 更新门 Z t ∈ R n × h \{Z}_t \in \{R}^{n \times h} Zt∈Rn×h 计算如下:
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 ) . \begin{} \{R}_t = \sigma(\{X}_t \{W}_{xr} + \{H}_{t-1} \{W}_{hr} + \{b}_r),\\ \{Z}_t = \sigma(\{X}_t \{W}_{xz} + \{H}_{t-1} \{W}_{hz} + \{b}_z). \end{} Rt=σ(XtWxr+Ht−1Whr+br),Zt=σ(XtW