Adam 和 AdamW 的重要区别在于 权重衰减(Weight Decay) 的实现方式,具体如下:
1. 权重衰减(Weight Decay)处理方式
- Adam:采用 L2 正则化,通过在梯度更新时手动添加 weight_decay 项:
g t = ∇ f ( θ t ) + λ θ t g_t = \nabla f(\theta_t) + \lambda \theta_t gt=∇f(θt)+λθt
此中, λ \lambda λ 是权重衰减系数。
- AdamW:直接在 参数更新时 实行权重衰减,而不是在梯度盘算时添加 L2 正则:
θ t + 1 = θ t − η m t v t + ϵ − η λ θ t \theta_{t+1} = \theta_t - \eta \frac{m_t}{\sqrt{v_t} + \epsilon} - \eta \lambda \theta_t θt+1=θt−ηvt +ϵmt−ηλθt
这里权重衰减项独立于梯度盘算,在更新参数时进行。
2. 影响
- Adam 的 L2 正则化 会影响梯度估计值,导致优化器在 自顺应学习率的调治 过程中对权重衰减的影响不稳固。
- AdamW 的独立权重衰减 让权重衰减成为一个真正的正则化项,而不会干扰梯度估计,使得模子的 泛化能力更强。
3. 实验对比
- 论文 Decoupled Weight Decay Regularization(Loshchilov & Hutter, 2019)表明,在深度学习任务(如 NLP 和 CV)中,AdamW 通常比 Adam 泛化性能更好,因为它的权重衰减不会被 Adam 的自顺应学习率影响。
- AdamW 在 Transformer 模子(如 BERT、ViT)中被广泛采用,因为它有更稳固的收敛性。
4. 总结
AdamAdamW权重衰减方式L2 正则化(影响梯度)直接在更新时进行(不影响梯度)对梯度估计的影响大概影响梯度自顺应调整不影响自顺应学习率调整泛化能力较弱,大概过拟合更强,正则化效果更好应用场景实用于小规模任务实用于大规模深度学习任务(如 BERT、ViT) |