AdamW(带权重衰减的 Adam)
AdamW 就是 Adam 加了个减肥功能,把权重衰减从梯度里单独拉出来,让模型不容易过拟合
亦作、亦称:带权重衰减的 Adam · Adam with Weight Decay · Decoupled Weight Decay Regularization · AdamW 优化器
AdamW 通过将权重衰减与自适应梯度更新解耦,解决了 Adam 正则化不均匀的根本缺陷。它是当今训练大型语言模型和 Transformer 架构的首选优化器。
概述
AdamW 是深度学习中最广泛使用的自适应优化器之一,针对 Adam 的正则化缺陷提出改进。
- 提出背景:Adam 虽然收敛快,但其 L2 正则化实现存在理论缺陷,导致泛化性能不如 SGD with Momentum
- 核心改进:将权重衰减(weight decay)从梯度计算中解耦,作为独立操作直接缩小参数
- 影响力:BERT、GPT-2/3、LLaMA 等几乎所有主流大模型均采用 AdamW 训练
- 框架支持:PyTorch(
torch.optim.AdamW)、TensorFlow、JAX/Optax 均原生支持
工作原理
AdamW 在 Adam 更新步骤完成后,对参数施加额外的权重衰减操作。
- Adam 基础:维护一阶矩 m(梯度均值)和二阶矩 v(梯度平方均值),自适应调整各参数学习率
- 解耦关键:更新公式为 θ_{t+1} = θ_t · (1 - η·λ) - η · m̂_t / (√v̂_t + ε),其中 λ 为权重衰减系数,独立于梯度项
- 对比 Adam+L2:Adam 加 L2 时,正则化梯度 λ·θ 会被二阶矩 v 缩放,导致高频参数衰减不足
- 均匀衰减:AdamW 确保每个参数以相同比例 λ 收缩,不受历史梯度幅度影响
与 Adam 的区别
两者的根本差异在于权重衰减的施加方式,而非算法框架本身。
- Adam(L2 版):λ·θ 加入梯度后一起被自适应学习率缩放,实际衰减 = λ / √v,各参数不一致
- AdamW:权重衰减在梯度更新之后独立执行,实际衰减 = η·λ,全局均匀
- 泛化差距:图像分类实验中 AdamW 可媲美 SGD with Momentum,而 Adam+L2 通常泛化较差
- 超参数独立性:AdamW 中 lr 与 weight_decay 可分别调优,不相互干扰
应用场景
AdamW 几乎适用于所有需要正则化的深度神经网络训练任务。
- 大语言模型预训练:GPT、LLaMA、Mistral 等 LLM 的标准优化器,weight_decay 通常设为 0.1
- Transformer 微调:Hugging Face Transformers 的
TrainingArguments默认使用 AdamW - 计算机视觉:ViT、Swin Transformer 等视觉 Transformer 的首选优化器
- 常用超参设置:lr ≈ 1e-4 ~ 3e-4,weight_decay ≈ 0.01 ~ 0.1,β1=0.9,β2=0.999
局限与误区
使用 AdamW 时有几个常见的误区和注意点需要了解。
- 误区一:认为 Adam+L2 等价于 AdamW——在自适应优化器中两者存在本质差异
- 误区二:对所有参数统一施加 weight_decay——实践中应对 Embedding、LayerNorm 偏置等层关闭权重衰减
- 内存开销:AdamW 需存储 m 和 v 两个与参数等大的动量缓冲区,显存占用约为参数量的 3 倍
- 调度依赖:AdamW 通常需配合学习率预热(warmup)和余弦退火调度才能发挥最佳效果
- 非凸场景:理论收敛保证仅在特定条件下成立,实际训练仍需监控损失曲线
变体与后续发展
AdamW 发布后催生了一系列改进优化器,持续推动训练效率研究。
- 2017 年:Loshchilov & Hutter 提出 AdamW,发表 arXiv:1711.05101
- 2019 年:AdaFactor 通过分解矩阵降低内存占用,适合超大模型
- 2021 年:Lion 优化器(Google)仅使用符号更新,内存节省约 1/3
- 2023 年:Adan、CAME 等结合动量与权重衰减改进,面向 LLM 高效训练
- 现状:AdamW 仍是学术与工业界默认基准,新优化器通常以 AdamW 作对比
最佳实践
合理配置 AdamW 超参数对模型性能影响显著。
- 参数分组:将需要正则化的权重(线性层、注意力投影)与不需要的(偏置项、归一化层)分开设置 weight_decay
- 学习率预热:前 1%~5% 步骤线性预热,避免训练初期梯度爆炸
- 梯度裁剪:配合
max_norm=1.0的梯度裁剪防止梯度爆炸,LLM 训练中几乎必用 - 调度器搭配:余弦退火(Cosine Annealing)或线性衰减是与 AdamW 最常见的组合
- 典型配置参考:LLaMA 使用 lr=3e-4,weight_decay=0.1,β1=0.9,β2=0.95,ε=1e-5
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「AdamW 就是 Adam 加了个减肥功能,把权重衰减从梯度里单独拉出来,让模型不容易过拟合」
- 「用 Adam 加 L2 正则化跟直接用 AdamW 不一样,前者会被自适应学习率干扰,后者才是真正的权重衰减」
- 「现在训大模型基本默认用 AdamW,不用 Adam,因为泛化效果明显更好」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
延伸阅读
从知识库精选 3 篇文章,帮助深入理解该术语。
外部参考
维基百科:查看「AdamW」词条本页内容为本站原创撰写;维基百科链接仅作延伸参考。