Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Vanishing Gradient

反向传播期间,梯度逐层变小,导致梯度消失问题,早期层因此停止学习。介绍其成因和解决方法。

梯度消失问题是指反向传播将损失的梯度传向深层神经网络的前几层时,梯度会随深度呈几何级数缩小,导致最早的层收到的更新过小,无法学习任何内容。某一层的梯度是其上方每一层局部导数的乘积,因此,如果网络的每一层都将梯度缩小到原来的 1 倍以下,输出层与输入层之间的梯度就会相差许多个数量级。Sepp Hochreiter 在 1991 年的毕业论文中分析了这一现象;在更好的激活函数、初始化方法和架构出现之前,它一直让深度前馈网络和循环神经网络(RNN)难以训练。

梯度为何会消失#

反向传播应用链式法则,因此传到某一层的梯度,是上游梯度依次乘以后续各层的权重矩阵和激活函数导数的结果。Sigmoid导数的最大值为 0.25,在输入为 0 时达到该值;当单元在较大的正或负输入下饱和时,导数会趋近于 0。tanh导数的最大值为 1,饱和时也会趋近于 0。因此,在计算权重的影响之前,经过 20 个 sigmoid 层后,梯度最多会乘以 0.25²⁰,即小于 10⁻¹²。Glorot 和 Bengio发现,初始化是造成训练困难的重要原因,并提出根据每层的输入和输出数量来缩放权重方差,使各层的激活值和梯度方差大致保持稳定。

通过比较一个 20 层 sigmoid 网络顶部和底部的权重梯度大小,可以轻松测量这种影响;下面分别给出有无残差捷径的情况:

import torch

torch.manual_seed(0)
x = torch.randn(64, 32)

# The same 20-layer sigmoid network, without and with residual shortcuts
for residual in (False, True):
    layers = [torch.nn.Linear(32, 32) for _ in range(20)]
    h = x
    for layer in layers:
        out = torch.sigmoid(layer(h))
        h = h + out if residual else out
    h.sum().backward()

    # Compare the weight-gradient size at the last layer and the first layer
    last, first = layers[-1].weight.grad.norm(), layers[0].weight.grad.norm()
    print(f"residual={residual}: layer 20 gradient {last:.1e}, layer 1 gradient {first:.1e}")

没有捷径连接时,最后一层的梯度范数为 2.5e+02,而第一层为 4.2e-15,小约 17 个数量级,因此第一层的权重实际上从不发生变化。加入残差捷径后,第一层的梯度为 5.6e+01,约为最后一层 2.1e+03 的 1/38。

梯度消失与梯度爆炸#

这两个问题都源于同一种反复相乘的机制。梯度消失会悄无声息地阻碍学习:损失仍会下降,但这是由最后几层推动的,而早期层则停留在接近随机初始化的状态。梯度爆炸则会使梯度按几何级数增长,表现为损失激增和 NaN 值。梯度裁剪会在每次更新前限制梯度爆炸时的范数,但无法影响已经消失的梯度。ReLU 单元输入持续为负、导致梯度恰好为 0 且单元停止学习的情况,则是一个相关问题,称为 ReLU 单元死亡。

如何防止梯度消失#

最常用的修复方法是残差连接,也就是残差网络 (ResNet)的核心恒等捷径。残差块的输出为 x + F(x),因此它对 x 的梯度等于 1 加上 F 的导数,而捷径路径会将上游梯度原样传递。

残差捷径让 ResNet 能够训练超过 100 层的网络,并且几乎出现在所有现代深度架构中,从 Transformer 到 YOLO26 都有应用;YOLO26 的 C3k2 模块包裹着残差瓶颈结构,其标准卷积模块则将批归一化与 SiLU 激活配对使用。

其他方法也可以与残差连接配合使用:

  • 非饱和激活函数:ReLU对正输入的导数恰好为 1;Leaky ReLU和 SiLU则能在负输入时也保留非零梯度。
  • 缩放初始化: Xavier(Glorot)初始化适用于 tanh 和 sigmoid 层;He 初始化会将权重方差加倍,以补偿 ReLU 将一半输入置零的影响。
  • 归一化层:批归一化和层归一化会将激活前的值保持在均值接近 0、方差接近 1 的范围内,避免其落入饱和激活函数的平坦区域。
  • 门控循环架构:长短期记忆网络(LSTM)和门控循环单元(GRU)通过门控加法更新来传递状态,而不是反复相乘;原始 LSTM 因此能够跨越超过 1,000 步的时间间隔。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来