跳到主内容

梯度爆炸是怎么发生的?loss 飞天的原因

2026-10-18 发布 来源:我告诉你AI导航 阅读

大模型训练时,loss 曲线突然冲上天的那个瞬间,多半是梯度爆炸。梯度爆炸和梯度消失正好相反:误差信号往回传时没有被削弱,反而被一层层放大,传到某些层时梯度已经大到离谱,参数一步跨出可行区,损失瞬间失控。

大模型训练时,loss 曲线突然冲上天的那个瞬间,多半是梯度爆炸。梯度爆炸和梯度消失正好相反:误差信号往回传时没有被削弱,反而被一层层放大,传到某些层时梯度已经大到离谱,参数一步跨出可行区,损失瞬间失控。

loss 飞天的发生过程

同样按三步看。进来的是损失值,这一轮模型预测得离谱,损失自然很大。发生的是反传:大损失分摊回各层时,链式求导的连乘系数整体偏大,乘几十层之后梯度被放大成庞然大物。出去的是参数更新:按这个巨型梯度调参数,一步就跳出合理范围,下一轮前向更糟,损失曲线垂直拉升。

这个过程有自我强化的恶性循环。参数跳错导致下一轮损失更大,损失更大意味着梯度更大,梯度更大让参数跳得更离谱。梯度消失是信号衰减到停机,它是信号放大到失控,两个方向的问题,排查时看损失曲线形状就能分辨。

反传路上的放大效应

放大效应的根源和消失同源,都是连乘。每层梯度等于后层梯度乘以本层的权重和激活导数,这些系数只要整体大于一,乘积就朝大滚,层数越多滚得越夸张。权重矩阵的某些方向天生容易放大,一旦某个批次踩中这些方向,梯度就会瞬间膨胀。

哪些方向容易放大,和权重的谱特性有关。简单说,权重矩阵在某些输入方向上会把信号成倍放大,这些方向就像管道里的狭窄段,流量一大就喷涌。训练初期权重随机,这些方向是碰运气;数据分布偏移时,就容易被反复踩中。

批次的构成在这里是关键变量。一个异常样本、一段极端长度、一次偶发的脏数据,都可能把某个批次的梯度推向爆表。数据质量过滤因此不只是效果工程,也是稳定性工程,上游的脏数据会以 loss 飞天的形式在下游爆发。

触发条件有哪些

常见的触发条件有四类。学习率设得偏大,等于给更新步长上杠杆,小问题也容易放大成爆炸。权重初始化不当,起始状态就落在容易放大的方向。网络深且缺少归一化,层间尺度失控,梯度在链路里自由膨胀。数据里混入异常批次,一次性把梯度推到峰值。

还有一个容易被忽略的触发点:任务切换。模型在旧任务上训得稳定,换新数据后分布突变,原本平稳的梯度分布被打破。语料配比剧烈调整的时期,正是爆炸高发期,需要盯紧曲线。

稳住训练的几招

应对办法按优先级排。第一是梯度裁剪,给梯度设上限,超幅就截断,这是最直接的刹车。第二是降学习率,从源头压缩步长。第三是加归一化层,把层间输出尺度稳住,掐断放大的传导路径。第四是查数据,定位异常批次并回炉清洗,别让同一颗雷炸两次。

四招按优先级排,先止血再治根,下手的位置各不相同。

处置手段优先级具体做法作用在哪
梯度裁剪第一给梯度设上限,超幅就截断最直接的刹车,先压住爆表那一下
降学习率第二从源头压缩步长压缩每一步的跨度,减少跳出可行区的机会
加归一化层第三把层间输出尺度稳住掐断放大的传导路径
查数据第四定位异常批次并回炉清洗别让同一颗雷炸两次

这些配置在主流框架里都是现成开关。用通义千问或文心一言的开放实现做实验时,默认训练脚本通常已经带上裁剪和归一化。真正需要人工介入的场景,是曲线莫名异常时,你能顺着这条链路逐一排查,而不是盲目重启训练。

速查表:梯度爆炸=反传时梯度被连乘放大;触发条件=学习率大、初始化差、缺归一化、脏数据;应对=梯度裁剪优先,其次降学习率、加归一化、查数据。

换个问法再问梯度爆炸三句

  • 爆炸和消失会同时出现吗?会,同一网络不同层可能一边衰减一边放大,通常先处理爆炸,因为它直接中断训练。
  • 梯度裁剪会拖慢收敛吗?极端批次会被压平,但正常批次的更新几乎不受影响,整体是划得来的交易。
  • 曲线抖一下就一定是爆炸吗?不一定,也可能是学习率偏大或验证集波动,看是否持续飙升才能定性。

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]