深度学习--GRU(门控循环单元)原理详解

上一篇中已经总结了RNN的原理,传送门:https://blog.csdn.net/wenqiwenqi123/article/details/80704528

本文讲解一下GRU的原理,GRU对于RNN中的梯度消失有很大帮助。GRU即Gated Recurrent Unit。为了克服RNN无法很好处理远距离依赖而提出了LSTM,而GRU则是LSTM的一个变体,当然LSTM还有有很多其他的变体。GRU保持了LSTM的效果同时又使结构更加简单,所以它也非常流行。

先复习一下:

RNN单元中从前一个时间步得到激活值a<t-1>,将其与x<t>同时输入影响y<t>。


那么GRU的原理如下图所示:

请看右边的公式,c为记忆单元,在GRU中激活值a<t>等于c<t>。

c<t>~为在此步中可能要更新的c<t>值。

Γu为更新门,式中的δ为sigmoid函数,这让Γu趋向于0或者1。

c<t>的公式如图,当Γu为0时,则保持c<t>=c<t-1>,即记忆前一步的值。当Γu为1时,则将c<t>更新为c<t>~。

由网络来决定Γu为0还是1,即是否要记忆前一步。

如这句话所示: The cat,which already ate.....,was full。在cat时Γu为1,所以此时c<t>更新,之后的which定语从句因为要记住cat是单数,所以Γu全为0,直到was仍然记得cat为单数,在was时Γu变为1,c<t>更新,从was以后不再记得cat是单数。

Γu、c<t>和c<t>~的shape是一样的,可以定义每一个结点有多少个c(记忆单元)。


在实际应用中还有另一个门,是研究员在经过无数次实验后得出的结论,下图有一个错误c<t>在更新的时候加号应该为乘号,也就是最后一行右边应该为(1-Γu)*c<t-1>:


即Γr,重置门。更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门用于控制忽略前一时刻的状态信息的程度,重置门的值越小说明忽略得越多。

下一篇说一下LSTM。

猜你喜欢

转载自blog.csdn.net/wenqiwenqi123/article/details/80707810
今日推荐