机器学习-梯度消失和梯度爆炸

反向传播算法的影响

      上图为一个四层的全连接网络,假设每一层网络的输出为,其中代表第i层的激活函数,x代表第i层的输入,即第i-1层的输出,令分别表示第i层的权重和偏置量,那么可以得出,可以简化为

      BP算法基于梯度下降策略,以目标函数的负梯度方向对参数进行调整,若给定学习率,则更新公式为:

      △w

      △w

      如果要更新上图中第二层的权重,根据链式求导法则,更新梯度信息:

      △

      很容易看出

      其中,若此部分大于1,则层数增多,经过累乘,最终的梯度更新将以指数形式增加,即发生梯度爆炸;如果此部分小于1,则随着层数增多,求出的梯度更新信息将会以指数形式衰减,即发生梯度消失。

      在深层网络中,不同层学习的速度差异很大,通常输出层及靠近输出层的隐层的权重更新速度较快,学习较好。靠近输入层的隐层学习较慢,有时甚至训练了很久,前几层的权值和刚开始的随机初始值差不多。若发生梯度消失,则前面几层的权重在学习过程中几乎未发生变化,即学习效果很差。

      由此可见,梯度消失和爆炸的根本原因之一在于反向传播训练法则,属于天生不足。


激活函数的影响

      激活函数选择不合适,如使用sigmoid函数,梯度消失就会非常明显。中导数部分的值小于1,经过累乘会变得非常小。

      常见的sigmoid函数为对率函数,其函数图像及导数图像如下所示:

      由图中可以看到sigmoid函数的导数最大不超过0.25。

      同理,其他激活函数也一样。


解决方法

      1.预训练加微调

      基本思想是每次训练一个隐层,训练时将上一层隐结点的输出作为输入,而本层隐结点的输出作为下一层隐结点的输入,此过程就是逐层预训练。在训练完成后,再对整个网络进行微调,如利用BP算法对整个网络进行再训练。此思想可以理解为:先局部寻优,再整合起来全局寻优。

      2.选择合适的激活函数

      如选择Relu、Leaky Relu、ELU等激活函数。其思想非常简单,如果激活函数的导数为1,那么就不存在梯度消失和爆炸的问题了。

      3.选择更好的结构

      如选择LSTM和GRU。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值