10.神经网络与深度学习(九)—梯度消失问题

原创 2018年04月16日 17:27:48

1)引言

终于开始进入深度学习了,其实深度学习就是多层神经网络训练数据。

2)什么是梯度消失问题?

梯度消失问题实际上是指在隐藏层BP的时候梯度是逐渐变小的。也就是说前面隐藏层的学习速度比后面的隐藏层学习速度小。

3)什么导致了梯度消失

我们先看一个很简单的深度神经网络:每一层只有一个单一的神经元。下图就是三层隐藏层的神经网络:

我们这里先给出代价函数关于第一个隐藏神经元的梯度∂C/∂b1的公式,如下:

我们现在来看一下这个式子是怎么推出来的。

首先假设b1进行了微小的调整Δb1,这样根据激励公式(Δa1=σ(Δz1))我们的第一个隐藏神经元输出也就变化了Δa1。根据带权公式(Δz2=w*Δa1+b),这会导致第二个隐藏神经元的输入变化了Δz2。而第二个隐藏神经元的输出,根据激励公式(Δa2=σ(Δz2))也就随之变化了Δa2。以此类推,代价函数有C的变化:

现在分析上面的每一个过程,先看第一步Δa1=σ(Δz1):

这里我们用σ(z1)对b1求偏导数,得到公式(116)

接下来,我们看第二步Δz2=w*Δa1+b:

这里我们用∂z2∂a1求偏导数。下面,我们将公式(116)中的结果带入到公式(118)结果中,得到如下公式(119):

我们惊喜的发现,这不就是文章开始给的公式前两项吗?

同理,我们将这个5层的神经网络推导完毕,就得到:

我们再将公式右边的Δb1移到左边就得到总的公式。

公式(121)就是代价函数对偏置求偏导的结构表达式。可以看到这个公式中,除了最后一项,前面的都是权重和sigmoid导数求积。我们再回忆一下sigmoid导函数图像:

我们可以看到sigmoid导函数最大值是1/4。再回头看一下公式(121),这就是说该公式每加一层网络,其速率就下降到1/4。这也就解释了为什么会出现梯度下降问题。

4)梯度激增问题

看到上面的问题,你可能会要想办法解决了。我们现在对公式琢磨琢磨,如果我们让导函数一直是最大(1/4),然后让w设置为很大,那么我们不就可以让训练速率保持到一个比较大的水平了吗?

说干就干:

  • 我们将网络权重设置为w1=w2=w3=w4=100。

  • 让bj=-100*aj-1,这样zj=100*aj-1-100*aj-1=0,则sigmoid导函数一直保持为1/4

可是最后我们计算结果发现,所有的项都等于100*1/4=25,出现了梯度激增问题。

PS:

看到教程这里,编者自己有一个疑问,那么如果我们将w1=w2=w3=w4=4呢?那么最后的结果不就是1了吗?我自己的理解是:权重在训练过程中一直是变化的,而且实际上如果训练速度是1的话这个速度是有点感人的。

继续:

为什么会出现这种情况呢?因为中的变量z=w*a+b同样是与w关联的,如果我们加大w的话,那么不可避免的加大了z,那么根据导函数图像,我们的值会指数速度变小。这样就又会出现梯度下降问题。

5)其他的问题

在2010年Glorot和Bengio发表论文表明sigmoid发现证据表明sigmoid 函数的选择会导致训练⽹络的问题。特别地,他们发现sigmoid 函数会导致最终层上的激活函数在训练中会聚集在0,这也导致了学习的缓慢。这只是梯度的不稳定问题,还有其他问题需要我们解决。

希望有志同道合的小伙伴关注我的公众平台,欢迎您的批评指正,共同交流进步。


什么导致了消失的梯度问题?深度神经网络中的梯度不稳定性

转载自哈工大SCIR(公众号) 为了弄清楚为何会出现消失的梯度,来看看一个极简单的深度神经网络:每一层都只有一个单一的神经元。下图就是有三层隐藏层的神经网络:...
  • lujiandong1
  • lujiandong1
  • 2016-09-30 15:20:23
  • 2336

神经网络梯度消失的解释

转载自哈工大SCIR(公众号) 为了弄清楚为何会出现消失的梯度,来看看一个极简单的深度神经网络:每一层都只有一个单一的神经元。下图就是有三层隐藏层的神经网络:...
  • baidu_29782299
  • baidu_29782299
  • 2016-10-06 11:08:30
  • 13613

深度学习--采用ReLU解决消失的梯度问题(vanishing gradient problem)

消失的梯度问题(vanishing gradient problem):更深层的神经网络可以学到不同抽象程度的概念,但随着深度的增加不同层的学习速率会显著不同,接近输出层的学习速率比较合适时前面的...
  • akadiao
  • akadiao
  • 2017-10-16 10:57:01
  • 902

深度学习解决局部极值和梯度消失问题方法简析

多层感知机解决了之前无法模拟异或逻辑的缺陷,同时更多的层数也让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。多层感知机...
  • zyazky
  • zyazky
  • 2016-08-10 18:12:17
  • 7981

深度神经网络学习过程中的梯度消失问题

之前的章节,我们利用一个仅包含一层隐藏层的简单神经网络就在MNIST识别问题上获得了98%左右的准确率。我们于是本能会想到用更多的隐藏层,构建更复杂的神经网络将会为我们带来更好的结果。 就如同在...
  • qq3401247010
  • qq3401247010
  • 2017-09-14 13:20:17
  • 500

神经网络的梯度消失问题

随着网络深度的增加,BP算法引起的梯度消失问题愈发严重
  • phoeny0201
  • phoeny0201
  • 2016-09-08 10:09:54
  • 1591

深度神经网络的梯度不稳定问题--梯度消失与梯度爆炸

见个人博客: http://ziyubiti.github.io/2016/11/06/gradvanish/
  • ziyubiti
  • ziyubiti
  • 2016-11-03 18:28:18
  • 2634

深度学习基础理论探索(一):激活函数、梯度消失

浅谈神经网络基础
  • qq_25552539
  • qq_25552539
  • 2017-10-11 20:53:12
  • 532

训练深度神经网络失败的罪魁祸首不是梯度消失,而是退化

训练深度神经网络失败的罪魁祸首不是梯度消失,而是退化 https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650735824&idx=1&s...
  • philosophyatmath
  • philosophyatmath
  • 2018-01-08 10:11:34
  • 239

[DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化

觉得有用的话,欢迎一起讨论相互学习~Follow Me1.10 梯度消失和梯度爆炸当训练神经网络,尤其是深度神经网络时,经常会出现的问题是梯度消失或者梯度爆炸,也就是说当你训练深度网络时,导数或坡度有...
  • u013555719
  • u013555719
  • 2017-10-23 15:48:10
  • 212
收藏助手
不良信息举报
您举报文章:10.神经网络与深度学习(九)—梯度消失问题
举报原因:
原因补充:

(最多只允许输入30个字)