【神经网络】ANN中梯度消失和梯度爆炸的原因

梯度消失(爆炸)是指随着人工神经网络(ANN)层数的增加,前面各层的梯度grad(E(w))会逐渐减小,最后逐渐趋向于0。这是神经网络中存在的一个现象,具体表现为:训练时,前面各层的学习会显著慢(快)于后面层的学习。

对于这个现象,网上很多文章给出了解释,但我觉得大多不够条理或准确。下面我试给出数学推导和说明,希望能条理、准确的解释这个现象。

一.建立神经网络

为推导起来方便,我们将神经网络简化为下图所示,复杂的神经网络原理相同。

神经网络结构

这是一个四层神经网络,输入是x,输出是y。各权重、偏置、输入、输出分别是

,最终输出y=

。激活函数是sigmoid,简称σ(欧美人有使用读音相近的希腊字母代替英语单词或短语的习惯)。前向传播算法的表达式是

,损失函数是E。

二.求梯度值

最前面一层grad(E(w1))的值为

。根据链式求导法则,可得

。其中,

。所以

三.分析梯度值

我们可以画出sigmoid函数导数的图形如下。从图上可以看出,导数的最大值为0.25,也就是导数值一般小于0.25。

sigmoid的导数

我们一般使用标准方法来初始化各权重w,即初始w的分布是一个均值为0,标准差为1的高斯分布。因此,初始w的绝对值通常都小于1。

四.得出梯度消失(爆炸)的结论

我们称

是一个因子,从第三部分的分析可知,因子绝对值通常小于0.25。从第二部分的推导可知,梯度值表达式包含多个因子的乘积。并且,神经网络层数越多,梯度的结果中因子越多。多个绝对值小于0.25的数相乘,乘积绝对值是非常小的。所以随着层数的增多,前面层的梯度值会逐渐变小,直至趋向于0,这就是梯度消失。

这里训练神经网络用是后向传播(BP)算法,其更新策略为:

,其中η是学习速率。所以,当其它几个变量确定,并且梯度

非常小时,权重的更新速度很慢,学习也会很慢。

梯度爆炸的原因相同,只不过是发生在初始化权重很大的时候。当权重很大(比如10)时,根据前面推导,梯度爆炸是显而易见的。

五.sigmoid激活函数与梯度消失(爆炸)

当用sigmoid做激活函数时,发生更多的是梯度消失。因为要发生梯度爆炸,

的绝对值必须大于1,由此计算出w的数值变化范围很小,仅仅在此窄范围内会出现梯度爆炸问题。

梯度消失和梯度爆炸的发生,根本原因是BP算法的先天缺陷。因为梯度值中包含多个因子的乘积,造成了不稳定性的累积。当然,目前已经有很多方法来解决这个问题。

了解更多AI和金融模型,欢迎关注我的公众号和专栏。

微信公众号:曲曲菜

知乎专栏:AI和金融模型

原创作品,未标明作者不得转载。

作者公众号二维码

你可能感兴趣的:(【神经网络】ANN中梯度消失和梯度爆炸的原因)