论⽂笔记:GRU----RNNEncoder-Decoder
<<Learning Phrase Representations using RNN Encoder–Decoderfor Statistical Machine Translation>>这篇论⽂在传统的Encoder-Decoder模型上使⽤RNN,模型结构如下:
看图就知道要说什么了,亮点在于⽂章对隐层节点的创新:
先回顾下传统的 naive RNN:
看图就⾏,不多说。
再让我们回顾下传统的LSTM:
可以看到,
LSTM需要更新四组参数:分别是input gate  、forget gate 、 output gate 、还有对input内容进⾏处理的gate 更新⽅式如下:
OK,现在我们对⽐下LSTM和RNN:
我们可以将LSTM看成保存2组隐层信息的RNN,⼀组是C,⼀组是h。从C和h的更新公式来看,我们倾向于:
把C看成是不怎么容易改变的持久记忆;正是有了C,LSTM才可以克服长时间记忆的瓶颈。
⽽h看成改变的⽐较⼤的⼯作记忆。
好勒,那么  GRU⼜是什么呢?
如果⽤最简单的图来表⽰。我们倾向于表⽰成这样:
注意:这⾥的h 应该和LSTM⾥的C是⽐较类似的,也就是GRU保存的更多还是长期的记忆,因此和naive RNN相⽐也是可以克服长期记忆的瓶颈。
在具体点:
左下⾓是LSTM,右边是GRU。
从这张图我们可以看出GRU的⼀些结构:
为了突出参数的个数,我将不同组参数⽤不同的箭头颜⾊来表⽰
可以看到,传统的LSTM需要更新4组参数,⽽GRU只需要更新3组参数。这是GRU相较于LSTM⼀个很⼤的优势。
下⾯回归数学,看看GRU的更新⽅法:
GRU有两个门: Reset 门  和 Update门:
reset门:Reset主要⽤来决定是否要更新记忆库⾥的记忆h,当reset=0.将会将之前的记忆全部洗掉,=1则保留全部之前的记忆。也就是说,reset门允许hidden state去洗掉和未来⼯作⽆关的记忆,使得保留下来的长期记忆更加紧凑和有⽤。
也就是reset门通过 输⼊X和上⼀次的隐状态h_t-1来进⾏计算
update 门:Update控制了要从过去记忆中提取哪些记忆放到当前记忆中以及当前输⼊有多少需要放到记忆中。
计算⽅式和Reset⼀样
update是什么
接着,我们注意下h‘的计算:
也就是说h’是通过当前输⼊X和通过reset门之后的记忆来计算的。
最后的h_t的公式为:
通过update门对h和h'同时进⾏操作得到最后结果。
注意到,论⽂给的公式都是具体到每⼀个hidden unit,rj  zj  hj等
由于每⼀个隐层单元都具有独⽴的reset门和update 门,使得不同隐层单元可以独⽴学会捕捉时间维度上的依赖关系:也就是说,那些⽤来捕捉短期记忆的单元将会使它的reset gate经常处于激活状态。⽽那些偏向于保存长期的单元将会经常让update gate处于激活状态,究竟哪些单元保存什么信息,交给机器在训练过程中学就⾏了。
可以看到,变换前后h_t-1和h_t的变化不会太⼤,因此同样可以保留⼤部分的长期记忆。还减少了参数,何乐⽽不为呢。
GG.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。