趋近智
随机梯度下降 (gradient descent)(SGD)及其变体(如Momentum)通常使用单一学习率来控制神经网络 (neural network)中所有参数 (parameter)的更新步骤。尽管学习率调度等方法可以随时间调整此全局速率,但它们没有考虑到不同参数可能需要不同更新幅度这一情况。设想一个稀疏特征的场景:一些与稀有特征相关的参数可能只偶尔接收到有用的梯度,而频繁特征的参数则持续接收更新。统一的学习率对于不频繁的参数可能过小,无法有效训练;对于频繁的参数则可能过大,导致不稳定。
AdaGrad(自适应梯度算法)优化器通过为每个参数维护一个根据该参数梯度历史进行调整的学习率来解决此问题。其思路简单明了:频繁遇到大梯度的参数,其学习率应被降低以避免超调;而与不频繁更新(以及历史上可能较小梯度)相关的参数,应保持较大的学习率以利于训练。
AdaGrad通过累积每个参数 (parameter)在所有先前时间步的梯度平方来实现这种调整。设是目标函数在时间步时对参数的梯度。AdaGrad为每个参数维护一个状态变量,我们称之为,它是截至时间步时对的梯度平方和。
的更新规则是:
通常,被初始化为零。这个值表示为参数累积的历史梯度信息。
更新实际参数时,AdaGrad通过将全局学习率除以累积和的平方根来修改标准梯度下降 (gradient descent)更新。分母中会加上一个小的常数(epsilon,例如)以保持数值稳定性,避免除以零,尤其是在可能为零的初始步骤。
参数在时间步的更新是:
我们来分解一下:
请注意,每个参数的有效学习率,即,是动态变化的。如果一个参数持续收到大梯度,将快速增长,导致该参数的有效学习率下降。相反,如果一个参数收到小梯度或不频繁的梯度,将缓慢增长,有效学习率将保持相对较高。
实践中,这些操作在向量和矩阵上按元素进行。如果表示时间步时所有参数 (parameter)的向量,是梯度向量,是累积梯度元素平方的向量,则更新规则为:
其中表示按元素乘法,平方根和的加法也是按元素应用的。
尽管有创新,AdaGrad有一个重要的属性需要记住:梯度平方的累积和只随时间增长。由于出现在分母中,每个参数 (parameter)的有效学习率在训练过程中会单调递减。在某些情况下,这种衰减可能变得过于剧烈,导致学习率收缩到接近零,从而过早地停止训练。这一局限性促使了后续自适应算法(如RMSprop和Adam)的发展,我们接下来会介绍它们。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•