RNN梯度消失和爆炸的原因

经典的RNN结构如下图所示:


SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第1张


假设我们的时间序列只有三段, RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第2张 为给定值,神经元没有激活函数,则RNN最简单的前向传播过程如下:

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第3张RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第4张

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第5张RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第6张

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第7张RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第8张

假设在t=3时刻,损失函数为 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第9张 

则对于一次训练任务的损失函数为 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第10张 ,即每一时刻损失值的累加。

使用随机梯度下降法训练RNN其实就是对 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第11张  RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第12张  RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第13张 以及 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第14张RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第15张 求偏导,并不断调整它们以使L尽可能达到最小的过程。

现在假设我们我们的时间序列只有三段,t1,t2,t3。

我们只对t3时刻的 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第16张 求偏导(其他时刻类似):

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第17张

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第18张

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第19张

可以看出对于 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第20张 求偏导并没有长期依赖,但是对于 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第21张 求偏导,会随着时间序列产生长期依赖。因为 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第22张 随着时间序列向前传播,而 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第23张 又是 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第24张的函数。

根据上述求偏导的过程,我们可以得出任意时刻对 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第25张 求偏导的公式:

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第26张

任意时刻对RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第27张 求偏导的公式同上。

如果加上激活函数, RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第28张 

 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第29张 = RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第30张

激活函数tanh和它的导数图像如下。


RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第31张

由上图可以看出 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第32张 ,对于训练过程大部分情况下tanh的导数是小于1的,因为很少情况下会出现RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第33张 ,如果 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第34张 也是一个大于0小于1的值,则当t很大时 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第35张 ,就会趋近于0,和 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第36张 趋近与0是一个道理。同理当 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第37张 很大时 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第38张 就会趋近于无穷,这就是RNN中梯度消失和爆炸的原因。

至于怎么避免这种现象,让我在看看 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第39张 梯度消失和爆炸的根本原因就是 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第40张 这一坨,要消除这种情况就需要把这一坨在求偏导的过程中去掉,至于怎么去掉,一种办法就是使 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第41张 另一种办法就是使 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第42张 。其实这就是LSTM做的事情。

LSTM如何解决梯度消失问题

先上一张LSTM的经典图:


RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第43张

至于这张图的详细介绍请参考:Understanding LSTM Networks

下面假设你已经阅读过Understanding LSTM Networks这篇文章了,并且了解了LSTM的组成结构。

RNN梯度消失和爆炸的原因这篇文章中提到的RNN结构可以抽象成下面这幅图:


RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第44张

而LSTM可以抽象成这样:


RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第45张

三个×分别代表的就是forget gate,input gate,output gate,而我认为LSTM最关键的就是forget gate这个部件。这三个gate是如何控制流入流出的呢,其实就是通过下面 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第46张 三个函数来控制,因为 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第47张(代表sigmoid函数) 的值是介于0到1之间的,刚好用趋近于0时表示流入不能通过gate,趋近于1时表示流入可以通过gate。

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第48张

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第49张

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第50张

当前的状态 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第51张类似与传统RNN RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第52张。将LSTM的状态表达式展开后得:

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第53张

如果加上激活函数, RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第54张

RNN梯度消失和爆炸的原因这篇文章中传统RNN求偏导的过程包含 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第55张

对于LSTM同样也包含这样的一项,但是在LSTM中 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第56张

假设 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第57张 ,则 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第58张 的函数图像如下图所示:


RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第59张

可以看到该函数值基本上不是0就是1。

传统RNN的求偏导过程:

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第60张

如果在LSTM中上式可能就会变成:

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第61张

因为 RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题 随笔 第62张 ,这样就解决了传统RNN中梯度消失的问题。



来源:  https://zhuanlan.zhihu.com/p/28749444

 https://zhuanlan.zhihu.com/p/28687529




来自为知笔记(Wiz)

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄