深度学习进阶文档深度页
Adam 与 AdamW
Adam 用一阶/二阶矩自适应缩放,AdamW 解耦权重衰减。
学习目标
- 解释 m/v
- 区分 L2 与 AdamW
- 设置参数组
为什么需要这个概念
自适应优化常快速得到可用结果,但不保证总优于 SGD。
- 现代训练常用
- 正确理解 weight_decay
学习前需要掌握
Momentum内容待补充梯度内容待补充
背景与问题
自适应优化常快速得到可用结果,但不保证总优于 SGD。
概念定义
Adam 为每个参数坐标维护 m/v 并做偏差修正;AdamW 另外收缩参数。
直观理解
根据历史平均方向和波动,为每个参数分配不同有效步长。
核心原理
AdamW 的衰减不进入自适应梯度矩估计。
bias 和归一化参数是否衰减取决于架构配方。
数学表达
核心公式
前项是解耦衰减,后项是 Adam 更新。
变量含义
m一阶矩v平方梯度二阶矩
计算步骤
- 1衰减前项 (1-.001)×2
代码对应位置
示例 1Adam 与 AdamW · PyTorch 示例:验证Adam 与 AdamW的输入、计算和输出。
变量解释
| 变量 | 含义 |
|---|---|
m | 一阶矩 |
v | 平方梯度二阶矩 |
完整数值示例
解耦衰减
已知条件
- θ=2,η=.1,λ=.01
- 1
衰减前项 (1-.001)×2
1.998 后再加梯度更新
处理前后对比
计算与实现步骤
- 1
初始化矩
- 2
更新 m/v
- 3
偏差修正
- 4
自适应更新
- 5
解耦衰减
代码实现
示例 1
Adam 与 AdamW · PyTorch 示例
Adam 与 AdamW · PyTorch 示例
PyTorch
example_01.py用途:验证Adam 与 AdamW的输入、计算和输出。
optimizer=torch.optim.AdamW(model.parameters(),lr=3e-4,betas=(.9,.999),weight_decay=1e-2)代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
验证Adam 与 AdamW的输入、计算和输出。
model- 组合预处理和估计器的模型对象。
Step 1 · 1–1 行
betas 控制矩衰减
optimizer=torch.optim.AdamW(model.parameters(),lr=3e-4,betas=(.9,.999),weight_decay=1e-2)预期输出或运行结果
优化器创建并在 step 时维护每参数状态。
常见错误 · 3 条
- Adam L2 等同 AdamW
- 固定 decay 适合全部
- 比较优化器用同一 lr
实际应用
- Transformer
- 迁移学习
常见错误
Adam L2 等同 AdamW
固定 decay 适合全部
比较优化器用同一 lr
文档来源
15_优化器与学习率调度进阶原始文档
学习资料/deeplearning/15_优化器与学习率调度进阶.md- §4 Adam
- §5 AdamW
- §6 参数组
常见问题
AdamW 一定比 Adam 好吗?
不一定,需验证。
weight decay 是 Dropout 吗?
不是。
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。