当前位置: 首页 > article >正文

【深度学习】Adam和AdamW优化器有什么区别,以及为什么Adam会被自适应学习率影响

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)

👉 如果你要在 Transformer 或深度学习任务中使用权重衰减,建议用 AdamW!


附:为什么Adam会被自适应学习率影响

Adam 之所以会被 自适应学习率(Adaptive Learning Rate) 影响,是因为它的 L2 正则化方式(梯度中的权重衰减项)与 Adam 的自适应梯度调整机制发生了耦合,导致实际的权重衰减效果不稳定。

Adam 的 L2 正则化(Weight Decay)

Adam 采用的是 L2 正则化,即在梯度计算时加入权重衰减项:
g t = ∇ f ( θ t ) + λ θ t g_t = \nabla f(\theta_t) + \lambda \theta_t gt=f(θt)+λθt
其中:

  • ∇ f ( θ t ) \nabla f(\theta_t) f(θt) 是损失函数对参数的梯度,
  • λ θ t \lambda \theta_t λθt 是 L2 正则化项(权重衰减项),
  • g t g_t gt 是最终用于 Adam 优化的梯度。

然后,Adam 会计算 自适应学习率
m t = β 1 m t − 1 + ( 1 − β 1 ) g t m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t mt=β1mt1+(1β1)gt
v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 vt=β2vt1+(1β2)gt2
θ t + 1 = θ t − η m t v t + ϵ \theta_{t+1} = \theta_t - \eta \frac{m_t}{\sqrt{v_t} + \epsilon} θt+1=θtηvt +ϵmt
其中:

  • m t m_t mt 是一阶动量(类似于梯度的指数加权平均),
  • v t v_t vt 是二阶动量(类似于梯度平方的指数加权平均),
  • η \eta η 是学习率,
  • v t \sqrt{v_t} vt 代表梯度的自适应缩放因子。

为什么 L2 正则化会被自适应学习率影响?

由于 Adam 采用的是 自适应学习率机制,不同参数的梯度更新量会被调整:
m t v t + ϵ \frac{m_t}{\sqrt{v_t} + \epsilon} vt +ϵmt
如果某些参数的梯度较大(或较小),它们的更新量会被 缩放,从而影响 L2 正则化项的实际作用。结果是:

  1. 不同参数的权重衰减不均匀

    • L2 正则化是在梯度中加入 λ θ t \lambda \theta_t λθt,但这个梯度随后会被 Adam 的自适应更新缩放。
    • 由于 v t v_t vt 可能因梯度大小不同而变化,每个参数的权重衰减都会被 不同程度地缩放,导致正则化不均匀。
  2. 权重衰减效果变得不稳定

    • 在 SGD(随机梯度下降)中,L2 正则化始终是 固定比例 的衰减项( λ θ t \lambda \theta_t λθt)。
    • 但在 Adam 中,L2 正则化项会随着梯度的变化而变化,导致某些参数可能衰减得 太多太少,从而影响泛化能力。
  3. 学习率调整会干扰正则化效果

    • Adam 在训练早期可能会有 较大的自适应学习率,导致 L2 正则化项的实际作用被削弱。
    • 训练后期,学习率降低时,L2 正则化项的影响可能变得更大,导致训练不稳定。

AdamW 如何解决这个问题?

AdamW 采用了一种 去耦合(Decoupled)权重衰减 方式,直接在参数更新时进行权重衰减,而不是在梯度计算时添加 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

  • 这样,权重衰减的大小不受梯度缩放的影响,可以独立控制正则化效果,保持一致性。
  • 这避免了 Adam 中权重衰减的不均匀性,使得 AdamW 比 Adam 具有 更好的泛化能力

总结

优化器权重衰减方式是否受自适应学习率影响?正则化效果
AdamL2 正则化(梯度中加 λ θ \lambda \theta λθ会受影响(梯度被缩放)不稳定,可能导致不均匀的衰减
AdamW直接在参数更新时减去 λ θ \lambda \theta λθ不会受影响(与梯度分离)更稳定,正则化效果更好

👉 结论:Adam 的 L2 正则化被 Adam 的自适应梯度缩放影响,使得正则化不稳定,而 AdamW 通过去耦合权重衰减,解决了这个问题,因此在深度学习任务中表现更优!

写在最后

本文采用了 ChatGPT 辅助进行内容的书写和完善


http://www.kler.cn/a/559776.html

相关文章:

  • Netstat(Network Statistics)网络工具介绍
  • 《游戏人工智能编程 案例精粹》阅读心得
  • 【AI】面试高频考点-数据标注规则
  • blackbox.ai 一站式AI代理 畅享顶级模型
  • Qt学习 网络编程 TPC通信
  • 激光工控机在自动化生产线中有什么关键作用?
  • Pinia 3.0 正式发布:全面拥抱 Vue 3 生态,升级指南与实战教程
  • PyTorch v2.6 Overview
  • Win10配置VSCode的C/C++编译环境
  • 【PX4日志解析报错】pyulog工具解析日志出错
  • 一文讲解Redis中的混合持久化
  • 学术论文项目网站搭建教程【Github】
  • mysql的源码包安装
  • 【杂谈】-强化学习遇见链式思维:将大型语言模型转变为自主推理代理
  • Python 函数(传递任意数量的实参)
  • jmeter 与大数据生态圈中的服务进行集成
  • 软件工程和系统分析与设计
  • 算法随笔_58: 队列中可以看到的人数
  • leetcode - hot100 - python - 专题二:双指针
  • 【STM32 基于PID的闭环电机控制系统】