Adam 优化器(Adam / AdamW)

AI TERM术语词条

Adam / AdamW

技术原理 优化器训练技巧自适应学习率动量

术语释义

Adam 用梯度的一阶与二阶动量自适应调整每个参数的学习率,AdamW 把权重衰减解耦,是深度学习最常用的默认优化器。

Adam 在梯度下降的基础上给每个参数单独维护两个统计量:梯度的一阶动量(指数滑动平均,类似惯性)与二阶动量(梯度平方的滑动平均,衡量该参数梯度的量级),再用后者对更新步长做缩放。梯度一直很大的参数步子自动收小,梯度稀疏的参数则获得相对更大的步长。

偏差修正与权重衰减

滑动平均在训练初期被零初始化拉低,因此要除以 1 减去衰减率的幂做偏差修正,否则前几步更新会异常小。另一个常被忽略的点是权重衰减:把 L2 惩罚直接加进梯度会与自适应缩放耦合,导致大梯度参数反而被衰减得更少。AdamW 改为在参数上直接做衰减、与梯度更新解耦,这也是它成为默认选择的原因。

与其他优化器的边界

  • 动量方法:对每个参数用同一个学习率,配合良好的调度在部分视觉任务上泛化更好,但要手工调参、对初始化更敏感。
  • 自适应方法:把步长按梯度量级归一化,收敛快、对超参更宽容,代价是每个参数要多存两份状态。
  • 收敛过程不同:自适应方法训练初期下降更快,后期容易在最优附近震荡,常需要配合学习率衰减。
  • 不是绝对优劣:选择更多取决于任务与算力预算,切换优化器时学习率必须重新搜索。

调参与常见坑

  • 学习率仍是最重要的旋钮:默认值只是起点,微调大模型时常用更小的值并配合预热与衰减。
  • 二阶动量会积累历史:训练后期遇到新的梯度量级,步长可能被压得过小,必要时可重置优化器状态。
  • 与大批量配合要小心:批量变大后梯度噪声降低,原学习率可能过大,需要同步调整。
  • 显存开销:每个参数要多存两份状态,训练大模型时这部分占用常超过权重本身。
  • 混合精度下的数值稳定:低精度下梯度平方容易下溢,通常保留一份高精度主权重并在更新时做损失缩放。

选自适应方法还是带动量的随机梯度下降,经验上取决于任务:Transformer 类模型大多使用自适应方法,而部分视觉任务用调好的动量方法泛化更好。另外,梯度裁剪常与自适应方法一起用:遇到偶发的梯度尖峰时,裁剪能避免单步更新过大,与自适应缩放互补。训练中断后恢复时,优化器状态要与权重一起保存并对齐,否则重启后的前几步更新会出现明显抖动。

查看全部 218 条 →
共 9 条