《神经网络和深度学习》系列文章四十:什么导致了消失的梯度问题?深度神经网络中的梯度不稳定性
出处: Michael Nielsen的《Neural Network and Deep Learning》,点击末尾“阅读原文”即可查看英文原文。
声明:我们将在每周四连载该书的中文翻译。
本节译者:朱小虎 、张广宇。转载已获得译者授权,禁止二次转载。
使用神经网络识别手写数字
反向传播算法是如何工作的
改进神经网络的学习方法
神经网络可以计算任何函数的可视化证明
为什么深度神经网络的训练是困难的
梯度消失问题
什么导致了梯度消失问题?神经网络中的梯度不稳定性
在更加复杂网络中的不稳定性梯度
其他深度学习的障碍
深度学习
为了弄清楚为何会出现消失的梯度,来看看一个极简单的深度神经网络:每一层都只有一个单一的神经元。下图就是有三层隐藏层的神经网络:
这里,
现在我们要来研究一下关联于第一个隐藏神经元梯度
开始就简单地给出
表达式结构如下:对每个神经元有一个
你可以直接认可这个表达式,直接跳到该表达式如何关联于小时的梯度问题的。这对理解没有影响,因为实际上上面的表达式只是前面对于反向传播的讨论的特例。但是也包含了一个表达式正确的解释,所以去看看那个解释也是很有趣的(也可能更有启发性吧)。
假设我们对偏置
(114)
这表示我们可以通过仔细追踪每一步的影响来搞清楚
现在我们看看
(115)
(117)
将
(119)
现在,又能看到类似的结果了:我们得到了在表达式
以此类推下去,跟踪传播改变的路径就可以完成。在每个神经元,我们都会选择一个
(120)
除以
(121)
为何出现梯度消失: 现在把梯度的整个表达式写下来:
(122)
除了最后一项,该表达式是一系列形如
该导数在
更明白一点,我们比较一下
两个表示式有很多相同的项。但是
当然,这里并非严格的关于消失的梯度微调的证明而是一个不太正式的论断。还有一些可能的产生原因了。特别地,我们想要知道权重
梯度激增问题: 现在看看梯度激增如何出现的把。这里的例子可能不是那么自然:固定网络中的参数,来确保产生激增的梯度。但是即使是不自然,也是包含了确定会产生爆炸梯度(而非假设的可能)的特质的。
共两个步骤:首先,我们将网络的权重设置得很大,比如
不稳定的梯度问题: 根本的问题其实并非是梯度消失问题或者激增的梯度问题,而是在前面的层上的梯度是来自后面的层上项的乘积。当存在过多的层次时,就出现了内在本质上的不稳定场景。唯一让所有层都接近相同的学习速度的方式是所有这些项的乘积都能得到一种平衡。如果没有某种机制或者更加本质的保证来达成平衡,那网络就很容易不稳定了。简而言之,真实的问题就是神经网络受限于不稳定梯度的问题。所以,如果我们使用标准的基于梯度的学习算法,在网络中的不同层会出现按照不同学习速度学习的情况。
练习
在我们对于梯度消失问题讨论中,使用了
这个结论。假设 我们使用一个不同的激活函数,其导数值是非常大的。这会帮助我们避免不稳定梯度的问 题么?
梯度消失问题普遍存在: 我们已经看到了在神经网络的前面的层中梯度可能会 消失也可能会爆炸。实际上,在使用 sigmoid 神经元时,梯度通常会消失。为什么?再看看 表达式
问题
考虑乘积
。假设有 。(1)这种情况只有在 的时候才会出现。(2)假设 ,考虑那些满足 的输入激活 集合。证明:满足上述条件的该集合能够充满一个不超过 宽度的区间。(3)数值上说明上述表达式在 时候去的最高值约 。所以即使每个条件都满足,我们仍然有一个狭窄的输入激活区间,这样来避免梯度消失问题。 幺神经元:考虑一个单一输入的神经元,
,对应的权重 ,偏差 ,输出上的权重 。证明,通过合理选择权重和偏差,我们可以确保 其中 。这样的神经元可用来作为幺元用,输出和输入相同(成比例)。提示:可以重写 ,可以假设 很小,和在 使用泰勒级数展开。
“哈工大SCIR”公众号
编辑部:郭江,李家琦,徐俊,李忠阳,俞霖霖
本期编辑:俞霖霖
长按下图并点击 “识别图中二维码”,即可关注哈尔滨工业大学社会计算与信息检索研究中心微信公共号:”哈工大SCIR” 。点击左下角“阅读原文”,即可查看原文。