首页 > 其他 > 详细

神经网络训练中的梯度消失与梯度爆炸

时间:2019-06-22 23:02:26      阅读:120      评论:0      收藏:0      [点我收藏+]

层数比较多的神经网络模型在训练时也是会出现一些问题的,其中就包括梯度消失问题(gradient vanishing problem)和梯度爆炸问题(gradient exploding problem)。梯度消失问题和梯度爆炸问题一般随着网络层数的增加会变得越来越明显。

例如,对于下图所示的含有3个隐藏层的神经网络,梯度消失问题发生时,接近于输出层的hidden layer 3等的权值更新相对正常,但前面的hidden layer 1的权值更新会变得很慢,导致前面的层权值几乎不变,仍接近于初始化的权值,这就导致hidden layer 1相当于只是一个映射层,对所有的输入做了一个同一映射,这是此深层网络的学习就等价于只有后几层的浅层网络的学习了。

技术分享图片

而这种问题为何会产生呢?以下图的反向传播为例(假设每一层只有一个神经元且对于每一层技术分享图片,其中技术分享图片为sigmoid函数)

 

技术分享图片

可以推导出

 

技术分享图片

而sigmoid的导数技术分享图片如下图

 

技术分享图片

可见,技术分享图片的最大值为技术分享图片,而我们初始化的网络权值技术分享图片通常都小于1,因此技术分享图片,因此对于上面的链式求导,层数越多,求导结果技术分享图片越小,因而导致梯度消失的情况出现。这样,梯度爆炸问题的出现原因就显而易见了,即技术分享图片,也就是技术分享图片比较大的情况。但对于使用sigmoid激活函数来说,这种情况比较少。因为技术分享图片的大小也与技术分享图片有关(技术分享图片),除非该层的输入值技术分享图片在一直一个比较小的范围内。

技术分享图片

其实梯度爆炸和梯度消失问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。对于更普遍的梯度消失问题,可以考虑用ReLU激活函数取代sigmoid激活函数。另外,LSTM的结构设计也可以改善RNN中的梯度消失问题。

神经网络训练中的梯度消失与梯度爆炸

原文:https://www.cnblogs.com/wqbin/p/11070673.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!