深度学习--GRU(门控循环单元)原理详解
上一篇中已经总结了RNN的原理,传送门:https://blog.csdn.net/wenqiwenqi123/article/details/80704528本文讲解一下GRU的原理,GRU对于RNN中的梯度消失有很大帮助。GRU即Gated Recurrent Unit。前面说到为了克服RNN无法很好处理远距离依赖而提出了LSTM,而GRU则是LSTM的一个变体,当然LSTM还有有很多其他的变
上一篇中已经总结了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。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)