文章目录

为什么AdaGrad学习率会越来越小:历史梯度平方累积

发布于 2026-07-06 00:37:06 · 浏览 45 次 · 评论 0 条

为什么AdaGrad学习率会越来越小:历史梯度平方累积

理解 AdaGrad的核心机制,关键在于其计算公式中的历史梯度平方累积项。这个累积项只增不减,直接导致了用于调整参数的步长(学习率)会随着时间推移而持续变小。


1. 理解AdaGrad的“累积”行为

  1. 观察 普通梯度下降法的学习率(步长)是固定的或按固定规则衰减的。它对所有参数“一视同仁”,使用相同的学习率进行更新。

  2. 认识 AdaGrad(Adaptive Gradient)是一种自适应学习率优化器。它的核心创新在于:为每个参数计算一个独立的学习率

  3. 分析 这个独立学习率的计算,依赖于该参数历史梯度的平方和。具体来说,在训练的第 t 步,参数 θ 的学习率会变为一个非常小的数除以它所有过去梯度平方的累加和的平方根


2. 揭示数学表达与衰减本质

AdaGrad的参数更新公式直接体现了这一点。假设在时刻 t,对于参数 θ_i

  1. 计算 其当前的梯度 $g_{t,i} = \nabla_{\theta} J(\theta_i)$。

  2. 累积 将该梯度的平方 $g_{t,i}^2$ 累加 到一个历史变量 $G_t$ 中:$G_t = G_{t-1} + g_{t,i}^2$。这里的 $G_t$ 是一个对角矩阵,存储了每个参数从开始到当前时刻所有梯度的平方和。

  3. 更新 参数 $\theta_i$。更新规则为:
    $$\theta_{t+1, i} = \theta_{t, i} - \frac{\eta}{\sqrt{G_{t,i}} + \epsilon} \cdot g_{t,i}$$

    • 其中 $\eta$ 是全局初始学习率,$\epsilon$ 是一个防止除零的极小常数。
    • 关键项 是 $\frac{1}{\sqrt{G_{t,i}}}$。因为 $G_{t,i}$ 是历史梯度平方的累积和,随着训练步数 t 的增加,$G_{t,i}$ 的值单调不减
  4. 得出结论:由于分母 $\sqrt{G_{t,i}}$ 只会变大或保持不变,分子 $\eta$ 是常数,所以 $\frac{\eta}{\sqrt{G_{t,i}} + \epsilon}$ 这个实际的学习率会越来越小


3. 分步解析学习率为何必然变小

  1. 累积起始:训练初期,$G_{t,i}$ 从零(或一个很小的值)开始累积。
  2. 持续增长:只要参数 θ_i 在某一步的梯度不为零(这在训练中几乎总会发生),$g_{t,i}^2$ 就会是一个正数。将它加到 $G_{t-1,i}$ 上,就使得 $G_{t,i}$ 大于 $G_{t-1,i}$。
  3. 分母放大:$G_{t,i}$ 增大,导致其平方根 $\sqrt{G_{t,i}}$ 也增大。
  4. 步长收缩:更新公式中用这个增大的值去除初始学习率 $\eta$,得到的实际步长 $\frac{\eta}{\sqrt{G_{t,i}} + \epsilon}$ 自然就变小了
  5. 长期效应:在整个训练过程中,这个“累积-除法”的循环不断进行,因此对于任何一个历史梯度频繁不为零的参数,其有效学习率会持续下降

4. 观察这种设计的双刃剑效应

  1. 识别优点

    • 自动调参:对于梯度稀疏或幅度变化大的参数(如嵌入层),AdaGrad会自动降低其学习率,防止因个别大梯度导致更新过猛,从而提升训练稳定性
    • 简化调参:减少了手动调整每个参数学习率的麻烦。
  2. 识别缺点(即学习率单调递减的根本影响)

    • 后期停滞:训练后期,$G_{t,i}$ 可能变得非常巨大,导致学习率 η/√G 衰减到接近于零。这会使参数几乎停止更新,导致训练过早地在收敛到最优解前陷入停滞。
    • 对初始值敏感:如果初始梯度 $g_{1,i}$ 非常大,会立即使 $G_{1,i}$ 很大,从而压制后续所有更新,可能导致学习速度从开始就非常缓慢。

5. 在实践中如何应对学习率衰减

  1. 识别问题:如果在训练曲线中观察到损失函数在中后期几乎不再下降,可能就是AdaGrad学习率衰减过度的表现。
  2. 考虑替代:许多后续优化算法(如RMSProp, Adam)改进了这一机制。它们不使用全部历史梯度平方的累积和,而是使用一个指数衰减移动平均来计算梯度平方的累积项。
    • 关键区别:移动平均会逐渐遗忘很久以前的梯度信息,从而避免了 $G_t$ 无限增长的问题,使学习率能够保持一个不会趋近于零的水平。
  3. 选择策略:在大多数标准神经网络训练任务中,Adam或RMSProp因其能保持更稳定的学习率而被更广泛地使用。AdaGrad则更适用于某些梯度非常稀疏的特定问题(如自然语言处理中的词嵌入训练)。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文