梯度消失和梯度爆炸原因,表现,解决方案

参考:https://blog.csdn.net/qq_25737169/article/details/78847691
参考:https://www.cnblogs.com/DLlearning/p/8177273.html
一、梯度消失出现的原因:
在深层网络中,如果激活函数的导数小于1,根据链式求导法则,靠近输入层的参数的梯度因为乘了很多的小于1的数而越来越小,最终就会趋近于0,例如sigmoid函数,其导数f′(x)=f(x)(1−f(x))的值域为(0,1/4),极易发生这种情况。

梯度爆炸出现的原因:
同梯度消失的原因一样,求解损失函数对参数的偏导数时,在梯度的连续乘法中总是遇上很大的绝对值,部分参数的梯度因为乘了很多较大的数而变得非常大,导致模型无法收敛。

二、梯度消失的表现:
模型无法从训练数据中获得更新,损失几乎保持不变。

梯度爆炸的表现:
模型不稳定,更新过程中的损失出现显著变化或者变成 NaN。

三、梯度消失、爆炸的解决方案
梯度爆炸:
(1)重新设置网络结构,减少网络层数,调整学习率(消失增大,爆炸减小)。
(2)预训练加微调:如深度信念网络(Deep Belief Networks)和堆叠自编码器(Stacked Autoencoder)使用的方式一样,先逐层预训练,然后再使用BP算法对网络进行微调。就是相当于是先寻找局部最优,然后整合起来寻找全局最优。
(3)梯度剪切:设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内。(防止梯度爆炸)。
(4)正则化:L1正则化和L2正则化。(防止梯度爆炸)
(5)激活函数不要过多采用sigmoid,可以用relu系列等。(防止梯度消失)
(6)使用batch normalization。
(7)使用残差模块,DESNET模块或LSTM等结构。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值