上一篇 | 下一篇 |
---|---|
LSTM(下集) | GRU(下集) |
GRU(门控循环单元)
它其实是 R N N RNN RNN 和 L S T M LSTM LSTM 的折中版,有关 R N N RNN RNN 和 L S T M LSTM LSTM 请参考往期博客。
实际应用要比 L S T M LSTM LSTM 少,往往作为一个小部件使用。
一、相关知识早知道
和 L S T M LSTM LSTM 的区别?
- 这两种模型其实不相上下,重点还是在于调整层数以及超参数。
- G R U GRU GRU 的参数较少,因此其训练速度更快;也因此相比于 L S T M LSTM LSTM , G R U GRU GRU 能降低过拟合风险。
- 如果有足够的训练数据,表达能力更强的 L S T M LSTM LSTM 或许效果更佳。
为什么能缓解梯度消失和梯度爆炸?
和 L S T M LSTM LSTM 一样,请参考往期博客。
二、结构图
1)单个时刻结构图
其内部包含三个网络层(其中两个门单元):更新门、重置门、隐层状态输出层。
两个极端情况,一是直接舍弃过去的隐层状态信息,只接受当下的输入信息;另一种是完全接受过去的隐层状态信息,并舍弃当下的输入信息。
①重置门 r t \Large r_t rt
公式: r t = σ ( W x r ⋅ x t + W h r ⋅ h t − 1 + b r ) = σ ( W r ⋅ [ x t , h t − 1 ] + b r ) \Large r_t=\sigma(W_{xr}·x_t+W_{hr}·h_{t-1}+b_r)=\sigma(W_{r}·[x_t,h_{t-1}]+b_r) rt=σ(Wxr⋅xt+Whr⋅ht−1+br)=σ(Wr⋅[xt,ht−1]+br) 。
σ \large \sigma σ 函数使 r t \large r_t rt 的元素处于 0 ∼ 1 0\sim1 0∼1 ,使其对 h t − 1 \large h_{t-1} ht−1 具有舍弃功能, 1 1 1 表示 “完全接受”, 0 0 0 表示 “完全忽略” (对当前时刻没有用的历史信息就给它舍弃掉)。
②更新门 z t \Large z_t zt
公式: z t = σ ( W x z ⋅ x t + W h z ⋅ h t − 1 + b z ) = σ ( W z ⋅ [ x t , h t − 1 ] + b z ) \Large z_t=\sigma(W_{xz}·x_t+W_{hz}·h_{t-1}+b_z)=\sigma(W_{z}·[x_t,h_{t-1}]+b_z) zt=σ(Wxz⋅xt+Whz⋅ht−1+bz)=σ(Wz⋅[xt,ht−1]+bz) 。
③隐层状态输出 h t \Large h_t ht
公式:
h ~ t = t a n h ( W x h ⋅ x t + W h h ⋅ ( r t ⊙ h t − 1 ) + b h ) h t = ( 1 − z t ) ⊙ h t − 1 + z t ⊙ h ~ t \Large \tilde{h}_t=tanh(W_{xh}·x_t+W_{hh}·(r_t⊙h_{t-1})+b_h)\\ \Large h_t = (1-z_t)⊙h_{t-1}+z_t⊙\tilde{h}_t h~t=tanh(Wxh⋅xt+Whh⋅(rt⊙ht−1)+bh)ht=(1−zt)⊙ht−1+zt⊙h~t
这里的 ⊙ ⊙ ⊙ 表示:向量或矩阵的对应元素相乘。
这里的 h ~ t \large \tilde{h}_t h~t 可以理解成:是在对历史信息进行部分舍弃之后,再结合当前信息学习到的新知识(有冗余项,相当于候选的隐层状态信息输出)。
而 h t \large h_t ht 是在 h ~ t \large \tilde{h}_t h~t 的基础上,进一步对历史信息进行筛选,看看是不是还有一些有用的信息。
【补充】:其实这里的 ( 1 − z t ) (1-z_t) (1−zt) 和 z t z_t zt 是可以交换的,固定好之后让模型自动学习即可。
2)说明:
r t \large r_t rt 和 z t \large z_t zt 虽然在表达式上相差无几,不过在模型参数的不断学习中,两者的功能会自动区分开。
r t \large r_t rt 的作用实质上是在更新 h t \large h_t ht 的时候,舍弃多少 h t − 1 \large h_{t-1} ht−1 的信息(用来捕获短期依赖信息); z t \large z_t zt 的作用实质上是在更新 h t \large h_t ht 的时候,吸收多少 h t − 1 \large h_{t-1} ht−1 的信息(用来捕获长期依赖信息)。
隐层的尺寸一般来说都是 128 × 1 128×1 128×1 、 256 × 1 256×1 256×1 这些常规的尺寸。