R19 · 范数裁剪:同一方向,限制长度
R18区分了信号衰减与更新过大的风险。这条延伸先处理后一项,检查范数裁剪怎样限制梯度,以及它没有改变哪条信息通路。
状态 b0
梯度箭头(3,4)的平方和为25,开方后范数为5;先把长度和平方和分清。
图中是梯度箭头,普通SGD更新沿其负方向;比较缩放前后长度时不要把二者当成参数移动方向。
状态 b1
阈值2使整条向量统一乘2/5,终点变成(1.2,1.6)。方向不变,长度落在阈值上。
状态 b2
规则补全未超阈值的情况:缩放系数为1,梯度保持原样。它限制过大梯度,并未重建早期信号的通路。
公式与算例详情
全局梯度范数裁剪先把参与一次更新的梯度视作一个向量 $g$,再做
$$\widetilde g=g\min\left(1,\frac{\tau}{\lVert g\rVert_2}\right),\qquad \theta\leftarrow\theta-\eta\widetilde g.$$
当 $g=0$ 时保持零,不做除零。本页数值为构造算例。若 $g=(3,4)$,则 $\lVert g\rVert_2=\sqrt{3^2+4^2}=5$。阈值 $\tau=2$ 时,$\widetilde g=(1.2,1.6)$,范数恰为2,方向不变。不能把平方和25直接当作范数,也不能把“每个分量截到区间”与范数裁剪混成同一种算法。
例如学习率 $\eta=0.1$ 时,这一梯度对应的 SGD 更新从 $(-0.3,-0.4)$ 变成 $(-0.12,-0.16)$。对于自适应优化器,裁剪作用在送入优化器的梯度上;优化器最终参数位移不一定与原梯度同向。
裁剪针对过大的梯度,不能把早期已经接近零的信用分配恢复出来。阈值也是需要说明的训练条件,比较裁剪开关时应保留同一数据、初始化种子、优化器和训练预算。参考:Pascanu et al. 2013,Algorithm 1;N-RNN PDF p49。
原课页采用记录:M12 长依赖不是多走几步动画。页码均按PDF物理页计。
继续学习
本页自学核对:复算 (3,4) 在阈值 2 下的裁剪;整理成新梯度,并解释它为何不补回消失信号。
若想判断裁剪是否真的改善远处事实使用,可进入《状态在流动,梯度可以停在边界》;动手时打开LAB01的“C · 共享参数的梯度到底加了几次?”:分开观察梯度核验、更新稳定与长依赖正确率,不把局部smoke或不发散当作记忆证据。 实施范围见实验路线C。