Adam和AdamW

Adam和AdamW是深度学习中广泛使用的两种优化算法,它们的核心区别在于权重衰减(Weight Decay)的实现方式:


1. 对比表

特性AdamAdamW (Adam with Weight Decay Decoupling)
权重衰减实现L2正则化(与梯度更新耦合)解耦的权重衰减(独立于梯度更新)
参数更新公式梯度中包含L2项梯度中不包含L2项,单独处理权重衰减
正则化效果受自适应学习率影响,可能不稳定独立于学习率,更稳定的正则化
适用场景简单任务、小规模数据大规模预训练模型(如BERT、ViT)
超参数敏感性对学习率和权重衰减比例敏感超参数更易调节
理论依据传统L2正则化解耦的权重衰减(更接近SGD的权重衰减)
PyTorch版本torch.optim.Adamtorch.optim.AdamW

2. 数学原理对比
Adam参数更新公式

# 传统Adam(L2正则化耦合)
theta_t+1 = theta_t - lr * m_hat / (sqrt(v_hat) + eps)
其中:
m_hat = beta1*m + (1-beta1)*grad
v_hat = beta2*v + (1-beta2)*grad^2
grad = grad + wd * theta_t  # L2正则化耦合在梯度中

AdamW参数更新公式

# AdamW(解耦权重衰减)
theta_t+1 = theta_t - lr * (m_hat / (sqrt(v_hat) + eps) + wd * theta_t)
其中:
m_hat = beta1*m + (1-beta1)*grad  # 原始梯度
v_hat = beta2*v + (1-beta2)*grad^2

3. 直观理解
用一个比喻解释它们的区别:
• Adam:把"体重控制"(权重衰减)和"运动计划"(梯度更新)混在一起制定,可能导致健身效果不可控。

• AdamW:先制定"运动计划",再单独规划"饮食控制"(权重衰减),两者互不干扰。


4. 实际影响示例
假设有以下场景:

lr = 1e-3
wd = 0.01
beta1 = 0.9

# 参数初始值
theta = 1.0
grad = 0.5

Adam的计算:

m = 0.9*0 + 0.1*(0.5 + 0.01*1.0) = 0.051
update = 0.051 / (sqrt(...))0.051
theta = 1.0 - 1e-3*0.0510.999949

AdamW的计算:

m = 0.9*0 + 0.1*0.5 = 0.05
update = 0.05 / (sqrt(...)) + 0.01*1.00.05 + 0.01 = 0.06
theta = 1.0 - 1e-3*0.060.99994

虽然结果相似,但在自适应学习率较大时,两者的差异会被放大。


5. 何时选择哪种优化器?

场景推荐优化器原因
小规模图像分类(CIFAR-10)Adam简单任务差异不大
BERT/GPT预训练AdamW需要精确控制权重衰减
对抗生成网络(GAN)Adam动态平衡需要耦合更新
迁移学习(微调ImageNet模型)AdamW防止微调时的过拟合
强化学习Adam通常不需要强正则化

6. 调参技巧
对于AdamW:

# 典型超参数设置(以ViT为例)
optimizer = AdamW(
    params, 
    lr=3e-4,         # 比Adam稍大
    weight_decay=0.05,  # 更激进的正则化
    betas=(0.9, 0.999)
)

对于Adam:

optimizer = Adam(
    params,
    lr=1e-4,         # 通常需要更小
    weight_decay=1e-4,  # 保守的正则化
    betas=(0.9, 0.999)
)

7. 常见误区

  1. 误区:AdamW只是Adam的简单改进
    • 事实:AdamW改变了优化问题的数学形式,更适合现代深度学习模型

  2. 误区:AdamW在所有场景都优于Adam
    • 事实:在需要强耦合更新的场景(如GAN),传统Adam可能更合适

  3. 误区:权重衰减系数可以直接移植
    • 事实:当从Adam切换到AdamW时,通常需要增大权重衰减系数3-10倍


8. 历史演进

  1. 2014:Adam提出(Kingma & Ba)
  2. 2017:发现Adam+L2的问题(Loshchilov & Hutter)
  3. 2019:AdamW被广泛采用(BERT、GPT-2)
  4. 2021:成为Transformer模型的标准优化器

建议
• 新手:从AdamW开始,使用默认参数

• CV任务:优先尝试AdamW(特别是ViT等模型)

• NLP任务:必须使用AdamW(对正则化敏感)

• 小规模实验:可以用Adam快速验证想法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值