在深度神经网络的参数优化中,基础的随机梯度下降(SGD)算法在每次迭代时仅依赖当前的梯度数值与固定的学习率进行参数更新。这导致了两个直接的数学问题:

  • 当目标函数的海森矩阵条件数较大时(即不同维度的梯度方差差异极大),参数更新轨迹会在高曲率维度上产生正负交替的数值振荡。
  • 所有参数共享同一个固定的学习率,算法无法根据每个参数历史更新的数值尺度进行自适应调整。

从动量梯度下降(Momentum)、RMSProp到Adam的演化,其核心线索是通过引入历史梯度的指数加权移动平均(Exponential Weighted Moving Average, EWMA),在数学上分别估计梯度的一阶矩(均值)和二阶矩(未中心化的方差),从而逐步解决上述两个问题。

以下是具体的演化过程:

1. 动量梯度下降:平滑更新方向

为了解决基础梯度下降中的正负振荡问题,Momentum算法引入了梯度的一阶矩估计。它不再仅仅依赖当前迭代步的梯度,而是将当前梯度与历史更新向量进行线性组合。

  • 数学计算: 计算一阶矩:\(m_t = \beta m_{t-1} + (1-\beta) g_t\) 参数更新:\(\theta_t = \theta_{t-1} - \alpha m_t\) (注:\(g_t\) 为当前梯度,\(\alpha\) 为学习率,\(\beta\) 为衰减常数,通常取0.9)
  • 数学机制与效果: 通过指数加权移动平均,该算法对历史梯度进行了累加。对于梯度符号频繁交替(即正负不断改变)的维度,历史梯度的累加会发生数学抵消,使得 \(m_t\) 在该维度上的绝对值减小,从而抑制了数值振荡。对于梯度符号保持一致的维度,历史数值的累加会使 \(m_t\) 的绝对值增大,从而加速该维度的参数更新。

这里的一阶矩估计是指用 [历史梯度的指数加权移动平均] 来估计梯度的一阶矩 \(E[g_t]\),也就是 \(m_t = \beta m_{t-1} + (1-\beta) g_t\) 这个式子。\(m_t\) 即为 \(E[g_t]\) 的估计值。

2. RMSProp:逐参数的自适应学习率

Momentum虽然优化了梯度的方向,但依然对所有参数维度使用相同的全局学习率 \(\alpha\)。RMSProp算法的提出是为了解决各个参数维度数值尺度不一致的问题,它引入了梯度的二阶矩估计

  • 数学计算: 计算二阶矩:\(v_t = \beta v_{t-1} + (1-\beta) g_t^2\) (其中 \(g_t^2\) 为对当前梯度的每个元素求平方) 参数更新:\(\theta_t = \theta_{t-1} - \frac{\alpha}{\sqrt{v_t} + \epsilon} \odot g_t\) (注:\(\epsilon\) 为极小的常数以防止分母为零,\(\odot\) 为逐元素乘法)
  • 数学机制与效果: RMSProp计算了历史梯度平方的指数加权平均值,并将其平方根作为参数更新的标量分母。这意味着:如果某个参数维度在历史迭代中的梯度绝对值一直很大,其对应的 \(v_t\) 也会很大,分母的增大导致该维度的实际更新幅度(有效学习率)被大幅缩减;反之,历史梯度绝对值较小的维度,其实际更新幅度会被相对放大。这使得各参数维度的更新量被数学归一化,消除了不同维度梯度数值尺度差异带来的负面影响。

这里的二阶矩估计是指用 [历史梯度的指数加权移动平均] 来估计梯度的二阶矩 \(E[g_t^2 ]\),也就是 \(v_t = \beta v_{t-1} + (1-\beta) g_t^2\) 这个式子。\(v_t\) 即为 $E[g_t^2] $ 的估计值。

对比一下 MGD 和 RMSDrop,可以发现与朴素的 SGD 相比,MGD 是把 \(g_t\) 改成 \(m_t\),对梯度做了文章;而 RMSDrop 把 \(\alpha\) 改成 \(\frac{\alpha}{\sqrt{v_t}+\epsilon}\),是对学习率做了文章。Adam 把这两个方法缝合了起来,同时对梯度和学习率做文章。

3. Adam:一阶矩与二阶矩的综合及偏差校正

Adam算法的本质是Momentum与RMSProp的数学结合,它同时使用了梯度的一阶矩(平滑方向)和二阶矩(自适应尺度),并额外引入了针对算法迭代初期的偏差校正机制

  • 数学计算: 计算一阶矩:\(m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t\) 计算二阶矩:\(v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2\) 偏差校正:\(\hat{m}_t = \frac{m_t}{1-\beta_1^t}\)\(\hat{v}_t = \frac{v_t}{1-\beta_2^t}\) 参数更新:\(\theta_t = \theta_{t-1} - \frac{\alpha}{\sqrt{\hat{v}_t} + \epsilon} \odot \hat{m}_t\)
  • 数学机制与演化意义
    1. 综合优势:Adam的参数更新分子使用了 \(\hat{m}_t\) 而不是单纯的 \(g_t\),继承了Momentum消除正负振荡的优势;分母使用了 \(\sqrt{\hat{v}_t}\),继承了RMSProp逐参数调整学习率的优势。
    2. 偏差校正(Bias Correction):在Momentum和RMSProp中,由于 \(m_0\)\(v_0\) 初始值被设定为零向量,在迭代初期(\(t\) 较小时),指数加权平均的计算结果会带有强烈的向零偏置误差。Adam通过除以 \((1-\beta^t)\),在迭代初期数学放大了一阶矩和二阶矩的估计值,严格修正了由零初始化带来的截断误差。随着 \(t\) 的增大,\((1-\beta^t)\) 趋向于1,校正项自动失效。

总结

这一演化路径是一个纯粹的数值分析优化过程。基础SGD直接使用当前梯度 \(g_t\);Momentum提取了 \(E[g_t]\)(一阶矩)以优化向量方向;RMSProp提取了 \(E[g_t^2]\)(二阶矩)以归一化各个维度的数值尺度;Adam则同步计算并校正了 \(E[g_t]\)\(E[g_t^2]\),构筑了当前深度学习中最标准的自适应优化算法框架。