跳到主内容
快讯直播
AI智模界
AI 词典

梯度裁剪:给梯度装一根保险丝

一句话定义:梯度裁剪(gradient clipping)是在参数更新之前,先给梯度设一个上限;一旦超过这个上限,就按规则把它压回去。

先打个比方:录音棚里的限幅器

歌手突然吼一嗓子,音量瞬间爆表。这时有两种处理方式:一是把超过阈值的那部分波形直接削平,声音会失真、长出刺耳的谐波;二是让整段声音按比例一起变小,波形形状不变,只是音量低了。前者对应"按值裁剪",后者对应"按范数裁剪"。

按范数裁剪到底剪掉了什么

把所有参数的梯度拼成一个大向量 g,算它的 L2 范数(norm)‖g‖。如果 ‖g‖ 不超过阈值 c,什么都不做;如果超过,就令 g ← g × c/‖g‖。

关键在于:它剪掉的是长度,保留的是方向。所有梯度分量同比例缩小,向量指向的仍是一模一样的方向,只是这一步迈得小一点。对最朴素的 SGD(随机梯度下降)来说,这基本等价于把这一步的学习率临时调小。

对比项按值裁剪 clip by value按范数裁剪 clip by norm
做法每个分量单独夹到 [−c, c]整个向量等比缩放
方向会被改变保持不变
直观效果削波失真整体调低音量
常见场景简单脚本、特殊需求深度网络、大模型训练的主流做法

为什么需要它:梯度爆炸

反向传播是连乘。深层网络、RNN 里几十上百个雅可比矩阵相乘,很容易指数级放大;再碰上一个异常 batch,梯度可能是平时的上千倍。一步更新就把权重推到很远的地方,loss 当场变成 NaN,几小时训练白跑。裁剪就是那根保险丝:它不修电路,只在电流异常时熔断。

和相邻概念的区别

梯度消失(vanishing gradient)和梯度爆炸是同一枚硬币的两面,前者靠残差连接、归一化、门控结构解决,裁剪只负责上界。学习率(learning rate)是全局预设的,裁剪是被动、逐 step 生效的,平时根本不触发。权重衰减、BatchNorm 作用在参数或激活上,裁剪作用在梯度上,层次不同。

对从业者的实际意义

第一,把梯度范数和裁剪触发比例打进日志。长期高频触发,说明学习率太大、数据有脏样本、或者结构不稳——保险丝老熔断,该查的是电路,而不是换根更粗的保险丝。第二,阈值太小会让模型学不动,有效步长被长期压扁;太大等于没开。第三,对 Adam 这类自适应优化器(adaptive optimizer),裁剪之后还有逐参数的缩放,效果会被部分抵消,别指望它包治百病。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。