【深度学习】Adam(Adaptive Moment Estimation)优化算法
概述
Adam算法结合了动量法(Momentum)和RMSProp的思想,能够自适应调整每个参数的学习率。通过动态调整每个参数的学习率,在非平稳目标(如深度神经网络的损失函数)中表现优异
目录
- 基本原理和公式
- 笼统说明:为什么Adam算法可以帮助模型找到更好的参数
基本概念
- 动量(Momentum):跟踪梯度的指数衰减平均(一阶矩),加速收敛并减少震荡。
- 自适应学习率:跟踪梯度平方的指数衰减平均(二阶矩),调整不同参数的学习率。
设模型参数为 θ \theta θ,损失函数为 J ( θ ) J(\theta) J(θ),梯度为 g t = ∇ θ J ( θ t ) g_t = \nabla_\theta J(\theta_t) gt=∇θJ(θt)。Adam 的更新步骤如下:
步骤 1:计算一阶矩(动量)
m t = β 1 ⋅ m t − 1 + ( 1 − β 1 ) ⋅ g t m_t = \beta_1 \cdot m_{t-1} + (1 - \beta_1) \cdot g_t mt=β1⋅mt−1+(1−β1)⋅gt
- 含义:对梯度做指数移动平均(EMA),保留历史梯度方向的信息。
- 作用:缓解梯度震荡,加速收敛(类似物理中的动量)。
- 超参数: β 1 \beta_1 β1(通常设为 0.9),控制历史梯度的衰减速度。
步骤 2:计算二阶矩(自适应学习率)
v t = β 2 ⋅ v t − 1 + ( 1 − β 2 ) ⋅ g t 2 v_t = \beta_2 \cdot v_{t-1} + (1 - \beta_2) \cdot g_t^2 vt=β2⋅vt−1+(1−β2)⋅gt2
- 含义:对梯度平方做指数移动平均,反映梯度的变化幅度。
- 作用:对频繁更新的参数减小学习率,对稀疏参数增大学习率。
- 超参数: β 2 \beta_2 β2(通常设为 0.999),控制梯度平方的衰减速度。
步骤 3:偏差修正(Bias Correction)
由于初始时刻
m
0
=
0
,
v
0
=
0
m_0 = 0, v_0 = 0
m0=0,v0=0,早期估计会偏向于零。Adam 通过以下修正消除偏差:
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
- 含义:随着时间步 (t) 增大,分母 1 − β t 1 - \beta^t 1−βt逐渐趋近于 1,修正早期估计的偏差。
- 作用:确保训练初期( t t t 较小时)的更新量不会过小。
步骤 4:参数更新
θ t + 1 = θ t − α ⋅ m ^ t v ^ t + ϵ \theta_{t+1} = \theta_t - \alpha \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} θt+1=θt−α⋅v^t+ϵm^t
- 含义:用修正后的动量 m ^ t \hat{m}_t m^t除以修正后的梯度平方根 v ^ t \sqrt{\hat{v}_t} v^t,再乘以学习率 α \alpha α。
- 作用:
- m ^ t \hat{m}_t m^t:提供稳定的更新方向(类似动量)。
- 1 v ^ t + ϵ \frac{1}{\sqrt{\hat{v}_t} + \epsilon} v^t+ϵ1:自适应调整学习率,抑制梯度变化大的参数的学习率。
- 超参数:
- α \alpha α:基础学习率(通常需手动调节)。
- ϵ \epsilon ϵ:极小值(如 1 0 − 8 10^{-8} 10−8),防止除以零。
为什么 Adam 能帮助模型找到更好的参数?
Adam 的有效性源于以下设计:
1. 自适应学习率
- 对每个参数独立调整学习率:梯度大的参数学习率小,梯度小的参数学习率大。
- 优势:处理稀疏梯度(如 NLP 任务)时效果显著,避免手动调节学习率的麻烦。
2. 动量机制
- 通过一阶矩 m t m_t mt 保留历史梯度方向,加速收敛并减少震荡。
- 优势:在梯度方向变化剧烈时(如鞍点附近),动量帮助参数快速通过平缓区域。
3. 偏差修正
- 修正早期估计的偏差,避免训练初期更新量过小。
- 优势:提升训练稳定性,尤其在前几个 epoch 中。
4. 鲁棒性
- 对超参数选择相对鲁棒(如 β 1 , β 2 \beta_1, \beta_2 β1,β2通常固定为 0.9 和 0.999)。
- 优势:广泛适用于不同任务(CV、NLP 等),减少调参成本。