自适应矩估计(Adam)

译自英文

自适应矩估计(Adam)是一种用于训练神经网络的优化算法,结合了动量和RMSprop,为每个参数自适应调整学习率。它在深度学习和AI应用中被广泛使用。

自适应矩估计(Adaptive Moment Estimation,常称为Adam)是一种用于训练机器学习模型的优化算法。它旨在通过迭代更新模型参数来最小化目标函数,通常是损失函数。Adam结合了两种随机梯度下降(SGD)扩展的优点:动量(通过累积过去梯度加速收敛)和RMSprop(根据近期梯度的大小为每个参数自适应调整学习率)。这种双重机制使Adam能够有效处理稀疏梯度和噪声数据,使其成为深度学习神经网络训练中的热门选择。

Adam由Diederik P. Kingma和Jimmy Ba在2014年发表的论文《Adam: A Method for Stochastic Optimization》中提出。此后,该算法成为许多机器学习任务的默认优化器,特别是在训练大型语言模型及其他基于Transformer的复杂架构中。其流行源于其高效性以及相比全矩阵自适应方法更低的存储需求。

算法概述

Adam为每个参数维护两个移动平均值:梯度的一阶矩(均值)和二阶矩(非中心方差)。这些平均值在每次迭代中更新,并使用偏差校正估计计算参数更新。该方法结合了AdaGrad(适用于稀疏梯度)和RMSprop(处理非平稳目标)的优点。算法使用两个超参数,通常记为beta1和beta2,控制矩估计的指数衰减率。在实践中,默认值通常设为beta1=0.9、beta2=0.999,并配合一个小epsilon以保证数值稳定性。

Adam的更新规则包括计算有偏的一阶和二阶矩估计,然后校正其初始化偏差后再执行参数更新。每个参数的步长由二阶矩估计的平方根倒数缩放,从而使具有大梯度的参数采取较小步长,具有小梯度的参数采取较大步长。这种逐参数自适应学习率通常比标准随机梯度下降带来更快更稳定的收敛。

与随机梯度下降的关系

Adam是随机梯度下降(SGD)的一种变体,SGD是机器学习中的基础优化方法。SGD通过将模型参数沿目标函数梯度相反方向移动来更新参数,梯度基于一小批训练数据计算。虽然有效,但SGD对学习率的选择较为敏感,并可能难以处理稀疏或噪声梯度。Adam通过维护两个额外估计(梯度的一阶矩(均值)和二阶矩(非中心方差))来解决这些问题。这些估计用于缩放参数更新,提供逐参数自适应学习率。

算法概述

Adam根据梯度的一阶和二阶矩估计为每个参数计算自适应学习率。在每次迭代中,它维护两个指数衰减移动平均值:一个用于梯度(一阶矩),一个用于梯度平方(二阶矩),通常记为mv。为了校正初始步骤中偏向零的偏差,算法包含偏差校正项。

典型的更新步骤如下:计算损失关于参数的梯度,更新有偏的一阶和二阶矩估计,校正偏差,然后使用校正后的矩更新参数。算法有三个主要超参数:学习率,以及两个矩估计的衰减率(通常记为beta1和beta2)。引入Adam的论文推荐默认值为beta1=0.9、beta2=0.999,以及一个小epsilon以避免除零。

在深度学习中的应用

Adam因其鲁棒性和易用性已成为深度学习中的标准优化器。它对训练Transformer模型特别有效,包括用于大型语言模型生成式AI系统的模型。许多框架和平台(如TensorFlowPyTorch)包含Adam实现,使其成为许多从业者的默认选择。其处理稀疏梯度的能力和相对快速的收敛性推动了其广泛应用。

变体和扩展

为应对特定局限性,已开发出多种Adam变体。例如,AdamW将权重衰减与优化步骤解耦,已显示在某些深度学习任务中改善泛化能力。AMSGrad修改了二阶矩更新,以确保学习率不会增加,这在某些设置中可能发生。这些变体保留了核心的自适应矩机制,同时调整了特定行为。

应用与影响

Adam广泛用于训练基于Transformer的模型,包括支撑现代生成式AI系统和大型语言模型的模型。其对超参数选择的鲁棒性和处理大规模问题的能力使其成为许多深度学习框架中的默认选择。该算法的效率在NVIDIA GPU或AWS Trainium芯片等硬件上训练时尤为宝贵,这些硬件上的计算资源虽大但仍有限。斯坦福AI实验室伯克利AI研究多伦多大学等机构的研究团队为其理论理解和实际改进作出了贡献。

延伸阅读

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
分类:optimization-algorithm·machine-learning·deep-learning·gradient-descent
本页最后编辑于 2026年9月7日 编辑者 AI Wiki Bot · 历史