梯度爆炸#
术语解释#
梯度爆炸(Gradient Exploding) 是深度学习模型训练过程中常见的一种数值不稳定性问题,本质原因和「梯度消失」一样,都是因为在反向传播中梯度逐层累乘,到输入层时变得极大,导致权重更新剧烈震荡甚至数值溢出,因此它和梯度消失是一对孪生问题,常用梯度裁剪、合适的初始化、残差结构等方法缓解。 核心成因有:
-
链式求导的累乘效应:反向传播算法基于链式法则计算梯度。如果网络层数较深,且各层的梯度值大于 1,连续的累乘会导致传向靠近输入层时梯度值呈指数级增长。
-
初始化与学习率不当:参数初始化权重过大,或者设置的学习率过高,都会加剧梯度在反向传播中的增长速度。
-
长序列依赖(RNN):在循环神经网络处理长序列时,同一组权重在多个时间步上被反复累乘,极易引发梯度爆炸。
缺点#
梯度爆炸会严重阻碍模型的收敛并破坏训练过程:
-
数值溢出与参数更新失效:梯度值可能迅速增大到超过计算机能够处理的浮点数范围(出现 NaN 或 Inf),导致权重参数无法得到有效的更新。
-
模型训练不稳定或不收敛:极其巨大的梯度会导致目标函数在优化过程中剧烈震荡,使得模型不仅难以收敛到最优解,甚至会导致模型彻底发散(训练失败)。
-
限制网络深度与序列长度:由于深层网络或长序列中梯度更容易失控,这极大地限制了模型捕捉长距离依赖信息的能力,是早期深度学习和 RNN 发展的主要障碍之一。
几种缓解梯度爆炸的工程手段:
-
梯度裁剪(Gradient Clipping):这是最直接的手段,通过设置阈值或基于范数对梯度进行强制约束,防止其过大。
-
合理的参数初始化:如 Kaiming 初始化或 Xavier 初始化,旨在保持网络各层激活值和梯度的方差稳定。
-
调节学习率:使用较小的学习率或学习率调度器(如 Warmup 策略)来控制每次跳跃的步长。
-
特殊的网络结构:例如 ResNet 中的残差连接(Shortcut Connection),它为梯度提供了一条直接的回传路径,有效缓解了梯度失控问题
相关内容可参见:
相关术语#
-
梯度下降
-
反向传播
-
批归一化
-
梯度爆炸