HyperAIHyperAI

Command Palette

Search for a command to run...

ADAM:一种随机优化方法

Diederik P. Kingma Jimmy Lei Ba

摘要

我们提出了 Adam,一种用于随机目标函数一阶梯度优化的算法,其核心思想是对低阶矩进行自适应估计。该方法实现简单、计算高效、内存需求低,且对梯度的对角重缩放具有不变性,非常适合数据量和/或参数量较大的问题。该方法同样适用于非平稳目标函数以及梯度噪声极大和/或稀疏的问题。其超参数具有直观的解释,通常只需很少的调参工作。我们讨论了该算法与若干相关方法(Adam 正是受其启发)之间的联系,并分析了该算法的理论收敛性质,给出了一个收敛速率的遗憾界,该界与在线凸优化框架下已知的最佳结果相当。实验结果表明 Adam 在实际中表现优异,与其他随机优化方法相比具有明显优势。最后,我们讨论了 AdaMax,这是一种基于无穷范数的 Adam 变体。

一句话总结

阿姆斯特丹大学、OpenAI 和多伦多大学的研究人员提出 Adam,这是一种基于低阶矩自适应估计的一阶随机优化方法,计算高效、内存占用低、需要极少的超参数调优,并在带噪或稀疏梯度的大规模问题上表现良好。

核心贡献

  • 论文提出了 Adam,这是一种针对随机目标函数的计算高效的一阶优化器,使用一阶和二阶梯度矩的自适应估计,适用于大规模数据集、高维参数、非平稳目标、带噪梯度和稀疏梯度。
  • 论文分析了收敛性,并在线凸优化框架下推导出遗憾界;还解释了 Adam 与 RMSProp 和 AdaGrad 的关系,包括偏差校正如何防止在 beta_2 接近 1 时出现过大的参数更新。
  • 实验结果表明,在非凸机器学习优化问题上,Adam 比其他随机优化方法表现更好或不相上下;论文还提出了 AdaMax,这是一种基于无穷范数的变体。

引言

随机一阶优化对机器学习和科学计算至关重要,因为许多目标函数建立在大规模、带噪的数据集上,或者包含诸如 dropout 这样的正则化项。在高维参数空间中,二阶方法通常不切实际,而较早的一阶优化器存在权衡:AdaGrad 擅长处理稀疏梯度,RMSProp 适合在线或非平稳场景,但若不进行偏差校正,RMSProp 在需要稀疏梯度行为时可能产生不稳定的更新。作者提出 Adam,它利用梯度一阶矩和二阶矩的滑动估计,并带有偏差校正,以计算逐参数自适应学习率。Adam 将稀疏梯度鲁棒性与非平稳适应性结合起来,内存占用低,在大规模机器学习问题上提供了收敛分析和很强的实验性能。

方法

作者将该方法设计为一种用于最小化期望目标函数的自适应随机优化算法。设 f(θ)f(\theta)f(θ) 是关于参数 θ\thetaθ 可微的带噪标量目标函数,并假设算法观察到一系列随机实现 f1(θ),…,fT(θ)f_1(\theta), \ldots, f_T(\theta)f1​(θ),…,fT​(θ),例如通过小批量或本质上带噪的梯度估计获得。在时间步 ttt,梯度为

gt=∇θft(θ).g_t = \nabla_\theta f_t(\theta).gt​=∇θ​ft​(θ).

核心思想是维护梯度一阶矩和二阶矩的滑动估计。优化器不是仅使用原始梯度,而是通过梯度方差的估计对平滑后的梯度方向进行归一化。这会产生尺度自适应、且对带噪或稀疏梯度鲁棒的参数更新。

核心更新可以写成重复模块。优化器从 θ0\theta_0θ0​、m0=0m_0 = 0m0​=0 和 v0=0v_0 = 0v0​=0 开始,其中 mtm_tmt​ 跟踪梯度,vtv_tvt​ 跟踪梯度平方。在每一步,

gt=∇θft(θt−1),mt=β1mt−1+(1−β1)gt,vt=β2vt−1+(1−β2)gt2,m^t=mt1−β1t,v^t=vt1−β2t,θt=θt−1−αm^tv^t+ϵ^.\begin{aligned} g_t &= \nabla_\theta f_t(\theta_{t-1}), \\ m_t &= \beta_1 m_{t-1} + (1-\beta_1)g_t, \\ v_t &= \beta_2 v_{t-1} + (1-\beta_2)g_t^2, \\ \widehat{m}_t &= \frac{m_t}{1-\beta_1^t}, \\ \widehat{v}_t &= \frac{v_t}{1-\beta_2^t}, \\ \theta_t &= \theta_{t-1} - \alpha \frac{\widehat{m}_t}{\sqrt{\widehat{v}_t} + \widehat{\epsilon}}. \end{aligned}gt​mt​vt​mt​vt​θt​​=∇θ​ft​(θt−1​),=β1​mt−1​+(1−β1​)gt​,=β2​vt−1​+(1−β2​)gt2​,=1−β1t​mt​​,=1−β2t​vt​​,=θt−1​−αvt​​+ϵmt​​.​

其中,β1\beta_1β1​ 和 β2\beta_2β2​ 控制一阶矩和二阶矩估计的指数衰减率。超参数 α\alphaα 控制基础步长,ϵ^\widehat{\epsilon}ϵ 提供分母的数值稳定性。

项 mtm_tmt​ 是梯度的指数滑动平均,用作一阶矩的估计。项 vtv_tvt​ 是逐元素平方梯度的指数滑动平均,用作二阶原始矩的估计。由于两个平均值都初始化为零,其早期值会偏向零。当 β1\beta_1β1​ 或 β2\beta_2β2​ 接近 111 时,这种偏差尤其明显,因为旧值会被大幅衰减,且初始零值会持续许多步。

为了抵消这种偏差,该方法将滑动平均分别除以 1−β1t1-\beta_1^t1−β1t​ 和 1−β2t1-\beta_2^t1−β2t​。二阶矩的偏差校正可以通过将递归平均写成以下形式来理解:

vt=(1−β2)∑i=1tβ2t−igi2.v_t = (1-\beta_2)\sum_{i=1}^{t}\beta_2^{t-i}g_i^2.vt​=(1−β2​)i=1∑t​β2t−i​gi2​.

取期望得到

E[vt]≈E[gt2](1−β2t),\mathbb{E}[v_t] \approx \mathbb{E}[g_t^2](1-\beta_2^t),E[vt​]≈E[gt2​](1−β2t​),

并带有额外的偏差,当衰减率赋予非常旧的梯度很小权重时,该偏差可以保持很小。除以 1−β2t1-\beta_2^t1−β2t​ 可消除初始化偏差,并得到尺度正确的估计 v^t\widehat{v}_tvt​。同样的逻辑适用于一阶矩。

所得更新使用偏差校正后的一阶矩和偏差校正后二阶矩的平方根。有效参数变化可以看作

Δt=αm^tv^t.\Delta_t = \alpha \frac{\widehat{m}_t}{\sqrt{\widehat{v}_t}}.Δt​=αvt​​mt​​.

该比值

m^tv^t\frac{\widehat{m}_t}{\sqrt{\widehat{v}_t}}vt​​mt​​

类似于信噪比。当平滑梯度估计在近期各步保持一致时,该比值的大小可以接近 1,从而允许更大的有效移动。当梯度方向带噪或不确定时,该比值缩小,从而减小有效步长。接近最优点时,信噪比通常变得很小,这会自然地降低更新幅度。在许多实际设置下,这种行为赋予优化器一种自动退火机制,而不需要外部步长调度。

该更新还具有有界效应。在常见的 (1−β1)≤1−β2(1-\beta_1) \leq \sqrt{1-\beta_2}(1−β1​)≤1−β2​​ 情形中,有效步长大约以 α\alphaα 为上界。在更严重的稀疏情形中,一个较松的上界为

∣Δt∣≤α1−β11−β2.|\Delta_t| \leq \alpha \frac{1-\beta_1}{\sqrt{1-\beta_2}}.∣Δt​∣≤α1−β2​​1−β1​​.

这种有界步长行为会在当前参数周围形成信任域:优化器不会允许单个带噪梯度估计产生任意大的移动。由于 α\alphaα 控制参数变化的最大尺度,可以根据参数几何形状的先验知识选择其量级,例如从初始化到优质解的期望距离。

另一个重要性质是尺度不变性。如果梯度被乘以常数因子 ccc,那么 mtm_tmt​ 按 ccc 缩放,vtv_tvt​ 按 c2c^2c2 缩放。该比值

cm^tc2v^t=m^tv^t\frac{c\widehat{m}_t}{\sqrt{c^2\widehat{v}_t}} = \frac{\widehat{m}_t}{\sqrt{\widehat{v}_t}}c2vt​​cmt​​=vt​​mt​​

保持不变。因此,除了数值稳定项外,将所有梯度乘以同一个常数不会改变优化器方向或步长大小。

可以通过将偏差校正项折叠进步长来简化计算流程。可以无需分别计算 m^t\widehat{m}_tmt​ 和 v^t\widehat{v}_tvt​,而使用

αt=α1−β2t1−β1t\alpha_t = \alpha \frac{\sqrt{1-\beta_2^t}}{1-\beta_1^t}αt​=α1−β1t​1−β2t​​​

然后更新

θt=θt−1−αtmtvt+ϵ^.\theta_t = \theta_{t-1} - \alpha_t \frac{m_t}{\sqrt{v_t} + \widehat{\epsilon}}.θt​=θt−1​−αt​vt​​+ϵmt​​.

这种形式在数学上与偏差校正更新等价,同时避免主循环中的额外除法。

该方法也通过在线学习框架进行分析。给定任意凸成本函数序列 f1(θ),…,fT(θ)f_1(\theta), \ldots, f_T(\theta)f1​(θ),…,fT​(θ),算法在观察到当前成本之前选择参数 θt\theta_tθt​。性能通过相对于最佳固定参数 θ∗\theta^*θ∗ 的遗憾来衡量:

R(T)=∑t=1T[ft(θt)−ft(θ∗)].R(T) = \sum_{t=1}^{T}\left[f_t(\theta_t) - f_t(\theta^*)\right].R(T)=t=1∑T​[ft​(θt​)−ft​(θ∗)].

在梯度有界和参数移动有界的假设下,该更新规则达到 O(T)O(\sqrt{T})O(T​) 遗憾界。因此,平均遗憾满足

R(T)T=O(1T),\frac{R(T)}{T} = O\left(\frac{1}{\sqrt{T}}\right),TR(T)​=O(T​1​),

这意味着当 TTT 增大时,平均遗憾收敛到零。对于稀疏数据,自适应归一化可以优于非自适应方法,因为很少被更新的维度不应获得与频繁更新维度相同的缩放处理。

一个重要的变体来自将二阶矩归一化从基于 L2L^2L2 的量推广到基于 LpL^pLp 的量。如果将步长设为与 LpL^pLp 范数代理量成反比,则二阶矩估计量可以写成

vt=β2pvt−1+(1−β2p)∣gt∣p.v_t = \beta_2^p v_{t-1} + (1-\beta_2^p)|g_t|^p.vt​=β2p​vt−1​+(1−β2p​)∣gt​∣p.

取 ppp 趋于无穷的极限得到更简单的递归量:

ut=max⁡(β2ut−1,∣gt∣).u_t = \max(\beta_2 u_{t-1}, |g_t|).ut​=max(β2​ut−1​,∣gt​∣).

该量表现为梯度幅值的衰减运行最大值。当高阶范数推广变得数值困难时,使用这一量替代 v^t\sqrt{\widehat{v}_t}vt​​ 可以获得更稳定的变体。在这种形式中,不需要初始化偏差校正,并且有效参数更新具有更简单的界

∣Δt∣≤α.|\Delta_t| \leq \alpha.∣Δt​∣≤α.

核心训练模块还可以加入时间平均。由于随机优化会产生带噪的迭代点,对近期参数取平均常常能改善泛化能力。一个简单扩展是维护参数向量的指数滑动平均:

θˉt=β2θˉt−1+(1−β2)θt,\bar{\theta}_t = \beta_2 \bar{\theta}_{t-1} + (1-\beta_2)\theta_t,θˉt​=β2​θˉt−1​+(1−β2​)θt​,

其中 θˉ0=0\bar{\theta}_0 = 0θˉ0​=0。可以再次使用以下形式应用偏差校正:

θˉ^t=θˉt1−β2t.\widehat{\bar{\theta}}_t = \frac{\bar{\theta}_t}{1-\beta_2^t}.θˉt​=1−β2t​θˉt​​.

也可以对迭代点取均匀平均,但指数形式会赋予近期参数更多权重,并且自然地融入流式梯度优化循环。

实验

实验在逻辑回归、多层神经网络、卷积神经网络和变分自编码器上评估 Adam,并在一致调参设置下将其与动量 SGD、Adagrad、SFO 和 RMSProp 进行比较。逻辑回归实验证实,Adam 的收敛速度与动量 SGD 相当,并能有效处理稀疏特征,与 Adagrad 表现一致。在非凸深度模型上,Adam 通常训练高效,经常优于或匹敌竞争优化器;而在卷积网络中,它受益于自适应的逐层缩放以及动量带来的方差降低。偏差校正研究表明,当使用慢衰减估计时,该项能提升稳定性,使 Adam 在所测配置中至少与 RMSProp 同样强劲。


用 AI 构建 AI

从创意到上线——通过免费 AI 协同编码、开箱即用的环境和最优惠的 GPU 价格,加速您的 AI 开发。

AI 协同编码
开箱即用的 GPU
最优定价

HyperAI Newsletters

订阅我们的最新资讯
我们会在北京时间 每周一的上午九点 向您的邮箱投递本周内的最新更新
邮件发送服务由 MailChimp 提供