GRU详解

GRU是LSTM的一个变种,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。GRU和LSTM在很多情况下实际表现上相差无几,但是GRU计算更简单,更易于实现。下面是整体的结构图:
GRU详解_第1张图片
下图为GRU的详细内部结构:
GRU详解_第2张图片
其中, z t = σ ( W z . [ h t − 1 , x t ] ) z_t=\sigma(W_z.[h_{t-1},x_t]) zt=σ(Wz.[ht1,xt]) r t = σ ( W r . [ h t − 1 , x t ] ) r_t=\sigma(W_r.[h_{t-1},x_t]) rt=σ(Wr.[ht1,xt]) h ~ t = t a n h ( W . [ r t ∗ h t − 1 , x t ] ) \widetilde{h}_t=tanh(W.[r_t*h_{t-1},x_t]) h t=tanh(W.[rtht1,xt]) h t = ( 1 − z t ) ∗ h t − 1 + z t ∗ h ~ t h_t=(1-z_t)*h_{t-1}+z_t*\widetilde{h}_t ht=(1zt)ht1+zth t
GRU只有两个门。GRU将LSTM中的输入门和遗忘门合二为一,称为更新门(update gate),上图中的 z t z_t zt,控制前边记忆信息能够继续保留到当前时刻的数据量,或者说决定有多少前一时间步的信息和当前时间步的信息要被继续传递到未来;GRU的另一个门称为重置门(reset gate),上图中的 r t r_t rt ,控制要遗忘多少过去的信息。
概括来说,LSTM和CRU都是通过各种门函数来将重要特征保留下来,这样就保证了在long-term传播的时候也不会丢失。此外GRU相对于LSTM少了一个门函数,因此在参数的数量上也是要少于LSTM的,所以整体上GRU的训练速度要快于LSTM的。不过对于两个网络的好坏还是得看具体的应用场景。

参考文章
https://www.cnblogs.com/jiangxinyang/p/9376021.html

你可能感兴趣的:(深度学习,gru,lstm,深度学习)