术语表

消失的渐变

探索深度学习中的梯度消失问题、它对神经网络的影响,以及 ReLU、ResNets 等有效解决方案。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

梯度消失(Vanishing Gradient是深度神经网络(NN 训练过程中遇到的一个常见难题,尤其是像循环神经网络(RNN)和深度前馈网络这样的多层网络。它发生在反向传播过程中,即损失函数相对于网络权重的梯度从输出层向后传播到前几层时变得非常小。当这些梯度变得非常小时,初始层中模型权重的更新就变得微不足道,从而有效地阻止了这些层的学习。这就阻碍了网络学习复杂模式和捕捉数据中长距离依赖关系的能力,而这对许多深度学习(DL)任务至关重要。

为什么消失的渐变有问题?

梯度消失的核心问题是会阻碍学习过程。机器学习(ML)模型的学习方法是,根据梯度下降(Gradient Descent)或亚当(Adam)等优化算法计算出的误差信号(梯度)调整内部参数。如果梯度接近于零,参数更新就会很少或根本不存在。在深度网络中,这个问题更加复杂,因为梯度信号在层层回传的过程中会反复乘以小数。因此,最靠近输入的层的学习速度要比最靠近输出的层慢得多,甚至根本无法学习。这就阻碍了网络向最优解收敛,限制了其整体性能和准确性。了解这一现象对于有效的模型训练至关重要。

原因及与爆炸梯度的比较

出现梯度消失的原因通常是

  1. 激活函数的选择:某些激活函数(如sigmoid双曲正切 (tanh))的导数小于 1,尤其是在饱和区域。在反向传播过程中,将这些小导数与多个层相乘,会导致梯度呈指数级缩小。
  2. 深度架构:现代网络的深度增加了梯度倍增的次数,使得梯度消失的可能性增大。
  3. 权重初始化:权重初始化不当也会造成问题。

必须将梯度消失问题与相关的 爆炸梯度.梯度爆炸是指梯度变得过大,导致训练不稳定,权重更新大起大落。梯度消失会阻碍学习,而梯度爆炸则会导致学习发散。梯度剪切等技术通常被用来对付爆炸梯度。

缓解技术

为解决梯度消失问题,已经开发了几种策略:

  • ReLU 及其变体使用ReLU(整流线性单元)及其变体(Leaky ReLUGELUSiLU)等激活函数很有帮助,因为它们的导数在正输入时为 1,可以防止梯度在这些区域缩小。
  • 专用架构: 残差网络(ResNet)等架构引入了 "跳过连接",允许梯度绕过各层,在反向传播过程中提供更短的路径。对于序列数据,长短期记忆(LSTM)门控递归单元(GRU)使用门控机制来控制信息流,并在长序列中保持梯度。
  • 权重初始化:适当的初始化方案,如He 初始化或 Xavier/Glorot 初始化,有助于保持各层的梯度差异。
  • 批量归一化 批量归一化通过对层输入进行归一化处理,有助于稳定学习效果,从而间接缓解梯度消失(和爆炸)问题。
  • 梯度剪切:虽然主要用于爆炸梯度,但为梯度设置最大阈值有时也有助于防止梯度在大幅振荡后变得过小。

现实世界的影响和实例

解决梯度消失问题对人工智能的发展至关重要:

  1. 自然语言处理(NLP):由于梯度消失,早期的RNN机器翻译情感分析等任务中很难处理长句。LSTMGRU的发展使模型能够学习长程依赖关系,从而显著提高了性能。Transformer等现代架构则利用自我注意等机制进一步规避了这一问题。
  2. 计算机视觉:ResNet等架构问世之前,训练深度卷积神经网络(CNN)一直是一项挑战。ResNet 使网络具有数百甚至数千层,从而在图像分类物体检测(如 Ultralytics YOLO等模型中的应用)和图像分割方面取得了突破性进展。您可以探索用于训练这些模型的各种计算机视觉数据集

理解和缓解梯度消失仍然是设计和训练有效深度学习模型的一个关键方面,它使我们今天看到的强大的人工智能应用成为可能,这些应用通常使用Ultralytics HUB 等平台进行管理和部署。

阅读全部