【深度学习】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 辅助进行内容的书写和完善

### AdamW优化器的工作原理 AdamW是一种用于训练神经网络其他机器学习模型的梯度下降优化算法。该方法结合了AdaGrad处理稀疏梯度的优势以及RMSProp应对平稳区域的能力,同时还解决了权重衰减(L2正则化)在原始Adam优化器中存在的问题。 #### 权重更新机制 AdamW通过引入偏置校正项来改进传统的动量SGD自适应学习率的方法。具体来说,在每次迭代过程中,参数θ按照下述规则进行调整: \[ \theta_{t} := \theta_{t-1} - \eta_t \cdot m_t / (\sqrt{v_t}+\epsilon) \] 其中\(m_t\)表示一阶矩估计值,而\(v_t\)代表二阶未中心化的矩估计;\(\eta_t\)为时间步长的学习速率;\(\epsilon\)是一个非常小的数以防止除零错误[^4]。 对于AdamW而言,特别之处在于它将权重衰减独立应用于每个参数上而不是像标准Adam那样将其融入到梯度计算之中。这意味着即使当批量大小变化时也能保持一致的行为模式,并有助于提高泛化能力。 #### 实现方式 下面给出了一段Python代码片段展示如何使用Keras库中的`AdamW`优化器实例化并编译一个简单的分类模型: ```python from tensorflow.keras.optimizers import AdamW model.compile( loss='categorical_crossentropy', optimizer=AdamW(learning_rate=0.001, weight_decay=0.01), metrics=['accuracy'] ) trained_model = model.fit( x_train, y_train, epochs=10, batch_size=32, validation_data=(x_test, y_test) ) ``` 此代码展示了设置损失函数、评估指标以及定义训练过程的相关超参数的方式。值得注意的是这里选择了交叉熵作为多类别分类任务下的损失函数,并指定了AdamW作为优化策略之一[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuasyYi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值