梯度消失和梯度爆炸

本文探讨了深度学习中梯度消失和梯度爆炸问题,主要由sigmoid和tanh激活函数引起。解决方法包括使用非饱和激活函数如ReLU系列,应用权重正则和梯度剪切防止爆炸,采用预训练和残差结构缓解消失,以及利用LSTM和优化器改进。此外,合适的参数初始化,如He初始化,也是关键。
摘要由CSDN通过智能技术生成

梯度消失和梯度爆炸,简单来说,就是因为激活函数sigmoid导致的,输入值过大或过小导致sigmoid函数趋于0和1,对应的求导趋近于0,而且sigmoid的导数在(0,1/4)之间,这就导致如果初始化W为0-1之间的比较小的值,通过过多的层数之后,梯度下降的时候,慢慢就会出现梯度消失。如果W初始化为较大的值,通过多层之后,梯度下降会导致梯度越来越大,产生爆炸。

RNN梯度消失和梯度爆炸和这个也比较类似,不同的是RNN是时序模型,输入文本过长会有这个原因。详见这里: RNN梯度消失和爆炸的原因

当然这个问题不只是用sigmoid的时候会有,tanh激活函数也有这个问题,具体可以参考激活函数篇:常见激活函数总结

下面说下解决办法:

  1. 预训练加微调
  2. 梯度剪切、权重正则(针对梯度爆炸)
  3. 使用不同的激活函数(非饱和的激活函数,如ReLU、Leaky-ReLU、P-ReLU、R-ReLU、Maxout等)
  4.  使用batchnorm
  5. 使用残差结构
  6.  使用LSTM网络
  7. 梯度截断(Gradient Clipping)
  8. 更快的优化器
  9. 好的参数初始化方式,如He初始化

 

参考链接:


https://blog.csdn.net/junjun150013652/article/details/81274958
https://www.cnblogs.com/XDU-Lakers/p/10553239.html
https://blog.csdn.net/qq_25737169/article/details/78847691
https://zhuanlan.zhihu.com/p/33006526
https://zhuanlan.zhihu.com/p/28687529
https://www.pianshen.com/article/244666978/
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微知girl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值