三次简化一张图: 一招理解LSTM/GRU门控机制

做者 | 张皓git


引言

RNN是深度学习中用于处理时序数据的关键技术, 目前已在天然语言处理, 语音识别, 视频识别等领域取得重要突破, 然而梯度消失现象制约着RNN的实际应用。LSTM和GRU是两种目前广为使用的RNN变体,它们经过门控机制很大程度上缓解了RNN的梯度消失问题,可是它们的内部结构看上去十分复杂,使得初学者很难理解其中的原理所在。本文介绍”三次简化一张图”的方法,对LSTM和GRU的内部结构进行分析。该方法很是通用,适用于全部门控机制的原理分析。
github

预备知识: RNN

RNN (recurrent neural networks, 注意不是recursiveneural networks)提供了一种处理时序数据的方案。和n-gram只能根据前n-1个词来预测当前词不一样, RNN理论上能够根据以前全部的词预测当前词。在每一个时刻, 隐层的输出ht依赖于当前词输入xt和前一时刻的隐层状态ht-1:
web


其中:=表示"定义为", sigm表明sigmoid函数sigm(z):=1/(1+exp(-z)), Wxh和Whh是可学习的参数。结构见下图:
微信


图中左边是输入,右边是输出。xt是当前词,ht-1记录了上文的信息。xt和ht-1在分别乘以Wxh和Whh以后相加,再通过tanh非线性变换,最终获得ht。
网络

在反向传播时,咱们须要将RNN沿时间维度展开,隐层梯度在沿时间维度反向传播时须要反复乘以参数。所以, 尽管理论上RNN能够捕获长距离依赖, 但实际应用中,根据谱半径(spectralradius)的不一样,RNN将会面临两个挑战:梯度爆炸(gradient explosion)和梯度消失(vanishing gradient)。梯度爆炸会影响训练的收敛,甚至致使网络不收敛;而梯度消失会使网络学习长距离依赖的难度增长。这二者相比, 梯度爆炸相对比较好处理,能够用梯度裁剪(gradientclipping)来解决,而如何缓解梯度消失是RNN及几乎其余全部深度学习方法研究的关键所在。app

LSTM

LSTM经过设计精巧的网络结构来缓解梯度消失问题,其数学上的形式化表示以下:ide


其中表明逐元素相乘。这个公式看起来彷佛十分复杂,为了更好的理解LSTM的机制, 许多人用图来描述LSTM的计算过程, 好比下面的几张图:
函数


彷佛看完了这些图以后,你对LSTM的理解仍是一头雾水? 这是由于这些图想把LSTM的全部细节一次性都展现出来,可是忽然暴露这么多的细节会使你眼花缭乱,从而无处下手。
学习

所以,本文提出的方法旨在简化门控机制中不重要的部分,从而更关注在LSTM的核心思想。整个过程是“三次简化一张图”,具体流程以下:优化

  • 第一次简化: 忽略门控单元i,f,o的来源。3个门控单元的计算方法彻底相同, 都是由输入通过线性映射获得的, 区别只是计算的参数不一样。这样作的目的是为了梯度反向传导时能对门控单元进行更新。这不是LSTM的核心思想, 在进行理解时,咱们能够假定各门控单元是给定的。

  • 第二次简化: 考虑一维状况。LSTM中对各维是独立进行门控的,因此为了理解方便,咱们只须要考虑一维状况。

  • 第三次简化: 各门控单元0/1输出。 门控单元输出是[0,1]实数区间的缘由是阶跃激活函数没法反向传播进行优化, 因此各门控单元使用sigmoid激活函数去近似阶跃函数。 所以, 为了理解方便, 咱们只须要考虑理想状况, 即各门控单元是{0,1}二值输出的,即门控单元扮演了电路中”开关”的角色, 用于控制信息传输的通断。

  • 一张图: 将三次简化的结果用”电路图”表述出来,左边是输入,右边是输出。另外须要特别注意的是LSTM中的c实质上起到了RNN中h的做用, 这点在其余文献资料中不常被提到。最终结果以下:

和RNN相同的是,网络接受两个输入,获得一个输出。不一样之处在于, LSTM中经过3个门控单元来对记忆单元c的信息进行交互。

根据这张图,咱们能够对LSTM中各单元做用进行分析:

  • 输入门it: it控制当前词xt的信息融入记忆单元ct。在理解一句话时,当前词xt可能对整句话的意思很重要,也可能并不重要。输入门的目的就是判断当前词xt对全局的重要性。当it开关打开的时候,网络将不考虑当前输入xt。

  • 遗忘门ft: ft控制上一时刻记忆单元ct-1的信息融入记忆单元ct。在理解一句话时,当前词xt可能继续延续上文的意思继续描述,也可能从当前词xt开始描述新的内容,与上文无关。和输入门it相反, ft不对当前词xt的重要性做判断, 而判断的是上一时刻的记忆单元ct-1对计算当前记忆单元ct的重要性。当ft开关打开的时候,网络将不考虑上一时刻的记忆单元ct-1。

  • 输出门ot: 输出门的目的是从记忆单元ct产生隐层单元ht。并非ct中的所有信息都和隐层单元ht有关,ct可能包含了不少对ht无用的信息,所以, ot的做用就是判断ct中哪些部分是对ht有用的,哪些部分是无用的。

  • 记忆单元ct:ct综合了当前词xt和前一时刻记忆单元ct-1的信息。这和ResNet中的残差逼近思想十分类似,经过从ct-1到ct的”短路链接”, 梯度得已有效地反向传播。 当ft处于闭合状态时, ct的梯度能够直接沿着最下面这条短路线传递到ct-1,不受参数W的影响,这是LSTM能有效地缓解梯度消失现象的关键所在。

GRU

GRU是另外一种十分主流的RNN衍生物。RNN和LSTM都是在设计网络结构用于缓解梯度消失问题, 只不过是网络结构有所不一样。GRU在数学上的形式化表示以下:


为了理解GRU的设计思想,咱们再一次运用“三次简化一张图”的方法来进行分析:

  • 第一次简化: 忽略门控单元z, r的来源。

  • 第二次简化: 考虑一维状况。

  • 第三次简化: 各门控单元0/1输出。这里和LSTM略有不一样的地方在于,GRU须要引入一个”单刀双掷开关”。

  • 一张图: 把三次简化的结果用”电路图”表述出来,左输入,右输出:



与LSTM相比,GRU将输入门it和遗忘门ft融合成单一的更新门zt,而且融合了记忆单元ct和隐层单元ht,因此结构上比LSTM更简单一些。

根据这张图,咱们能够对GRU的各单元做用进行分析:

  • 重置门rt:rt用于控制前一时刻隐层单元ht-1对当前词xt的影响。若是ht-1对xt不重要,即从当前词xt开始表述了新的意思,与上文无关, 那么rt开关能够打开, 使得ht-1对xt不产生影响。

  • 更新门zt:zt用于决定是否忽略当前词xt。相似于LSTM中的输入门it, zt能够判断当前词xt对总体意思的表达是否重要。当zt开关接通下面的支路时,咱们将忽略当前词xt,同时构成了从ht-1到ht的”短路链接”,这梯度得已有效地反向传播。和LSTM相同,这种短路机制有效地缓解了梯度消失现象, 这个机制于highwaynetworks十分类似。

小结

尽管RNN, LSTM,和GRU的网络结构差异很大,可是他们的基本计算单元是一致的,都是对xt和ht-1作一个线性映射加tanh激活函数,见三个图的红色框部分。他们的区别在于如何设计额外的门控机制控制梯度信息传播用以缓解梯度消失现象。LSTM用了3个门,GRU用了2个,那能不能再少呢? MGU (minimal gate unit)尝试对这个问题作出回答, 它只有一个门控单元。

最后留个小练习, 参考LSTM和GRU的例子,你能不能用“三次简化一张图”的方法来分析一下MGU呢?


参考文献

1. Bengio, Yoshua, PatriceSimard, and Paolo Frasconi。 "Learning long-term dependencies with gradient descent isdifficult。" IEEE transactions on neural networks 5。2 (1994):157-166。

2. Cho, Kyunghyun, et al。"Learning phrase representations using RNN encoder-decoder for statisticalmachine translation。" arXiv preprint arXiv:1406。1078 (2014)。

3. Chung, Junyoung, et al。"Empirical evaluation of gated recurrent neural networks on sequencemodeling。" arXiv preprint arXiv:1412。3555 (2014)。

4. Gers, Felix。 "Longshort-term memory in recurrent neural networks。" UnpublishedPhD dissertation, Ecole Polytechnique Fédérale de Lausanne, Lausanne, Switzerland(2001)。

5. Goodfellow, Ian, YoshuaBengio, and Aaron Courville。 Deep learning。 MIT press, 2016。

6. Graves, Alex。 Supervisedsequence labelling with recurrent neural networks。 Vol。 385。 Heidelberg:Springer, 2012。

7. Greff, Klaus, et al。 "LSTM:A search space odyssey。" IEEE transactions on neural networks and learning systems(2016)。

8. He, Kaiming, et al。 "Deepresidual learning for image recognition。" Proceedingsof the IEEE conference on computer vision and pattern recognition。 2016。

9. He, Kaiming, et al。"Identity mappings in deep residual networks。" EuropeanConference on Computer Vision。 Springer International Publishing, 2016。

10. Hochreiter, Sepp, and JürgenSchmidhuber。 "Long short-term memory。" Neuralcomputation 9。8 (1997): 1735-1780。

11. Jozefowicz, Rafal, WojciechZaremba, and Ilya Sutskever。 "An empirical exploration of recurrent network architectures。" Proceedingsof the 32nd International Conference on Machine Learning (ICML-15)。 2015。

12. Li, Fei-Fei, JustinJohnson, and Serena Yeung。 CS231n: Convolutional Neural Networks for Visual Recognition。 Stanford。 2017。

13. Lipton, Zachary C。, JohnBerkowitz, and Charles Elkan。 "A critical review of recurrent neural networks for sequencelearning。" arXiv preprint arXiv:1506。00019 (2015)。

14. Manning, Chris andRichard Socher。 CS224n: Natural Language Processing with Deep Learning。 Stanford。 2017。

15. Pascanu, Razvan, Tomas Mikolov, and YoshuaBengio。 "On the difficulty of training recurrent neural networks。"International Conference on Machine Learning。 2013。

16. Srivastava, RupeshKumar, Klaus Greff, and Jürgen Schmidhuber。 "Highwaynetworks。" arXiv preprint arXiv:1505。00387 (2015)。

17. Williams, D。 R。 G。 H。 R。, andGeoffrey Hinton。 "Learning representations by back-propagating errors。"Nature 323。6088 (1986): 533-538。

18. Zhou, Guo-Bing, et al。"Minimal gated unit for recurrent neural networks。"International Journal of Automation and Computing 13。3 (2016):226-234。



本文是投稿文章,做者:张皓

github地址:https://github.com/HaoMood/

注:AI科技大本营现已开通投稿通道,投稿请加编辑微信1092722531

相关文章
相关标签/搜索