优化器:Adam与AdamW

Adam 和 AdamW 是两种常用的优化器,它们都是基于梯度下降算法的优化器,用于训练神经网络。它们之间的主要区别在于权重衰减(Weight Decay)的处理方式。

目录

  • Adam(Adaptive Moment Estimation)
    • 更新规则
    • 权重衰减处理
    • 动量处理
    • 超参数调整
  • AdamW(Adam with Weight Decay Fix)
    • 更新规则
    • 权重衰减处理
    • 动量处理
    • 超参数调整
  • 总结

Adam(Adaptive Moment Estimation)

更新规则

m = beta1*m + (1-beta1)*grad
v = beta2*v + (1-beta2)*(grad**2)
theta = theta - learning_rate * m / (sqrt(v) + epsilon)

可以看到,对权重衰减项没有特别的处理。

权重衰减处理

在原始的Adam优化器中,权重衰减(weight decay)是在梯度更新中直接应用的,它等价于在损失函数中添加了一个L2正则化项,用于减小权重的幅度。这意味着权重衰减对所有权重参数都是一样的。

动量处理

Adam使用了动量来加速梯度下降,它引入了两个动量参数β₁(用于一阶矩估计)和β₂(用于二阶矩估计)。这些动量参数决定了过去梯度的影响程度。

超参数调整

Adam的超参数(如学习率、β₁、β₂等)通常需要进行调整,以获得最佳性能。

AdamW(Adam with Weight Decay Fix)

更新规则

AdamW 在Adam式的基础上,对 m 项加入了权重衰减项的计算:

m = beta1*m + (1-beta1)*(grad + lambda*theta)
v = beta2*v + (1-beta2)*(grad**2) 
theta = theta - learning_rate * m / (sqrt(v) + epsilon)

这里 lambda 是权重衰减系数。
这相当于在梯度之外,额外考虑了一个 L2 范数正则化目标。这样可以更好地减小权重参数值,提高模型的泛化能力。

权重衰减处理

AdamW是对Adam的改进,它将权重衰减与梯度更新分开处理。具体来说,权重衰减只应用于权重参数,而不应用于偏置参数。这是通过在损失函数中添加一个额外的L2正则化项来实现的,而不是直接应用于梯度更新。

动量处理

AdamW仍然使用动量,与Adam一样,它使用β₁和β₂参数来调整动量的影响。

超参数调整

与Adam类似,AdamW的超参数(如学习率、β₁、β₂等)也需要进行调整,以获得最佳性能。

总结

AdamW的改进主要在于更好地处理了权重衰减。这有助于避免权重衰减对偏置参数的不必要影响,因此可以提高模型的训练效果。然而,选择使用哪种优化器取决于具体的任务和模型,通常需要进行实验来确定哪种优化器最适合您的情况。

你可能感兴趣的:(深度学习,人工智能,深度学习,算法,性能优化)