在神经网络训练过程中,通过梯度指导参数的更新,使得损失函数尽可能小,以达到对数据集的更好的拟合。
在多层网络中,梯度在反向传播过程中,通过链式法则在不同隐藏层中传递时,就可能会出现梯度消失和梯度爆炸的现象。

梯度消失

所谓梯度消失,是指在反向传播过程中,梯度在传递过程中逐渐变小,最终趋近于0,导致参数更新缓慢,甚至无法更新。

假设,我们使用 Sigmoid 函数作为激活函数,那么,在反向传播过程中,梯度在传递过程中会逐渐变小,最终趋近于0。
Sigmoid 函数及导数曲线如下:

我们可以看到,Sigmoid 函数的导数在 0 到 0.25 之间。

Sigmoid 函数的优势:

  1. 非线性,这允许神经网络学习更复杂的模式。
  2. 平滑性和单调性,具有平滑的 S 型曲线,有助于梯度算法的优化。
  3. 输出范围,输出范围在 0 到 1 之间,这使得神经网络的输出可以被解释为概率。

假设一个深度神经网络有 n 层,每一层的线性变换输出为:

对于 Wi 的偏导数,可以表示为:

alt text

我们注意到,对于第一项,
我们注意到,对于第二项,由于 Sigmoid 函数的导数在 0 到 1 之间,因此,当层数 n 增加时,梯度会趋近于0。

残差连接是解决梯度消失的一种方法。

梯度爆炸

为了解决梯度爆炸,可以采用梯度裁剪的方法。

梯度裁剪,是解决梯度爆炸的一种方法。即在反向传播过程中,对梯度进行裁剪,使其不超过一个阈值。

© 2026 YueGS