AdamW优化器是Adam优化器的一个变体,它在Adam的基础上引入了权重衰减(Weight Decay),并且将权重衰减与参数更新步骤解耦。以下是AdamW优化器的详细公式及参数解释:
1. AdamW优化器的更新步骤
AdamW优化器的更新步骤包括以下几个关键部分:
-
计算梯度:
其中,( g_t ) 是在时间步 ( t ) 的梯度,( L ) 是损失函数,( \theta_t ) 是当前参数.
g t = ∇ θ L ( θ t ) g_t = \nabla_\theta L(\theta_t) gt=∇θL(θt)其中,( g_t ) 是在时间步 ( t ) 的梯度,( L ) 是损失函数,( \theta_t ) 是当前参数.
-
一阶矩估计(动量):
其中,( m_t ) 是一阶矩估计,( \beta_1 ) 是一阶矩的衰减率,通常设置为0.9。
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 ) 是一阶矩估计,( \beta_1 ) 是一阶矩的衰减率,通常设置为0.9。 -
二阶矩估计:
其中,( v_t ) 是二阶矩估计,( \beta_2 ) 是二阶矩的衰减率,通常设置为0.999。
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 ) 是二阶矩估计,( \beta_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} m^t=1−β1tmt,v^t=1−β2tvt偏差校正是为了消除初始值对矩估计的影响。
-
参数更新:
其中,( \alpha ) 是学习率,( \epsilon ) 是一个小常数,用于防止除零,( \lambda ) 是权重衰减系数。
θ t + 1 = θ t − α v ^ t + ϵ m ^ t − λ θ t \theta_{t+1} = \theta_t - \frac{\alpha}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t - \lambda \theta_t θt+1=θt−v^t+ϵαm^t−λθt其中,(
α \alpha α
) 是学习率,(
ϵ \epsilon ϵ
) 是一个小常数,用于防止除零,(
λ \lambda λ
) 是权重衰减系数。
2. 参数解释
- 学习率(lr):控制参数更新步长的大小,通常设置为 ( 2 \times 10^{-5} ) 或其他较小的值。
- 一阶矩衰减率(beta1):用于控制一阶矩估计的平滑程度,通常设置为0.9。
- 二阶矩衰减率(beta2):用于控制二阶矩估计的平滑程度,通常设置为0.999。
- 小常数(epsilon):用于防止除零操作,通常设置为 ( 1 \times 10^{-8} ) 。
- 权重衰减系数(weight_decay):用于正则化,防止模型过拟合,通常设置为0.01。
3. 学习率调度器
学习率调度器用于在训练过程中调整学习率,以帮助模型更好地收敛。线性调度器(Linear Scheduler)是一种常用的学习率调度器,其基本思路是:
- 预热阶段:在训练初期,学习率从一个较小的值逐渐增加到设定的学习率,以帮助模型更好地收敛.
- 衰减阶段:在训练后期,学习率逐渐减小,以避免过度调整参数。
通过结合AdamW优化器和学习率调度器,可以在训练过程中更好地控制模型的学习过程,提高模型的性能和稳定性.