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——实践中应对 EmbeddingLayerNorm 偏置等层关闭权重衰减
  • 内存开销:AdamW 需存储 m 和 v 两个与参数等大的动量缓冲区,显存占用约为参数量的 3 倍
  • 调度依赖:AdamW 通常需配合学习率预热(warmup)和余弦退火调度才能发挥最佳效果
  • 非凸场景:理论收敛保证仅在特定条件下成立,实际训练仍需监控损失曲线

变体与后续发展

AdamW 发布后催生了一系列改进优化器,持续推动训练效率研究。

  • 2017 年:Loshchilov & Hutter 提出 AdamW,发表 arXiv:1711.05101
  • 2019 年AdaFactor 通过分解矩阵降低内存占用,适合超大模型
  • 2021 年Lion 优化器(Google)仅使用符号更新,内存节省约 1/3
  • 2023 年AdanCAME 等结合动量与权重衰减改进,面向 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 篇文章,帮助深入理解该术语。

  1. 1

    优化器:SGD, Momentum, Adam, AdamW

    从梯度下降到 AdamW,系统梳理深度学习优化器演进与选择策略

  2. 2

    梯度下降算法全解:从 SGD 到 Adam 的优化之路

    系统掌握从最基础的梯度下降到高阶自适应优化算法的完整演进路径,理解每种优化器的数学原理、适用场景与现代深度学习中的最佳实践

  3. 3

    正则化:BatchNorm, LayerNorm, Dropout

    从 Dropout 到 LayerNorm,掌握防止过拟合的核心技术

外部参考

维基百科:查看「AdamW」词条

本页内容为本站原创撰写;维基百科链接仅作延伸参考。