趋近智
机器学习中的优化算法通常根据梯度的矩来调整学习率。一些方法,如RMSprop,仅使用梯度的二阶矩来调整学习率。另一些方法,如动量(Momentum),则使用一阶矩来构建速度。由此引出一个自然的问题:能否将两者的优点结合起来?我们能否拥有一种算法,它既能利用动量在梯度方向一致时加速收敛,又能根据每个参数梯度的历史大小调整步长?Adam优化器对此给出了肯定的答案,并已成为深度学习中最常用的优化算法之一。
Adam,即自适应矩估计(Adaptive Moment Estimation)的简称,通过跟踪过去梯度(一阶矩)和过去梯度平方(二阶矩)的指数衰减平均值,为每个参数计算自适应学习率。
我们来细看Adam的运作机制。在每个时间步 t,当参数为 θt 且损失函数为 J(θ) 时,Adam执行以下步骤:
计算梯度: 计算损失函数对当前参数的梯度: gt=∇θJ(θt)
更新有偏一阶矩估计: 更新梯度的移动平均值(一阶矩估计)。这类似于动量更新,但使用由超参数 β1 控制的指数移动平均。 mt=β1mt−1+(1−β1)gt 这里,mt 是梯度平均值的估计。β1 的常用值通常接近1,例如0.9。
更新有偏二阶矩估计: 更新梯度平方的移动平均值(二阶原点矩估计)。这类似于RMSprop中的更新,使用由超参数 β2 控制的指数移动平均。 vt=β2vt−1+(1−β2)gt2 这里,vt 估计梯度的未中心化方差(gt2 使用逐元素平方)。β2 通常也接近1,例如0.999。
计算偏差校正后的一阶矩估计: 矩估计 mt 和 vt 被初始化为零向量。这种初始化会引入对零的偏置,尤其是在初始时间步。Adam通过计算偏差校正后的估计来纠正此偏置: m^t=1−β1tmt 随着 t 增加,偏差校正项 1−β1t 接近1,使得校正作用减弱。
计算偏差校正后的二阶矩估计: 类似地,校正二阶矩估计中的偏置: v^t=1−β2tvt 项 1−β2t 用于校正二阶矩估计的偏置。
更新参数: 最后,更新参数。更新规则使用偏差校正后的一阶矩估计 m^t(类似于动量),并将其除以偏差校正后的二阶矩估计 v^t 的平方根(类似于RMSprop),从而实现了每个参数的学习率缩放。 θt+1=θt−ηv^t+ϵm^t 这里,η 是学习率(步长),ϵ 是一个很小的常数(例如 10−8),用于数值稳定性,以防止当 v^t 非常接近零时出现除以零的情况。
Adam引入了几个超参数:
Adam的一个吸引人之处在于,其默认超参数值通常在多种问题上表现良好,与一些其他优化器相比,减少了大量调优的需求。
Adam有效地结合了在RMSprop和动量中观察到的优点:
Adam计算效率高,内存开销小(只需存储与参数大小相同的一阶和二阶矩向量),并且通常很适合处理具有大数据集和高维参数空间的问题,这在深度学习中很常见。
了解Adam与其他已讨论的算法的关系会很有帮助:
Adam可以看作是RMSprop(根据二阶矩处理自适应缩放)和动量(利用一阶矩指导方向)的一种精巧结合,并增加了偏差校正机制,以提高优化初期阶段的稳定性。其广泛应用源于其在各种机器学习任务中的强大经验表现,尤其是在训练深度神经网络方面。尽管后续章节将讨论像AMSGrad这样解决Adam可能存在的特定收敛问题的变体,但原始的Adam算法仍然是一种基本且高效的优化技术。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造