术语表

消失的渐变

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

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

了解更多

梯度消失是深度人工智能(AI)模型,尤其是深度神经网络(NN)训练过程中遇到的一个常见难题。它发生在反向传播过程中,即模型通过根据计算出的误差调整其内部参数(权重)来学习。梯度表示为最小化误差所需的权重调整方向和幅度,它是为每一层计算的。在深度网络中,当梯度从输出层向后传播到初始层时,梯度会变得非常小。当梯度变得非常小时,前几层的权重更新就会非常缓慢,甚至根本不会更新,从而有效地停止了这些层的学习过程。

深度学习的重要性

梯度消失问题严重阻碍了深度网络的训练,而深度网络对于处理计算机视觉(CV)自然语言处理(NLP)等领域的复杂任务至关重要。理论上,深度网络有能力学习更复杂的模式和层次特征。但是,如果初始层由于梯度消失而无法有效学习,网络就无法捕捉到基本的低层特征,从而限制了其整体性能。这是深度学习(DL)早期的一个主要障碍,在处理长序列时尤其会影响某些架构,如简单的递归神经网络(RNN)

原因和后果

造成梯度消失的因素有几个:

  • 激活函数:某些激活函数,如SigmoidTanh,其导数在大部分范围内都小于 1。在反向传播过程中,这些小导数会在许多层中相乘,从而导致梯度以指数形式缩小。
  • 深度架构:深度网络的层数之多,加剧了小数重复乘法的效果。
  • 权重初始化: 模型权重初始化不当也会造成问题。

其主要后果是网络的早期层学习速度极慢,或者完全停止学习。这妨碍了模型学习复杂的数据表示并获得良好的性能,导致训练过程中收敛性差,并可能造成拟合不足

缓解策略

研究人员开发了多种技术来解决梯度消失问题:

  • ReLU 及其变体使用ReLU(整流线性单元)及其变体(Leaky ReLUGeLU)等激活函数很有帮助,因为它们的导数在正输入时为 1,可以防止梯度在这些区域缩小。
  • 残差网络(ResNets): ResNet等架构引入了 "跳过连接",允许梯度在反向传播过程中绕过某些层,为梯度信号提供更短的路径。这一概念是许多现代CNN 的基础。
  • 门控机制(LSTM/GRUs):对于顺序数据,长短时记忆(LSTM)门控递归单元(GRUs)等架构使用门控机制来控制信息流和梯度,使它们比简单的 RNN 更好地捕捉长程依赖关系。
  • 批量归一化 批量归一化通过归一化图层输入,有助于稳定和加速训练,从而间接缓解梯度消失(和爆炸)问题。
  • 渐变剪切虽然主要用于 "爆炸渐变",但仔细应用裁剪有时也能帮助管理渐变幅度。
  • 谨慎初始化:使用复杂的权重初始化方案(Xavier/GlorotHe)在一定范围内设置初始权重,以降低训练初期梯度消失或爆炸的可能性。

消失梯度与爆炸梯度

梯度消失(Vanishing Gradient)是指梯度变得极小,从而阻碍学习。与之相反的问题是梯度爆炸问题,即梯度变得过大,导致训练不稳定,权重更新幅度大且振荡。这两个问题都与使用基于梯度的优化方法训练深度网络所面临的挑战有关。梯度剪切等技术就是专门用来应对梯度爆炸问题的。

实际应用

解决梯度消失问题对许多人工智能应用的成功至关重要:

  1. 机器翻译:训练深度序列到序列模型(通常基于Transformers或 LSTM)需要捕捉句子中相距甚远的单词之间的依赖关系。减轻消失梯度可以让这些模型学习远距离关系,从而实现更准确、更连贯的翻译。Google 翻译等平台在很大程度上依赖于能够解决这一问题的架构。
  2. 医学图像分析:用于医学图像分析中肿瘤检测等任务(如使用脑肿瘤检测等数据集)的深度 CNN 需要很多层才能从复杂扫描中学习分层特征。ResNet 或 U-Net 等架构采用了跳转连接或其他梯度保护技术,可以有效地训练这些深度模型,从而提高诊断准确率。模型如 Ultralytics YOLO等模型利用现代深度学习架构,在物体检测分割等任务中结合了解决这些梯度问题的固有方法。
阅读全部