文章目录
- 1. Adam 优化器的基本介绍
- 2. Adam的权重衰减问题
- 3. AdamW的提出与公式
- 4. AdamW的优势
- 5. AdamW在LLaMA中的应用
- 总结
🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发,目前开始人工智能领域相关知识的学习
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹
Adam在之前“梯度下降优化方式”有提过:https://xzl-tech.blog.csdn.net/article/details/140760035
AdamW是一个在深度学习中广泛应用的优化器,它是经典Adam优化器的一个变体,专门为了解决Adam在权重衰减(Weight Decay)方面的问题而提出。
AdamW最早由Loshchilov and Hutter在他们的论文《Decoupled Weight Decay Regularization》中提出,它结合了Adam的自适应学习率和L2正则化的优势,解决了Adam中错误使用权重衰减的问题。
AdamW 是 LLaMA 等大型语言模型在训练中使用的标准优化器,它改进了Adam的权重衰减机制,使得模型在训练时更加稳定,特别是在处理大规模数据和复杂任务时表现得更为优越。
1. Adam 优化器的基本介绍
Adam(Adaptive Moment Estimation)是一种流行的优化算法,基于动量法(Momentum)和RMSProp的结合。它通过计算梯度的一阶矩(动量)和二阶矩(梯度平方的指数加权平均)来动态调整每个参数的学习率。
Adam优化器的核心公式如下:
- 一阶动量估计(梯度的移动平均):
m t = β 1 m t − 1 + ( 1 − β 1 ) g t m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t mt=β1mt−1+(1−β1)gt
其中, m t m_t mt是梯度的一阶动量, β 1 \beta_1 β1是动量衰减率,通常取值为0.9。 - 二阶动量估计(梯度平方的移动平均):
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=β2vt−1+(1−β2)gt2
其中, v t v_t vt是梯度平方的二阶动量, β 2 \beta_2 β2是动量平方的衰减率,通常取值为0.999。 - 偏差校正:
m t ^ = m t 1 − β 1 t , v t ^ = v t 1 − β 2 t \hat{m_t} = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v_t} = \frac{v_t}{1 - \beta_2^t} mt^=1−β1tmt,vt^=1−β2tvt
Adam通过偏差校正,解决了在初期时一阶和二阶动量估计的偏差问题。 - 参数更新:
θ t = θ t − 1 − η v t ^ + ϵ m t ^ \theta_t = \theta_{t-1} - \frac{\eta}{\sqrt{\hat{v_t}} + \epsilon} \hat{m_t} θt=θt−1−vt^+ϵηmt^
其中, η \eta η是学习率, ϵ \epsilon ϵ是为了防止除零错误的一个小常数,通常取值为 1 0 − 8 10^{-8} 10−8。
2. Adam的权重衰减问题
Adam的一个问题是它将 L2正则化(L2 regularization) 错误地作为权重衰减的一部分。在标准的梯度下降法(如SGD)中,L2正则化的公式如下:
θ = θ − η ( ∇ L ( θ ) + λ θ ) \theta = \theta - \eta (\nabla L(\theta) + \lambda \theta) θ=θ−η(∇L(θ)+λθ)
其中, λ θ \lambda \theta λθ是权重衰减项(L2正则化项)。这种方法能够有效防止模型参数过拟合。然而在Adam中,L2正则化和Adam的动量更新机制耦合在了一起,导致了不理想的正则化效果。
3. AdamW的提出与公式
AdamW通过将权重衰减与梯度更新解耦,解决了Adam在权重衰减方面的缺陷。它将权重衰减独立处理,而不再作为Adam优化器更新的一部分。这使得模型在参数更新时可以保持更高的稳定性,并且防止过拟合。
AdamW的参数更新公式如下:
- 动量和二阶矩的计算(与Adam相同):
m t = β 1 m t − 1 + ( 1 − β 1 ) g t m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t mt=β1mt−1+(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=β2vt−1+(1−β2)gt2 - 参数更新:
θ t = θ t − 1 − η ( m t ^ v t ^ + ϵ + λ θ t − 1 ) \theta_t = \theta_{t-1} - \eta \left(\frac{\hat{m_t}}{\sqrt{\hat{v_t}} + \epsilon} + \lambda \theta_{t-1}\right) θt=θt−1−η(vt^+ϵmt^+λθt−1)
其中:- m t ^ v t ^ + ϵ \frac{\hat{m_t}}{\sqrt{\hat{v_t}} + \epsilon} vt^+ϵmt^是Adam的梯度更新部分。
- λ θ t − 1 \lambda \theta_{t-1} λθt−1是独立的权重衰减项,与梯度更新无关。
通过这种方式,AdamW能够更好地控制权重衰减,防止模型过拟合,而不影响优化器的动量和自适应学习率更新。
4. AdamW的优势
相比于传统的Adam,AdamW 具有以下优势:
- 更准确的权重衰减:AdamW将权重衰减与梯度更新解耦,避免了Adam优化器中的错误正则化处理。这样可以有效防止模型的参数过度增长,并提高泛化能力。
- 更好的正则化效果:由于权重衰减项是独立处理的,AdamW能够更有效地施加L2正则化,尤其在大模型(如LLaMA等)训练中表现更为稳定。
- 提高模型的泛化能力:通过更好的权重控制,AdamW能够在不影响优化过程的前提下提升模型在测试集上的表现,减少过拟合问题。
5. AdamW在LLaMA中的应用
LLaMA 模型在训练中采用了 AdamW 优化器,其关键优势在于:
- 稳定的参数更新:LLaMA 模型需要训练大量的参数,AdamW 能够提供稳定且自适应的学习率调整,确保模型在每一轮更新中能够适应不同层的学习需求。
- 独立的权重衰减:AdamW 的权重衰减机制在防止 LLaMA 模型过拟合上发挥了重要作用。特别是在训练大规模数据集时,独立的L2正则化能够使模型的每一层参数保持平衡,减少训练过程中的不稳定性。
- 良好的收敛性:通过AdamW的动量和自适应调整,LLaMA模型在训练过程中能够更快地收敛,且保持更好的泛化能力。这对于需要处理大量数据和复杂语言任务的模型来说,尤为重要。
总结
AdamW 是一种结合了 Adam 自适应优化器和准确的权重衰减策略的优化算法,通过将权重衰减与梯度更新解耦,它解决了传统 Adam 中正则化不准确的问题。AdamW 在大规模模型(如 LLaMA)训练中的表现尤为优越,能够稳定参数更新、提高模型的泛化能力,并避免过拟合问题。