Adam: 一种随机优化方法
Diederik P. Kingma
阿姆斯特丹大学, OpenAI
dpkingma@openai.com
Jimmy Lei Ba
多伦多大学
jimmy@psi.utoronto.ca
脚注1: 贡献相等。作者顺序通过Google Hangout上的抛硬币决定。
摘要
我们介绍了Adam,一种基于自适应低阶矩估计的随机目标函数的一阶梯度优化算法。该方法实现简单,计算效率高,内存需求小,对梯度的对角缩放具有不变性,并且非常适合数据和/或参数规模较大的问题。该方法还适用于非平稳目标和梯度非常嘈杂和/或稀疏的问题。超参数具有直观的解释,通常需要很少的调整。讨论了与Adam相关的算法的一些联系。我们还分析了算法的理论收敛性,并提供了一个与在线凸优化框架下已知最佳结果相当的收敛率遗憾界。实证结果表明,Adam在实践中表现良好,并且优于其他随机优化方法。最后,我们讨论了AdaMax,一种基于无穷范数的Adam变体。
1 引言
基于梯度的随机优化在科学和工程的许多领域中具有核心的实际重要性。这些领域中的许多问题可以归结为对某些标量参数化目标函数的优化,需要对其参数进行最大化或最小化。如果函数相对于其参数是可微的,梯度下降是一种相对高效的优化方法,因为对所有参数的一阶偏导数的计算与仅评估函数的计算复杂度相同。通常,目标函数是随机的。例如,许多目标函数由在不同数据子样本上评估的子函数之和组成;在这种情况下,通过对单个子函数进行梯度步骤(即随机梯度下降(SGD)或上升)可以使优化更加高效。SGD已被证明是一种高效且有效的优化方法,在许多机器学习的成功案例中发挥了核心作用,例如深度学习的最新进展(Deng等,2013;Krizhevsky等,2012;Hinton & Salakhutdinov,2006;Hinton等,;Graves等,2013)。目标函数也可能具有除数据子采样之外的其他噪声源,例如dropout(Hinton等,)正则化。对于所有这些噪声目标,需要高效的随机优化技术。本文的重点是优化具有高维参数空间的随机目标函数。在这些情况下,高阶优化方法不适用,本文的讨论将仅限于一阶方法。
我们提出了Adam,一种高效的随机优化方法,仅需要一阶梯度且内存需求小。该方法通过梯度的一阶和二阶矩估计为不同参数计算个体自适应学习率;Adam的名称来源于自适应矩估计。我们的方法旨在结合两种最近流行方法的优点:AdaGrad(Duchi等,2011),适用于稀疏梯度,以及RMSProp(Tieleman & Hinton,2012),适用于在线和非平稳设置;在第5节中澄清了与这些和其他随机优化方法的重要联系。Adam的一些优点是参数更新的幅度对梯度的缩放具有不变性,其步长大致由步长超参数限制,它不需要平稳目标,适用于稀疏梯度,并且自然地执行一种步长退火。
2 算法
参见算法1中我们提出的算法Adam的伪代码。设f(θ)f(\theta)f(θ)为一个噪声目标函数:一个关于参数θ\thetaθ可微的随机标量函数。我们感兴趣的是最小化该函数的期望值E[f(θ)]\mathbb{E}[f(\theta)]E[f(θ)]关于其参数θ\thetaθ。用f1(θ),...,fT(θ)f_{1}(\theta),...,f_{T}(\theta)f1(θ),...,fT(θ)表示在后续时间步1,...,T1,...,T1,...,T处随机函数的实现。随机性可能来自对数据点的随机子样本(小批量)的评估,或来自固有函数噪声。用gt=∇θft(θ)g_{t}=\nabla_{\theta}f_{t}(\theta)gt=∇θft(θ)表示梯度,即在时间步ttt处评估的ftf_{t}ft关于θ\thetaθ的偏导数向量。
该算法更新梯度(mtm_{t}mt)和平方梯度(vtv_{t}vt)的指数移动平均值,其中超参数β1,β2∈[0,1)\beta_{1},\beta_{2}\in[0,1)β1,β2∈[0,1)控制这些移动平均值的指数衰减率。移动平均值本身是梯度的一阶矩(均值)和二阶原始矩(未中心化的方差)的估计。然而,这些移动平均值初始化为(向量)0,导致矩估计偏向零,特别是在初始时间步,特别是当衰减率较小(即β\betaβ接近1)时。好消息是,这种初始化偏差可以很容易地抵消,从而得到偏差校正的估计m^t\widehat{m}_{t}m t和v^t\widehat{v}_{t}v t。详见第3节。
请注意,算法1的效率可以通过改变计算顺序来提高,例如将循环中的最后三行替换为以下行:αt=α⋅1−β2t/(1−β1t)\alpha_{t}=\alpha\cdot\sqrt{1-\beta_{2}^{t}}/(1-\beta_{1}^{t})αt=α⋅1−β2t/(1−β1t)和θt←θt−1−αt⋅mt/(vt+ϵ^)\theta_{t}\leftarrow\theta_{t-1}-\alpha_{t}\cdot m_{t}/(\sqrt{v_{t}}+\hat{\epsilon})θt←θt−1−αt⋅mt/(vt+ϵ^)。

Adam的更新规则
Adam更新规则的一个重要特性是其步长的谨慎选择。假设ϵ=0\epsilon=0ϵ=0,则在时间步ttt处参数空间中的有效步长为Δt=α⋅m^t/v^t\Delta_{t}=\alpha\cdot\widehat{m}_{t}/\sqrt{\widehat{v}_{t}}Δt=α⋅m t/v t。有效步长有两个上限:在(1−β1)>1−β2(1-\beta_{1})>\sqrt{1-\beta_{2}}(1−β1)>1−β2的情况下,∣Δt∣≤α⋅(1−β1)/1−β2|\Delta_{t}|\leq\alpha\cdot(1-\beta_{1})/\sqrt{1-\beta_{2}}∣Δt∣≤α⋅(1−β1)/1−β2,否则∣Δt∣≤α|\Delta_{t}|\leq\alpha∣Δt∣≤α。第一种情况仅在最严重的稀疏情况下发生:当梯度在所有时间步上均为零,除了当前时间步。对于较不稀疏的情况,有效步长将较小。当(1−β1)=1−β2(1-\beta_{1})=\sqrt{1-\beta_{2}}(1−β1)=1−β2时,我们有∣m^t/v^t∣<1|\widehat{m}_{t}/\sqrt{\widehat{v}_{t}}|<1∣m t/v t∣<1,因此∣Δt∣<α|\Delta_{t}|<\alpha∣Δt∣<α。在更常见的情况下,我们将有m^t/v^t≈±1\widehat{m}_{t}/\sqrt{\widehat{v}_{t}}\approx\pm 1m t/v t≈±1,因为∣E[g]/∣E[g2]∣≤1|\mathbb{E}[g]/\sqrt{|\mathbb{E}[g^{2}]|}\leq 1∣E[g]/∣E[g2]∣≤1。在每个时间步参数空间中采取的有效步长的大小大致由步长设置α\alphaα限制,即∣Δt∣⪅α|\Delta_{t}|\lessapprox\alpha∣Δt∣⪅α。这可以理解为在当前参数值周围建立了一个信任区域,超出该区域,当前梯度估计无法提供足够的信息。这通常使得提前知道α\alphaα的正确尺度相对容易。对于许多机器学习模型,例如,我们通常提前知道好的最优值很可能位于参数空间中的某个区域内;例如,对参数有一个先验分布并不罕见。由于α\alphaα设置了参数空间中步长的大小(上限),我们通常可以推断出α\alphaα的正确数量级,使得可以从θ0\theta_{0}θ0在若干次迭代内达到最优值。稍微滥用术语,我们将比率m^t/v^t\widehat{m}_{t}/\sqrt{\wide

10万+

被折叠的 条评论
为什么被折叠?



