我是靠谱客的博主 跳跃外套,最近开发中收集的这篇文章主要介绍梯度消失,梯度爆炸产生的原因及解决办法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.梯度消失和爆炸产生的原因:

a)从网络深度来分析:

在反向传播过程中需要对激活han函数进行求导,如果导数大于1,那么随着网络层数的增加梯度更新将会朝着指数爆炸的方式增加这就是梯度爆炸。同样如果导数小于1,那么随着网络层数的增加梯度更新信息会朝着指数衰减的方式减少这就是梯度消失。因此,梯度消失、爆炸,其根本原因在于反向传播训练法则,属于先天不足。

b)从激活函数来分析:

前面a中提到的激活函数,我们就以Sigmoid函数为例

Sigmoid函数:

Sigmoid函数的导数:

从Sigmoid导数中我们可以看出来当x趋近于无穷大的时候,导数趋近于0。这样经过链式求导之后很容易造成梯度消失问题。

2.梯度消失和爆炸的解决办法

a)预训练+微调

b)梯度裁剪:主要针对梯度爆炸问题,设置一个阈值,当梯度查过这个阈值之后将它限制在这个范围之内。

c)权重正则化,L1和L2正则化。

正则化是通过对网络权重做正则限制过拟合,仔细看正则项在损失函数的形式: 
Loss=(y−WTx)2+α||W||2
其中,α是指正则项系数,因此,如果发生梯度爆炸,权值的范数就会变的非常大,通过正则化项,可以部分限制梯度爆炸的发生。在实际训练过程中梯度消失的问题发生的比较多。

d)使用Relu Lrelu Prelu Rrelu激活函数来防止梯度消失问题。

e)batchnorm

f)使用残差网络:https://blog.csdn.net/donkey_1993/article/details/81805287

最后

以上就是跳跃外套为你收集整理的梯度消失,梯度爆炸产生的原因及解决办法的全部内容,希望文章能够帮你解决梯度消失,梯度爆炸产生的原因及解决办法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部