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