首页 > 编程知识 正文

lstm为什么可以缓解梯度消失,梯度弥散和梯度消失

时间:2023-05-04 16:07:37 阅读:9371 作者:1466

1 、什么是梯度消失和梯度爆炸反向传播过程中需要求激活函数,当导数大于1时,梯度更新随网络层数的增加呈指数爆炸式增加。 这就是梯度爆炸。 类似地,如果导数小于1,则梯度更新信息随着网络层数的增加而减小,以指数衰减。 这就是梯度消失。 因此,坡度消失或爆炸的根本原因在于反向传播训练规律,先天不足。

2、坡度消失、爆炸原因2.1,http://www.Sina.com /例,简单深层网络如下:

图中为4层全连接网络,各层网络被激活的输出为fi(x )。 其中fi ) x )表示第I层,第i-1层的输出表示第I层的输入。 也就是说,如果第fi-1输出、f是激活函数,则fi1=f ) fi*wi1bi1),简单答案是

反向传播算法(BP )基于梯度下降策略在目标负梯度方向上调整参数,并且以给定学习率来获得参数更新。 更新第二层隐藏层权重信息时,根据从BP(反向传播原理)解释梯度消失和梯度爆炸,更新梯度信息如下:

这意味着输入第二个隐藏图层。

就是推导激活函数。 如果该部分大于1,则在层数增多时,最终求出的梯度更新呈指数级增加,发生链式求导法则。 如果该部分小于1,则随着层数增加,求出的梯度更新信息呈指数衰减,发生梯度爆炸

2.2、其实也注意到从激活函数的角度分析梯度消失。 如上所述,由于在计算权重更新信息时需要计算前一阶段偏导数信息,因此如果激活函数的选择不适当,例如使用sigmoid,梯度消失变得明显。 从下图来看,如果左图是sigmoid的损耗函数图,右图是该导数的图像,将sigmoid用作损耗函数,则其梯度不能超过0.25

同样,可以看出,tanh作为激活函数,导数图如下,tanh略优于sigmoid,但导数仍然小于1。 tanh的数学表达如下。

梯度消失3.1,预训练和微调为解决坡度问题,采用无监督分层训练的方法,其基本思想是每次训练一层隐藏节点,训练时输入一层上隐藏节点的输出,该过程按分层“ 这一观点相当于首先寻找局部最优,然后综合起来寻找全局最优,这种方法有一定的好处,但目前很少得到应用。

3.2、坡度剪切及正则化解决坡度爆炸3 梯度消失、爆炸的解决方案该方案主要针对梯度剪切提出,设定坡度剪切阈值,然后更新坡度时,如果坡度超过该阈值这可以防止梯度爆炸。

另一个梯度爆炸采用解决梯度爆炸的手段

规范化是指通过将网络权重规范化来仔细观察正规项损失函数的形式。

其中,由于是正则项系数,发生梯度爆炸时权重范数非常大,正则化项可以产生权重正则化限制部分。 但是,在深度模型中,坡度消失更为常见。

3.3、relu、leakrelu、elu等激活函数3.3.1、relu激活函数Relu:思想也很简单,只要激活函数导数为1,就没有梯度消失爆炸的问题,各层网络也能得到相同的更新速度。 Relu目前使用最多的激活函数

3.3.2、Relu激活函数的优缺点Relu的优点:

解决了坡度消失、爆炸的问题

计算方便、计算速度快加速了网络培训relu的缺点:

由于负数的部分始终为0,某些神经元不激活(可以通过设置较小的学习率来部分解决),因此输出不以0为中心的梯度爆炸

leakrelu为3.3.3、leakrelu,其数学表达如下:

leakrelu=max(kx,x ) ) ) ) ) ) )。

这里,k是leak系数,一般通过0.01或0.02或者学习得到

3.3.4、elu elu激活函数也是为了解决Elu零区间的影响,其数学表达如下:

计算elu需要比上述两个激活函数更长的时间

3.4、batch normaliza

tion

Batchnorm是深度学习发展以来提出的最重要的成果之一了,目前已经被广泛的应用到了各大网络中,具有加速网络收敛速度,提升训练稳定性的效果,Batchnorm本质上是解决反向传播过程中的梯度问题。batchnorm全名是batch normalization,简称BN,即批规范化,通过规范化操作将输出信号x规范化到均值为0,方差为1保证网络的稳定性。

batchnorm解决梯度的问题上,即反向传播中,经过每一层的梯度会乘以该层的权重,举个简单例子:

正向传播中f2=f1(wT∗x+b),那么反向传播中

反向传播式子中有x的存在,所以x的大小影响了梯度的消失和爆炸,batchnorm就是通过对每一层的输出规范为均值和方差一致的方法,消除了x带来的放大缩小的影响,进而解决梯度消失和爆炸的问题。

3.5、 残差结构 3.5.1、深度网络的退化问题

从经验来看,网络的深度对模型的性能至关重要,当增加网络层数后,网络可以进行更加复杂的特征模式的提取,所以当模型更深时理论上可以取得更好的结果,从下图中也可以看出网络越深而效果越好的一个实践证据。但是更深的网络其性能一定会更好吗?实验发现深度网络出现了退化问题(Degradation problem):网络深度增加时,网络准确度出现饱和,甚至出现下降。这个现象可以在图3中直观看出来:56层的网络比20层网络效果还要差。这不会是过拟合问题,因为56层网络的训练误差同样高。我们知道深层网络存在着梯度消失或者爆炸的问题,这使得深度学习模型很难训练。但是现在已经存在一些技术手段如BatchNorm来缓解这个问题。因此,出现深度网络的退化问题是非常令人诧异的。

3.5.2、残差学习

对于一个堆积层结构(几层堆积而成)当输入为 X 时其学习到的特征记为 H(x) ,现在我们希望其可以学习到残差 F(X)=H(X)-X ,这样其实原始的学习特征是 F(X)+X 。之所以这样是因为残差学习相比原始特征直接学习更容易。当残差为0时,此时堆积层仅仅做了恒等映射,至少网络性能不会下降,实际上残差不会为0,这也会使得堆积层在输入特征基础上学习到新的特征,从而拥有更好的性能。残差学习的结构如下图所示。这有点类似与电路中的“短路”,所以是一种短路连接(shortcut connection)。

为什么残差学习相对更容易,从直观上看残差学习需要学习的内容少,因为残差一般会比较小,学习难度小点。不过我们可以从数学的角度来分析这个问题,首先残差单元可以表示为:

其中 xl 和 xl+1 分别表示的是第 l 个残差单元的输入和输出,注意每个残差单元一般包含多层结构。  F是残差函数,表示学习到的残差,而 h(x)=x 表示恒等映射, f 是ReLU激活函数。基于上式,我们求得从浅层 l 到深层 L 的学习特征为:

利用链式规则,可以求得反向过程的梯度:

式子的第一个因子  表示的损失函数到达 L 的梯度,小括号中的1表明短路机制可以无损地传播梯度,而另外一项残差梯度则需要经过带有weights的层,梯度不是直接传递过来的。残差梯度不会那么巧全为-1,而且就算其比较小,有1的存在也不会导致梯度消失。所以残差学习会更容易。要注意上面的推导并不是严格的证明。

3.6、LSTM

循环神经网络RNN;

在上面的示例图中,神经网络的模块A,正在读取某个输入xi ,并输出一个值 hi。循环可以使得信息可以从当前步传递到下一步。RNN 的关键点之一就是他们可以用来连接先前的信息到当前的任务上,例如使用过去的视频段来推测对当前段的理解。在间隔不断增大时,RNN 会丧失学习到连接如此远的信息的能力。所有 RNN 都具有一种重复神经网络模块的链式的形式。在标准的 RNN 中,这个重复的模块只有一个非常简单的结构,例如一个 tanh 层。


LSTM 通过刻意的设计来避免长期依赖问题。LSTM 不同于RNN单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。

图中使用的各种元素的图标

LSTM 的关键就是细胞状态,水平线在图上方贯穿运行。

细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。

LSTM 有通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择式通过的方法。他们包含一个 sigmoid 神经网络层和一个按位的乘法操作。

Sigmoid 层输出 0 到  1之间的数值,描述每个部分有多少量可以通过。 0代表“不许任何量通过”,1 就指“允许任意量通过”!

使用一个合适激活函数,它的梯度在一个合理的范围。LSTM使用gate function,有选择的让一部分信息通过。gate是由一个sigmoid单元和一个逐点乘积操作组成,sigmoid单元输出1或0,用来判断通过还是阻止,然后训练这些gate的组合。所以,当gate是打开的(梯度接近于1),梯度就不会vanish。并且sigmoid不超过1,那么梯度也不会explode。

 

参考网址:

https://blog.csdn.net/qq_25737169/article/details/78847691 (梯度爆炸及消失详解)

https://zhuanlan.zhihu.com/p/51490163  (梯度爆炸与梯度消失的介绍,考虑角度-反向传播 )

https://blog.csdn.net/qq_25737169/article/details/79048516 (batchnorm详解)

https://cloud.tencent.com/developer/article/1374163 (梯度消失和爆炸详解)

https://zhuanlan.zhihu.com/p/31852747 (残差结构详解)

https://www.zhihu.com/question/44895610/answer/154565425  (LSTM梯度弥散问题解释)

https://www.jianshu.com/p/9dc9f41f0b29 (LSTM原理详解)

https://zhuanlan.zhihu.com/p/32085405  (从几个门角度来详解LSTM的输入输出)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。