目录

1 梯度饱和

2 梯度消失

1. 梯度是什么?

2. 什么是梯度消失?

3. 为什么会发生?

3 梯度饱和和梯度消失的区别

3.1. 梯度饱和:单层/局部问题

3.2. 梯度消失:全局/传播问题

4 梯度爆炸


abstract:

梯度饱和:激活函数进入饱和区,梯度接近于零。

梯度消失:多个小梯度相乘 ,前面几层梯度接近于零

梯度爆炸:多个大梯度相乘,前面梯度爆炸。

1 梯度饱和

在神经网络中,梯度是通过反向传播算法(Backpropagation)计算得到的,用于更新网络权重。梯度饱和指的是:在网络的某一层或多个层中,激活函数进入饱和区,激活函数的导数(梯度)趋近于零,导致反向传播时梯度几乎为零,从而使权重无法有效更新

为什么会发生梯度饱和?

这通常与激活函数的特性有关。以经典的 Sigmoid 函数为例:

  • Sigmoid 函数:σ(x)=11+e−xσ(x)=1+e−x1​
  • 其导数为:σ′(x)=σ(x)(1−σ(x))σ′(x)=σ(x)(1−σ(x))

Sigmoid 函数的输出范围是 (0, 1),当输入 xx 的绝对值很大时(例如 x>5x>5 或 x<−5x<−5),函数输出趋近于 1 或 0,此时导数非常小(接近 0)。

当反向传播发生时,梯度是通过链式法则逐层相乘传递的。如果某一层的激活函数输出处于“饱和区”(即导数极小),那么这一层的梯度就会变得非常小。这个小梯度在向后传递时,会与其他层的小梯度相乘,导致“梯度消失”(Vanishing Gradient)问题,前面层的权重几乎得不到更新。

2 梯度消失

1. 梯度是什么?

在神经网络训练中,我们使用反向传播算法(Backpropagation) 来更新网络参数。这个过程依赖于计算损失函数对每个参数的梯度(即偏导数),然后用梯度下降法进行优化。

2. 什么是梯度消失?

梯度消失 是指:在非常深的神经网络中,靠近输入层的那些层的梯度变得非常小,接近于0,导致这些层的权重几乎无法更新。

3. 为什么会发生?

这主要和链式法则有关。

反向传播时,每一层的梯度是通过后面所有层的梯度连乘得到的:

∂L∂w1=∂L∂an⋅∂an∂an−1⋅…⋅∂a2∂a1⋅∂a1∂w1∂w1​∂L​=∂an​∂L​⋅∂an−1​∂an​​⋅…⋅∂a1​∂a2​​⋅∂w1​∂a1​​

如果每一项都小于1(比如激活函数如 Sigmoid 的导数最大为0.25),那么很多个小于1的数相乘,结果会指数级变小 → 最终传到前面的梯度趋近于0。

👉 结果就是:前面的层几乎不更新,网络训练停滞

💡 类比:就像你往深井里喊话,声音传到井口时已经听不见了。

3 梯度饱和和梯度消失的区别

3.1. 梯度饱和:单层/局部问题

  • 指的是某个激活函数在其输入过大或过小时,其导数(即局部梯度)变得非常小
  • 例如:Sigmoid 函数在输入 x>5x>5 或 x<−5x<−5 时,输出接近 1 或 0,导数 σ′(x)≈0σ′(x)≈0。
  • 这是一个局部现象,发生在某一层、某个神经元上。
  • 🔍 重点:它描述的是激活函数本身的数学性质

✅ 所以你说“某一层的导数很小”——非常到位。


3.2. 梯度消失:全局/传播问题

  • 指的是在反向传播中,从输出层往输入层传递的总梯度,由于链式法则中多个小数连续相乘,导致梯度指数级衰减
  • 公式上看:
    假设每层的局部梯度平均为 0.10.1,那么经过 5 层后,梯度就变成:
    0.15=0.000010.15=0.00001 → 几乎为 0。
  • 这是一个全局现象,影响深层网络的训练。
  • 🔍 重点:它是多个局部梯度连乘的结果

4 梯度爆炸

梯度爆炸跟梯度相乘的原理是类似的,就是每层的梯度如果都很大,那么逐渐乘积,最终前面几层的梯度就会越来越大。

多个大梯度相乘,前面梯度爆炸。

    Logo

    有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

    更多推荐