第 9 题:梯度裁剪(Gradient Clipping)的 L2 norm vs Global norm,推荐场景哪种更稳定?
题目
梯度裁剪(Gradient Clipping)的L2 norm vs Global norm,推荐场景哪种更稳定?
完整讲解
一、两种方式
- 按参数裁剪(L2 norm per param):对每个参数的梯度向量单独做 L2 范数裁剪,若 $|\nabla w|_2 > \theta$ 则缩放到 $\theta$。各参数各自为政,互不影响。
- Global norm(全局范数):先算所有参数梯度拼成一个大向量的 L2 范数 $g = |\nabla|_2$,若 $g > \theta$ 则把所有梯度整体乘以 $\theta/g$。所有参数同比例缩放,保持方向不变。
二、区别与性质
- Global norm:保持梯度方向不变,只缩小步长;适合「整体梯度爆炸、但方向仍可信」的情况(如 RNN、Transformer)。PyTorch 的
clip_grad_norm_、TensorFlow 的 clip_by_global_norm 即此类。
- 按参数 L2:不同参数可被裁到不同「长度」,相对比例会变,方向可能被扭曲;若某层梯度特别大,只裁该层,其他层不变,可能加剧层间不平衡。
三、推荐场景哪种更稳定
- 推荐模型:常为大规模稀疏(Embedding + 稠密 MLP),梯度在不同参数上差异大:Embedding 梯度稀疏、MLP 梯度稠密,且不同特征/样本对梯度贡献不均。
- 更稳的通常是 Global norm:
1)统一尺度,避免某一块梯度极大导致更新过猛、其他块几乎不动;
2)不改变方向,优化更可预测;
3)实现简单、超参少(一个 $\theta$)。
- 按参数 L2 在推荐里较少用,除非有明确需求(如只保护某几层)。实践中推荐用 Global norm,阈值 $\theta$ 常用 1.0 或 5.0,按验证集/训练曲线微调。
面试要点
- Global norm:所有梯度拼成向量求 L2,超阈值则整体缩放,方向不变;按参数 L2:每参数单独裁,方向可能变。
- 推荐场景:Global norm 更稳,统一尺度、不扭曲方向、超参少;推荐模型梯度差异大,Global 更合适。
记忆要点
- Global norm:整体梯度 L2 超阈值则同比例缩小,方向不变;按参数 L2:每参数单独裁。
- 推荐:用 Global norm 更稳定;$\theta$ 常用 1.0 或 5.0。