Zubnet AI学习Wiki › Adam优化器
训练

Adam优化器

别名:Adam、AdamW
训练神经网络最广泛使用的优化算法。Adam(自适应矩估计)将动量(使用过去梯度的移动平均)与自适应学习率(按过去梯度幅度的倒数缩放更新)结合。AdamW添加了解耦的权重衰减以获得更好的正则化。几乎所有现代LLM都使用AdamW训练。

为什么重要

Adam在广泛的任务和超参数范围内表现良好,使其成为默认优化器。理解它能解释为什么训练“大多数时候都能工作”(Adam逐参数自适应)以及为什么有时不行(Adam的内存需求是模型参数的2倍,这对大模型很重要)。在90%的情况下,它也是“我应该用哪个优化器?”的答案。

深度解析

Adam为每个参数维护两个移动平均值:一阶矩(梯度均值——动量)和二阶矩(梯度平方均值——自适应缩放)。更新规则:parameter -= lr × m̂ / (√v̂ + ε),其中m̂和v̂是偏差校正后的矩。梯度持续较大的参数获得较小的更新(它们已经校准得很好)。梯度小且嘈杂的参数获得较大的更新(它们需要更激进的移动)。

AdamW:修复版

原始Adam通过在计算矩之前将权重衰减添加到梯度中来应用,导致衰减被自适应学习率缩放——这不是你想要的。AdamW(Loshchilov & Hutter,2017)将权重衰减从梯度更新中解耦,直接应用于参数。这看起来是一个小修复,但显著改善了泛化能力。所有现代LLM训练都使用AdamW。

内存成本

Adam为每个参数存储两个额外的值(一阶和二阶矩),将优化器状态的内存需求增至三倍:一个70B模型需要约140 GB存储权重(FP16),加上约280 GB用于Adam状态(FP32),总计约420 GB。这就是为什么优化器状态分片(DeepSpeed ZeRO、FSDP)对大模型训练至关重要。一些更新的优化器(Adafactor、CAME、Lion)在牺牲一定稳定性的情况下减少了这一内存开销。

← 所有术语