[Machine Learning] 深度学习中消失的梯度

2017 年 12 月 6 日 全球人工智能 Poll的笔记


免费加入AI技术专家社群>>

- 日薪5K-10K招兼职AI讲师>>

- 招募1000名AI推广大使>>

好久没有更新blog了,最近抽时间看了Nielsen的《Neural Networks and Deep Learning》感觉小有收获,分享给大家。

  了解深度学习的同学可能知道,目前深度学习面临的一个问题就是在网络训练的过程中存在梯度消失问题(vanishing gradient problem),或者更广义地来讲就是不稳定梯度问题。那么到底什么是梯度消失呢?这个问题又是如何导致的呢?这就是本文要分享的内容。

回到顶部

1. 消失的梯度

  首先,我们将一个网络在初始化之后在训练初期的结果可视化如下:

  

  在上图中,神经元上的条可以理解为神经元的学习速率。这个网络是经过随机初始化的,但是从上图不难发现,第二层神经元上的条都要大于第一层对应神经元上的条,即第二层神经元的学习速率大于第一层神经元学习速率。那这可不可能是个巧合呢?其实不是的,在书中,Nielsen通过实验说明这种现象是普遍存在的。

  我们再来看下对于一个具有四个隐层的神经网络,各隐藏层的学习速率曲线如下:

  

  可以看出,第一层的学习速度和最后一层要差两个数量级,也就是比第四层慢了100倍。 实际上,这个问题是可以避免的,尽管替代方法并不是那么有效,同样会产生问题——在前面的层中的梯度会变得非常大!这也叫做激增的梯度问题(exploding gradient problem),这也没有比消失的梯度问题更好处理。更加一般地说,在深度神经网络中的梯度是不稳定的,在前面的层中或会消失,或会激增,这种不稳定性才是深度神经网络中基于梯度学习的根本原因

回到顶部

2. 什么导致了梯度消失?

  为了弄清楚为何会出现消失的梯度,来看看一个极简单的深度神经网络:每一层都只有一个单一的神经元。下面就是有三层隐藏层的神经网络:

  

  我们把梯度的整个表达式写出来:

  为了理解每个项的行为,先看下sigmoid函数导数的曲线:

  

  该导数在时达到最高。现在,如果我们使用标准方法来初始化网络中的权重,那么会使用一个均值为0标准差为1的高斯分布。因此所有的权重通常会满足。有了这些信息,我们发现会有,并且在进行所有这些项的乘积时,最终结果肯定会指数级下降:项越多,乘积的下降也就越快。

  下面我们从公式上比较一下第三层和第一层神经元的学习速率: 

3. 梯度激增问题

举个例子说明下:

4. 不稳定的梯度问题

  不稳定的梯度问题:根本的问题其实并非是消失的梯度问题或者激增的梯度问题,而是在前面的层上的梯度是来自后面的层上项的乘积。当存在过多的层次时,就出现了内在本质上的不稳定场景。唯一让所有层都接近相同的学习速度的方式是所有这些项的乘积都能得到一种平衡。如果没有某种机制或者更加本质的保证来达成平衡,那网络就很容易不稳定了。简而言之,真实的问题就是神经网络受限于不稳定梯度的问题。所以,如果我们使用标准的基于梯度的学习算法,在网络中的不同层会出现按照不同学习速度学习的情况。

回到顶部

5. 参考文献

  1. Michael Nielsen,《Neural Networks and Deep Learning》

原文:http://www.cnblogs.com/maybe2030/p/6336896.html

登录查看更多
0

相关内容

梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
【伯克利】再思考 Transformer中的Batch Normalization
专知会员服务
40+阅读 · 2020年3月21日
一文搞懂反向传播
机器学习与推荐算法
16+阅读 · 2020年3月12日
深度学习如何调参?
炼数成金订阅号
6+阅读 · 2018年10月18日
深度学习和普通机器学习之间有何区别?
36大数据
7+阅读 · 2017年12月4日
最近流行的激活函数
计算机视觉战队
6+阅读 · 2017年11月27日
干货 | 深度学习之CNN反向传播算法详解
机器学习算法与Python学习
17+阅读 · 2017年11月21日
入门 | 一文概览深度学习中的激活函数
深度学习世界
4+阅读 · 2017年11月3日
干货 | 深度学习之损失函数与激活函数的选择
机器学习算法与Python学习
15+阅读 · 2017年9月18日
Optimization for deep learning: theory and algorithms
Arxiv
102+阅读 · 2019年12月19日
Arxiv
22+阅读 · 2019年11月24日
The Matrix Calculus You Need For Deep Learning
Arxiv
12+阅读 · 2018年7月2日
Arxiv
11+阅读 · 2018年4月25日
VIP会员
相关资讯
一文搞懂反向传播
机器学习与推荐算法
16+阅读 · 2020年3月12日
深度学习如何调参?
炼数成金订阅号
6+阅读 · 2018年10月18日
深度学习和普通机器学习之间有何区别?
36大数据
7+阅读 · 2017年12月4日
最近流行的激活函数
计算机视觉战队
6+阅读 · 2017年11月27日
干货 | 深度学习之CNN反向传播算法详解
机器学习算法与Python学习
17+阅读 · 2017年11月21日
入门 | 一文概览深度学习中的激活函数
深度学习世界
4+阅读 · 2017年11月3日
干货 | 深度学习之损失函数与激活函数的选择
机器学习算法与Python学习
15+阅读 · 2017年9月18日
相关论文
Optimization for deep learning: theory and algorithms
Arxiv
102+阅读 · 2019年12月19日
Arxiv
22+阅读 · 2019年11月24日
The Matrix Calculus You Need For Deep Learning
Arxiv
12+阅读 · 2018年7月2日
Arxiv
11+阅读 · 2018年4月25日
Top
微信扫码咨询专知VIP会员