消失的渐变
探索深度学习中的梯度消失问题、它对神经网络的影响,以及 ReLU、ResNets 等有效解决方案。
梯度消失问题是深度神经网络 训练过程中经常遇到的难题。梯度是用于通过反向传播更新网络权重的信号,当梯度从输出层传播回初始层时变得非常小,就会出现这种情况。当梯度趋近于零时,初始层的权重就无法有效更新,甚至根本无法更新。这基本上停止了这些层的学习过程,阻止了深度学习模型收敛到最优解并从数据中学习。
什么原因导致梯度消失?
梯度消失的主要原因在于某些激活函数的性质和网络本身的深度。
- 激活函数:传统的激活函数,如sigmoid函数和双曲正切(tanh)函数,会将输入挤压到很小的输出范围内。这些函数的导数很小。在反向传播过程中,这些小导数会在许多层中相乘。网络的层数越多,这些小数字相乘的次数就越多,从而导致最终梯度以指数形式向零收缩。
- 深度架构:这一问题在深度网络(包括早期的递归神经网络)中尤为明显,因为在这些网络中,梯度会通过许多时间步传播回来。每一步都涉及乘法运算,这会在长时间序列中减弱梯度信号。
消失的渐变与爆炸的渐变
消失的梯度与爆炸的梯度正好相反。这两个问题都与训练过程中的梯度流动有关,但它们的影响不同:
- 消失的梯度梯度呈指数级缩小,直到变得太小,无法在网络的早期层进行任何有意义的学习。
- 爆炸梯度:梯度不可控制地变大,导致大量权重更新,从而使模型变得不稳定,无法收敛。
解决这两个问题对于成功训练深度和强大的人工智能模型至关重要。
解决方案和缓解战略
为解决梯度消失问题,人们开发了多种技术:
现实世界的影响和实例
克服梯度消失是现代人工智能的关键突破。
- 自然语言处理 (NLP):早期的 RNN 无法完成机器翻译和长篇情感分析等任务,因为它们无法记住长句子开头的信息。LSTM 和 GRU 的发明使模型能够捕捉这些长距离依赖关系。像Transformer这样的现代架构利用自我注意完全绕过了顺序梯度问题,从而实现了最先进的性能。
- 计算机视觉:人们曾一度认为,由于梯度消失等训练困难,仅仅将卷积神经网络(CNN)变得更深并不能提高性能。ResNet体系结构的引入证明了这一观点是错误的,它使网络能够拥有数百个层。这在图像分类、图像分割和物体检测方面取得了重大进展,为Ultralytics YOLO 等模型奠定了基础。这些模型的训练通常涉及大型计算机视觉数据集,可以在Ultralytics HUB 等平台上进行管理。