1. 引言

在本篇文章中,我们将深入探讨 ADAM(Adaptive Moment Estimation)优化算法。它是目前训练机器学习模型最常用的优化算法之一,尤其在深度学习领域应用广泛。

2. 机器学习中的优化问题

在训练神经网络和支持向量机等模型时,我们的目标是找到一组参数,使得损失函数(cost function)最小化。损失函数衡量了模型预测值与真实标签之间的偏差。

多年来,研究者提出了多种优化算法:

  • 随机梯度下降(SGD):使用小批量(mini-batch)数据计算梯度并更新参数;
  • 动量法(Momentum):引入动量项,利用历史梯度方向加速收敛;
  • 自适应学习率算法:根据梯度历史动态调整学习率,如 AdaGrad、RMSProp 等。

ADAM 结合了上述所有优点,它不仅使用小批量梯度更新,还结合了动量和自适应学习率机制,因此在实际应用中表现出色。

3. ADAM 算法详解

ADAM 的核心特性包括:

✅ 小批量梯度更新
✅ 自适应动量(Adaptive Momentum)
✅ 自适应学习率(Adaptive Learning Rate)
✅ 偏差校正(Bias Correction)

3.1. 自适应动量(Momentum)

设当前迭代为第 $ t $ 轮,参数向量为:

$$ \theta^{(t)} = \begin{bmatrix} \theta_1^{(t)} \ \theta_2^{(t)} \ \ldots \ \theta_n^{(t)} \end{bmatrix} $$

对应的梯度为:

$$ g^{(t)} = \begin{bmatrix} g_1^{(t)} \ g_2^{(t)} \ \ldots \ g_n^{(t)} \end{bmatrix} $$

在标准的 SGD 中,参数更新方式为:

$$ \theta^{(t+1)} = \theta^{(t)} - \alpha^{(t)} g^{(t)} $$

其中 $ \alpha^{(t)} $ 是学习率,通常会随着训练轮数衰减。

而 ADAM 不仅考虑当前梯度,还结合了历史梯度信息,定义动量项 $ s^{(t)} $ 为:

$$ s^{(t)} = \beta_1 s^{(t-1)} + (1 - \beta_1) g^{(t)} $$

其中 $ \beta_1 $ 是动量衰减因子,通常取值为 0.9。这个公式可以看作是历史梯度的加权平均,越早的梯度权重越小。

3.2. 偏差校正(Bias Correction)

由于动量 $ s^{(t)} $ 初始为 0,前几轮的估计值会有偏差。为了修正这一点,ADAM 引入了偏差校正机制:

$$ \hat{s}^{(t)} = \frac{s^{(t)}}{1 - \beta_1^t} $$

同理,对于梯度的二阶矩估计(见下节)也做类似处理:

$$ \hat{r}^{(t)} = \frac{r^{(t)}}{1 - \beta_2^t} $$

这样可以避免初始阶段估计值偏小的问题。

3.3. 自适应学习率(Adaptive Learning Rate)

ADAM 的另一个关键点是为每个参数分配不同的学习率。其核心思想是:如果某个参数在训练过程中更新频率较低,就给予更高的学习率

ADAM 使用梯度平方的指数加权平均来估计每个参数的梯度方差:

$$ r^{(t)} = \beta_2 r^{(t-1)} + (1 - \beta_2) (g^{(t)} \odot g^{(t)}) $$

其中 $ \odot $ 表示按元素相乘。

最终的参数更新公式为:

$$ \theta^{(t+1)} = \theta^{(t)} - \epsilon \frac{\hat{s}^{(t)}}{\sqrt{\hat{r}^{(t)}} + \delta} $$

其中:

  • $ \epsilon $ 是步长(step size),通常设为 0.001;
  • $ \delta $ 是一个很小的常数(例如 $ 10^{-8} $),防止除以零。

3.4. 伪代码

下面是 ADAM 的标准伪代码(来自《Deep Learning》一书):

ADAM 伪代码

终止条件可以是:

  • 达到最大迭代次数;
  • 参数更新变化小于某个阈值;
  • 损失函数变化趋于平稳。

4. 总结

ADAM 是一种结合了动量法和自适应学习率机制的优化算法,广泛应用于深度学习中。它通过以下方式提升训练效率:

  • 使用动量项加速收敛;
  • 对每个参数独立调整学习率;
  • 引入偏差校正机制,避免初始阶段估计偏差;
  • 支持小批量梯度更新,兼顾训练速度与稳定性。

虽然 ADAM 并非在所有场景下都最优,但在大多数实际任务中表现优异,是目前深度学习训练的默认选择之一。


原始标题:ADAM Optimizer