梯度爆炸通过裁剪梯度进行控制,但是矩阵的长乘积会导致梯度消失或发散 。梯度消失在实践中的含义:
【21 GRUMxnet : 门控循环单元】目前已经有很多方法拉解决此类问题 。最早的一种是长短期记忆(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?=σ(Xt?Wxr?+Ht?1?Whr?+br?),Zt?=σ(Xt?W