趋近智
尽管前面讨论过的 Adam 优化器因其高效和有效性已成为许多深度学习任务的常用选择,但进一步分析显示其收敛性证明存在潜在问题。具体来说,使用过去梯度平方 (vt) 的指数衰减平均值不能保证此项保持非递减。在某些情况下,尤其是在训练后期,或当信息量较大的梯度出现在信息量较小的梯度之后时,vt 可能会明显减少。当此减少的值被用于参数更新步骤的分母(v^t+ϵη)时,可能导致不合需要的大步长,从而可能使优化器发散或未能收敛到最优解。
AMSGrad(改进收敛保证的自适应矩估计)被提出,旨在直接处理 Adam 收敛性分析中的这一理论缺陷。其核心思想简单而有效:确保用于缩放梯度的自适应学习率项不会随时间增加。
AMSGrad 不直接使用第二动量的当前估计值 (vt),而是保持该估计值到目前为止的最大值。我们来分解一下更新步骤:
计算梯度: 在时间步 t 计算损失函数对参数 θt 的梯度 gt。
gt=∇θL(θt)更新有偏一阶矩估计: 这与 Adam 中相同,使用超参数 β1。
mt=β1mt−1+(1−β1)gt更新有偏二阶矩估计: 这也与 Adam 中相同,使用超参数 β2。
vt=β2vt−1+(1−β2)gt2(注意:gt2 表示元素级别的平方)。
保持二阶矩估计的最大值: 这是 AMSGrad 引入的主要区别。一个新变量 v^t 记录了到时间步 t 为止遇到的 v 的最大值。
v^t=max(v^t−1,vt)初始化 v^0=0。 max 操作是按元素进行的。
计算偏差校正后的一阶矩估计: 与 Adam 相同。
m^t=1−β1tmt更新参数: 在分母中使用最大二阶矩估计值 v^t,而不是 Adam 更新中使用的偏差校正后的 v^t。请注意,在用于更新步骤的标准 AMSGrad 公式中,v^t 本身没有进行偏差校正。
θt+1=θt−v^t+ϵηm^t在这里,η 是步长(学习率),ϵ 是一个用于数值稳定的小常数。
通过确保分母项 v^t+ϵ 是非递减的,AMSGrad 防止了当 vt 意外减小时在 Adam 中可能出现的大步长,这些步长可能导致不稳定。此改进提供了更强的理论收敛保证,特别是在在线和非凸环境下。
理论上的改进能否转化为更好的实际性能?结果不一,通常取决于具体问题。
何时考虑使用 AMSGrad:
大多数深度学习框架(如 TensorFlow 和 PyTorch)在其 Adam 优化器实现中提供了 AMSGrad 作为简单的布尔标志(例如,tf.keras.optimizers.Adam(amsgrad=True) 或 torch.optim.Adam(amsgrad=True))。这使得实验变得简单。
尽管 Adam 仍然是一个非常强的基准,并且通常是首选,但 AMSGrad 提供了一个有价值的替代方案,其立足于处理 Adam 的特定理论缺陷。了解其机制和动机有助于你在调整复杂模型的优化策略时做出明智的决定。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造