L2正则化和权值衰减正则化对于标准随机梯度下降是等价的(当按学习率重新调整时),但是在自适应梯度算法的情况下确并非如此,如Adam。虽然这些算法的通用实现采用L2正则化(通常称它为“权值衰减”,这可能是由于我们暴露的不等量性造成的误导),我们提出了一个简单的修正,通过将权重衰减与采用损失函数的优化步骤解耦,来恢复权重衰减正则化的原始公式。我们提供的经验证据表明,我们提出的修正(i)从标准SGD和Adam的学习率设置中解耦合了权值衰减因子的最优选择,(ii)极大地提高了Adam的泛化性能。允许它在图像分类数据集上与SGD竞争(在这方面,它以前通常被后者超越)。我们提出的解耦权值衰减已经被许多研究人员采用,已经在TensorFlow和PyTorch中实现了它;我们实验的完整源代码可以在https://github.com/loshchil/AdamW-and-SGDW上找到
自适应梯度方法,如AdaGrad (Duchi et al., 2011), RMSProp (Tieleman & Hinton,2012), Adam (Kingma & Ba, 2014)和最近的AMSGrad (Reddi et al., 2018)已经成为用于训练前馈和递归神经网络的默认选择方法(Xu et al., 2015;Radford et al., 2015)。尽管如此,对于流行的图像分类数据集,如CIFAR-10和CIFAR-100 Krizhevsky(2009),仍然可以通过应用带有动量的SGD获得最先进的结果(Gastaldi, 2017;Cubuk等人,2018年)。此外,Wilson等人(2017)认为,在不同的深度学习任务(如图像分类、字符级语言建模和选区解析)上测试时,自适应梯度方法不能泛化以及带有动量的SGD。关于这种糟糕泛化的起源,人们已经进行了不同的假设研究,例如存在尖锐的局部极小值(Keskar et al., 2016;Dinh et al., 2017)和自适应梯度方法的固有问题(Wilson et al.2017)。在本文中,我们研究了使用L2正则化或权值衰减正则化来训练SGD和Adam的深度神经网络是否更好。我们表明,最流行的自适应梯度方法Adam泛化效果不佳的一个主要因素是L2正则化对它的效果不如SGD。具体来说,我们对Adam的分析导致了以下观察结果:
(1)L2正则化和权值衰减是不相同的。通过基于学习率的权重衰减因子的重新参数化,可以使这两种技术等价于SGD;然而,正如经常被忽视的那样,这不是Adam的情况。特别是,当与自适应梯度相结合时,L2正则化会导致具有较大历史参数的权重和/或梯度振幅的正则化程度小于使用权值衰减时的值。
(2) L2正则化在Adam身上不起作用。一个可能的解释是,为什么Adam和其他自适应梯度方法可能会被SGD的动量超越,常见的深度学习库只实现L2正则化,而不是原始的权值衰减。因此,在使用L2正则化对SGD有利的任务/数据集上(例如,在许多流行的图像分类数据集上),Adam导致的结果比SGD带有动量的结果更差(L2正则化的行为与预期一致)。
(3) 权重衰减在 SGD 和 Adam 中同样有效。 对于 SGD,它相当于 L2 正则化,而对于 Adam 则不是。
(4) 最优权值衰减取决于批处理/权值更新的总数。我们对SGD和Adam的经验分析表明,要执行的批处理的运行时间/数量越大,最优权重衰减越小。
(5) Adam可以从计划的学习率乘数中获益匪浅。事实上,Adam是一种自适应梯度算法,因此能够调整每个参数的学习率,但这并不排除通过使用全局学习率乘数(例如,通过余弦退火)大幅提高其性能的可能性。
文章的主要贡献是通过将权重衰减与基于梯度的更新解耦来改进Adam中的正则化。在综合分析中,我们发现Adam使用解耦权重衰减比使用L2正则化概括得更好,在测试误差方面实现了15%的相对改善(见图2和图3);这适用于各种图像识别数据集(CIFAR-10和ImageNet32x32)、培训预算(从100到1800个epoch不等)和学习速率计划(固定、下降步长和余弦退火;参见图1)。我们还证明,我们的解耦权重衰减使得学习率和权重衰减因子的最佳设置更加独立,从而简化了超参数优化(见图2)。
论文的主要目的是改进Adam,使其具有竞争力,即使在过去不具有竞争力的问题上,也具有竞争力。因此,我们希望从业者不再需要在Adam和SGD之间切换,这反过来应该减少选择数据集/任务特定训练算法及其超参数的常见问题。
图一:Adam使用解耦权重衰减(底层,AdamW)比使用L2正则化(顶层,Adam)表现更好。我们展示了在固定学习率(左列)、阶跃下降学习率(在epoch为30、60和80处下降,中间列)和余弦退火(右列)下进行100次训练后,CIFAR-10上26 2x64d ResNet的最终测试误差。AdamW导致了一个更可分离的超参数搜索空间,特别是当采用学习速率调度时,如阶跃下降和余弦退火。余弦退火产生明显优越的结果。
权重 θ \theta θ的指数衰减为:
式中λ定义了每一步的权重衰减率,以及 ∇ f t ( θ t ) \nabla f_t(\theta_t) ∇ft(θt)是第t批的梯度要乘以学习率α。对于标准SGD,它相当于标准L2正则化:
命题1:(权值衰减=标准SGD的L2正则化)具有基本学习率α的标准SGD对具有权重衰减λ的批损失函数 f t ( θ ) \ f_t(\theta) ft(θ)执行相同的步骤(等式(1)定义)与在 f t r e g ( θ ) = f t ( θ ) + λ ′ 2 ∥ θ ∥ 2 2 f_t^{reg}(\theta)=f_t(\theta)+\frac{\lambda^\prime}{2}{\parallel\theta\parallel}_2^2 ftreg(θ)=ft(θ)+2λ′∥θ∥22 , ( λ ′ = λ α \lambda^\prime=\frac{\lambda}{\alpha} λ′=αλ)没有权重衰减的情况下执行的步骤相同。
由于这种等价性,L2正则化经常被称为权重衰减,包括在流行的深度学习库中。然而,正如我们将在本节后面演示的,这种等效性不适用于自适应梯度方法。对于SGD的简单情况,一个经常被忽略的事实是,为了保持等价性,L2正则化器中的 λ′ 必须设置为 λ α \frac{\lambda}{\alpha} αλ,即,如果存在总体最佳权重衰减值 λ,则 λ′的最佳值与学习率 α 紧密耦合。为了解耦这两个超参数的影响,我们主张解耦Hanson&Pratt(1988)提出的权重衰减步骤(方程式1)。
首先以SGD为例,我们提出在算法1的第9行中基于梯度信息的θt更新的同时衰减权值。这就产生了我们提出的带有动量的SGD变体,使用解耦权值衰减(SGDW)。这个简单的修改显式地解耦了 λ \lambda λ和α(尽管对于任意两个超参数,一些依赖于问题的隐式耦合当然仍然存在)。为了解释α和λ的可能调度,我们引入了一个由用户定义的程序SetSchedule Multiplier (t)提供的比例因子 η t \eta_t ηt。
现在,让我们来看看自适应梯度算法,比如流行的优化器Adam(Kingma&Ba(2014)),它根据梯度的历史大小来缩放梯度。直观地说,当Adam在损失函数 f f f和L2正则化上运行时,往往在 f f f中具有较大梯度的权重不会像在解耦权重衰减时那样得到正则化,因为正则化器的梯度会随着 f f f的梯度进行缩放。这导致自适应梯度算法的L2和解耦权重衰减正则化的不等价性:
命题2(权重衰减 ≠ \neq =自适应梯度的L2正则化):设 O O O表示优化器,当在批损失函数 f t ( θ ) \ f_t(\theta) ft(θ)上运行且有权重衰减时,有迭代 θ t + 1 ← θ t − α M t ∇ f t ( θ t ) \theta_{t+1}\gets\ \theta_t\ -\ \alpha M_t\nabla f_t(\theta_t) θt+1← θt − αMt∇ft(θt),当在 f t ( θ ) \ f_t(\theta) ft(θ)上运行且没有权重衰减时,分别有迭代 θ t + 1 ← ( 1 − λ ) θ t − α M t ∇ f t ( θ t ) \theta_{t+1}\gets\ (1\ -\lambda)\theta_t\ -\ \alpha M_t\nabla f_t(\theta_t) θt+1← (1 −λ)θt − αMt∇ft(θt),其中 M t ≠ κ I , κ ∈ R M_t\neq\kappa I,\kappa\in\mathbb{R} Mt=κI,κ∈R。然后,对于 O O O,不存在L2系数λ′,因此,在批损失 f t r e g ( θ ) = f t ( θ ) + λ ′ 2 ∥ θ ∥ 2 2 f_t^{reg}(\theta)=f_t(\theta)+\ \frac{\lambda^\prime}{2}{\parallel\theta\parallel}_2^2 ftreg(θ)=ft(θ)+ 2λ′∥θ∥22上运行 O O O而不发生权重衰减等于在 f t ( θ ) \ f_t(\theta) ft(θ)上运行 O O O而发生衰减 λ ∈ R + \lambda\in\mathbb{R}^+ λ∈R+。
我们在Adam中解耦了权重衰减和基于损失的梯度更新,如算法2的第12行所示;这就产生了具有解耦重量衰减(AdamW)的Adam变体。
证明了自适应梯度算法的L2正则化和权重衰减正则化的不同,提出了它们之间的区别以及如何解释其效果的问题。它们对于标准SGD的等价性仍然非常有助于直觉:两种机制都以相同的速率将权重推近零。然而,对于自适应梯度算法,它们有所不同:对于L2正则化,损失函数的梯度和正则化器的梯度之和(即权重的L2范数)是自适应的,而对于解耦的权重衰减,只有损失函数的梯度是自适应的(与自适应梯度机制分离的权重衰减步骤),使用L2正则化,两种类型的梯度都被它们的典型(求和)幅度归一化,因此具有较大的典型梯度幅度 s s s的权重 x x x被正则化,其相对数量比其他权重更小。相比之下,解耦权重衰减以相同的速率 λ λ λ对所有权重进行正则化,比标准 L2 正则化更有效地使用大 s s s 对权重 x x x 进行正则化。 我们针对一个简单的带有固定预处理器的自适应梯度算法的特殊情况正式演示了这一点:
命题3:(权重衰减=具有固定预条件的自适应梯度算法的比例调整L2正则化),设 O O O表示具有与命题2中相同特征的算法,并使用固定的预条件矩阵 M t = d i a g ( s ) − 1 M_t=diag{(s)}^{-1} Mt=diag(s)−1(对于所有 i i i, s i > 0 s_i>0 si>0),然后,具有基本学习率 α α α的 O O O在批次损失函数 f t ( θ ) \ f_t(\theta) ft(θ)上执行相同的步骤,权重衰减λ,就像它在比例调整的正则化批次损失上执行时没有权重衰减一样。
其中 ⨀ \bigodot ⨀和 √ ⋅ √· √⋅分别表示元素乘法和平方根, λ ′ = λ α \lambda^\prime=\frac{\lambda}{\alpha} λ′=αλ。
我们注意到这个命题并不直接适用于实际的自适应梯度算法,因为这些算法在每一步都会改变预处理矩阵。尽管如此,它仍然可以提供关于相当于损失函数在每个步骤:优化参数 θ \theta θ我和一个大型逆预处理器 s i s_i si(这实际上是由维度 i i i中记录中较大的梯度造成的)正规化相对比他们将L2正规化;具体来说,正则化与 s i \sqrt{s_i} si成正比。
根据Aitchison(2018),我们现在在贝叶斯滤波框架下讨论自适应梯度算法统一理论中解耦权重衰减的合理性。在我们发布了当前关于arXiv的论文的初步版本后,Aitchison指出他的理论“为我们提供了一个理论框架,在此框架中,我们可以理解这种权重衰减优于L2正则化,因为它是权重衰减,而不是通过直接应用贝叶斯滤波而产生的L2正则化。”(Aitchison,2018)虽然这一理论完全归功于Aitchison,但我们在这里总结这一理论,以阐明为什么权重衰减可能优于L2正则化。
Aitchison(2018)认为n个参数 θ 1 , . . . , θ n \theta_1,...,\theta_n θ1,...,θn的随机优化作为一个贝叶斯滤波问题,目标是在给定时间步长 t t t的其他参数 θ − i ( t ) \theta_{-i}(t) θ−i(t)的当前值的情况下,推断每个参数 θ i \theta_i θi的最优值的分布。当其他参数不改变时,这是一个优化问题,但当它们改变时,它变成了一个使用贝叶斯过滤“跟踪”优化器的问题,如下所示。我们给出了优化器在时间步骤t的概率分布 P ( θ t ∣ y 1 : t ) P(\theta_t\ |\ y_{1:t}) P(θt ∣ y1:t),它考虑了前 t t t个小批的数据 y 1 : t y_{1:t} y1:t,一个反映该分布从一个步骤到下一个步骤的(小的)与数据无关的变化的状态转换先验分布 P ( θ t + 1 ∣ θ t ) P(\theta_{t+1}\ |\ \theta_t) P(θt+1 ∣ θt),以及从第t+1步的小批中得到的似然 P ( θ t + 1 ∣ θ t + 1 ) P(\theta_{t+1}\ |\ \theta_{t+1}) P(θt+1 ∣ θt+1)。优化器在步骤 t + 1 t+1 t+1的后验分布 P ( θ t + 1 ∣ y 1 : t + 1 ) P(\theta_{t+1}\ |\ y_{1:t+1}) P(θt+1 ∣ y1:t+1),然后可以通过对 θ t \theta_t θt进行边际化来计算(就像贝叶斯滤波中的通常做法),以获得一步超前预测 P ( θ t + 1 ∣ y 1 : t + 1 ) P(\theta_{t+1}\ |\ y_{1:t+1}) P(θt+1 ∣ y1:t+1),然后应用贝叶斯规则来纳入可能性 P ( θ t + 1 ∣ θ t + 1 ) P(\theta_{t+1}\ |\ \theta_{t+1}) P(θt+1 ∣ θt+1)。Aitchison(2018)假设高斯状态过渡分布 P ( θ t + 1 ∣ θ t ) P(\theta_{t+1}\ |\ \theta_t) P(θt+1 ∣ θt)和近似共轭似然 P ( θ t + 1 ∣ θ t + 1 ) P(\theta_{t+1}\ |\ \theta_{t+1}) P(θt+1 ∣ θt+1),导致过滤分布均值的封闭形式更新如下:
其中 g g g是时间 t t t的小批的对数似然的梯度。这个结果意味着梯度的预设者是由过滤分布的后验不确定性 Σ p o s t \Sigma_{post} Σpost给出的:对于更不确定的参数,更新更大,对于我们更确定的参数,更新更小。Aitchison(2018)继续指出,流行的自适应梯度方法,如Adam和RMSprop,以及Kronecker-factorized方法是这个框架的特例。
解耦权值衰减非常自然地适合这个统一框架,作为状态转移分布的一部分:Aitchison(2018)假设优化器根据以下高斯分布缓慢变化:
其中 Q Q Q是权重的高斯扰动的协方差, A A A是一个正则器,以避免数值随时间无限制地增长。当实例化为 A = λ × I Α = λ × I A=λ×I时,这个正则器A正好扮演了方程1中描述的解耦权重衰减的角色,因为这导致在每一步将当前平均估计值 θ t \theta_t θt乘以 ( 1 − λ ) (1-λ) (1−λ)。值得注意的是,这种正则化也是直接应用于先验的,不依赖于每个参数的不确定性(这对于L2正则化来说是必须的)。
现在,我们评估了在各种训练预算和学习率安排下,去耦权重衰减的性能。我们的实验设置遵循Gastaldi(2017)的建议,除了L2正则化,他还提出将新的Shake-Shake正则化应用于3分支残差DNN,使其在CIFAR-10数据集(Krizhevsky,2009)上获得2.86%的新的最先进的结果。我们使用了基于fb.resnet.torch的相同模型/源代码。我们总是使用128的批处理量,并对CIFAR数据集应用常规的数据增强程序。基础网络是一个26 2x64d的ResNet(即网络的深度为26,2个剩余分支,第一个剩余块的宽度为64)和一个26 2x96d的ResNet,参数分别为11.6M和25.6M。关于网络和Shake-Shake方法的详细描述,我们请感兴趣的读者参考Gastaldi(2017)。我们还在ImageNet32x32数据集(Chrabaszcz等人,2017)上进行了实验,该数据集是原始ImageNet数据集的降维版本,有120万张32*32像素的图像。
图2:CIFAR-10上的26个2x64d ResNet在100次历时后测得的Top-1测试误差。拟议的SGDW和AdamW(右栏)有一个更可分离的超参数空间
在我们的第一个实验中,我们将带有L2正则化的Adam与带有解耦权重衰减的Adam(AdamW)进行比较,使用三种不同的学习率计划:固定学习率、drop-step计划和余弦退火计划(Loshchilov & Hutter,2016)。由于Adam已经适应了 由于Adam已经适应了它的参数化学习率,所以使用学习率乘数计划并不像SGD那样普遍。它不像SGD那样常见,但我们的结果表明,这样的时间表可以大幅提高Adam的性能。我们主张不要忽视它们在自适应梯度算法中的应用。
对于每个学习率计划和权值衰减变量,我们使用不同的初始学习率和权值衰减因子设置,训练了一个2x64d的ResNet 100个epoch。图1显示了解耦的权值衰减在所有学习率调度中都优于L2正则化,对于更好的学习率调度,差异更大。我们还注意到,解耦的权值衰减导致了一个更可分离的超参数搜索空间,特别是当学习速率计划,如步降和余弦退火应用。从图中还可以看出,余弦退火算法明显优于其他学习率调度;因此,我们在剩下的实验中使用了余弦退火。
为了验证我们关于和耦合的假设,在图2中,我们比较了SGD(SGD与SGDW,顶行)和Adam(Adam与AdamW,底行)中L2正则化与解耦权重衰减的性能。在SGD(图2,左上角)中,L2正则化与学习速率没有解耦(算法1中描述的常用方法),并且该图清楚地显示了最佳超参数设置(用颜色和前10个超参数设置用黑色圆圈表示)的区域不与x轴或y轴对齐,而是位于对角线上。这表明这两个超参数是相互依赖的,需要同时更改,而仅更改其中一个可能会严重恶化结果。考虑,例如,在左上黑圈的设置( α = 1 2 , λ = 1 8 ∗ 0.001 \alpha=\frac{1}{2},\lambda=\frac{1}{8}*0.001 α=21,λ=81∗0.001);只有改变其中一个或单独改变会使结果恶化,而改变这两个因素仍然可以产生明显的改善。我们注意到,初始学习率和L2正则化因子的这种耦合可能导致SGD的声誉,即对其超参数非常敏感。