关于梯度消失与梯度爆炸

it2026-08-08  1

1.梯度消失

梯度消失我们很容易理解,原因基本是激活函数的导数小于1,当网络比较深时,根据链式法则梯度回传,在传到靠近输入的网络部分时,此时的梯度变得十分小,导致这部分的网络权重更新缓慢。所以出现了Relu激活函数。

Relu函数及其导数如下所示: 当输入为正时,它的导数为1,此时梯度回传不会受链数的影响,从而解决了梯度消失问题。但它有个缺点,就是当输入为负时,他的导数为0,因此梯度为0,权重自然也就不会更新,这种现象叫做神经元死亡,为了解决这个问题,出现了LeakyRelu、PRelu、RRelu以及最新的DRelu等。 当然,还有其他办法来解决梯度消失的问题,比如BatchNormal以及残差连接等,具体参考这篇文章。

2.梯度爆炸

梯度爆炸又是什么原因引起的呢?激活函数的导数一般不会大于1,所以不存在因为激活函数引起梯度爆炸,那是什么原因? 其实,梯度不只与激活函数的导数有关系,还与模型权重有关系。具体可以看看这篇文章,当模型权重的初始值过大时,就可能引起梯度爆炸。

最新回复(0)