机器之心编辑部

速度媲美Adam,性能堪比SGD:北大、浙大学霸本科生提出全新优化算法AdaBound

为什么 Adam 不够好、SGD 不够快?因为新的 AdaBound 已经提出来了啊。

2018 年 12 月 21 日,ICLR 2019 论文接收结果揭晓。据统计,ICLR 2019 共收到 1591 篇论文投稿,相比去年的 996 篇增长了 60%。ICLR 2019 共接收论文 500 篇,其中 oral 论文 24 篇、poster 论文 476 篇。

今天,我们发现了一篇有趣的论文,该研究提出了一种新型优化方法 AdaBound,「和 Adam一样快、和 SGD一样好」。据了解,四位作者 Liangchen Luo、Yuanhao Xiong、Yan Liu、Xu Sun 均来自国内。共同一作骆梁宸和 Yuanhao Xiong 分别来自北京大学和浙江大学,Yan Liu 来自南加州大学,Xu Sun 来自北京大学。而且一作骆梁宸是北京大学的本科生……(长江后浪推前浪嘤 :)

作者在 reddit 网站发帖介绍了这项研究,并提供了 PyTorch 实现。他们目前在 MNIST 和 CIFAR-10 数据集做了测试,但由于计算资源有限而无法选择 ImageNet 等大数据集。此外,作者还表示 AdaBound 可以直接通过 pip 安装,不过使用 AdaBound 不意味着不用调参,只不过 AdaBound 可以帮助大家减少所需要的时间。

  • 项目地址:https://github.com/Luolc/AdaBound

为什么这篇论文很重要?

正如作者所言,AdaBound 最重要的属性是「和 Adam 一样快、和 SGD 一样好」。其中「快」表示收敛快,深度学习模型只需要更少的算力就能收敛到最优解;而「好」表示收敛的结果好,收敛后的模型要有更高的准确率的更好的泛化性。

如下所示这张训练图展示了 AdaBound 的主要优势,其中测试准确率曲线越平滑表示最优化算法越稳定,模型的训练会少走「弯路」。而若给定 Epoch,垂直线上的高度表示收敛的快慢,测试准确率越高则收敛得越快。AdaGrad 收敛快是众所周知的,但 AdaBound 也能这么快就非常令人吃惊了。

此外,最右边近乎水平的曲线则表明各最优化算法已经完成收敛,曲线的水平高低则表明了收敛的好坏,当然测试准确率越高则表明收敛的最优解越好。我们可以看到,AdaBound 和 AMSbound 确实是收敛得最好,而 SGDM 甚至都比 Adam 收敛得好。

在去年 ICLR 2018 的最佳论文《On the convergence of Adam and Beyond》中,作者首次分析了为什么 Adam 等新提出的方法会收敛得不好,该论文提出的 AMSGrad 尝试解决这个问题。但是在这篇新论文中,北大骆梁宸等研究者表明 AMSGrad 实际上也没有解决问题,因此他们提出了新的解决方案:AdaBound。

为什么 Adam 不行?

目前 Adam 可以说是最常用的最优化器,它和传统的随机梯度下降有很多不同。SGD 保持单一的学习率来更新所有权重学习率在训练过程中并不会改变,Adam 则通过计算梯度的一阶矩估计和二阶矩估计,为不同的参数设计独立的自适应性学习率

听起来 Adam 好像高级了很多,但在 Reddi 等人的 ICLR 2018 最佳论文中,他们表示 Adam 等算法在经验上常会收敛得比带动量的 SGD 方法差,他们证明了导致该问题的一个原因是这些算法使用了指数滑动平均(exponential moving average)操作。这也是去年的研究重点,很多研究者尝试改良 Adam 以解决收敛差这个问题。

在 AdaBound 这篇论文中,北大等研究者表明当用 Adam 训练的模型接近收敛时,学习率基本上由小于 0.01 的学习率和大于 1000 的学习率组成,这就表明训练的最后阶段确实存在学习率太小或太大的问题。在作者对这个现象进行深入研究后,他们表示极端学习率确实存在潜在不良影响。算法在不解决这个问题的情况下不可能获得很好的泛化性能,因此我们需要以某种方法限制 Adam 在训练后期的学习率

鉴于这个观察 Adam 也就能改良成 AdaBound 了。

这篇论文干了什么?

AdaBound 这篇论文首先对 ADAM 进行了实证研究,并说明在训练结束时,学习率存在极大和极小两种情况。该结果与 Wilson 等人(2017)提出的观点一致,后者认为自适应方法的泛化性能较差要归因于不稳定和极端的学习率。实际上,AMSGRAD 中的关键思想——引入非递增学习率,可能有助于减轻极大学习率造成的不良影响,虽然它忽略了较小学习率的可能影响。AdaBound 论文的作者进一步提供了简单凸优化问题的示例,以阐明自适应方法的极小学习率如何导致无法收敛。在这种情况下,可证明 RMSPROP 和 ADAM 无法收敛到最优解,且不管初始步长 α 有多大,ADAM 都无法与 scale-down term 对抗。

基于以上分析,作者提出了 ADAM 和 AMSGRAD 的新变体,分别是 ADABOUND 和 AMSBOUND,新变体不会受到极端学习率的消极影响。作者对这些自适应方法中的学习率应用了动态边界,其中上下界被初始化为 0 和无穷大,而且它们都能平滑收敛至恒定的最终步长。新变体在训练初期可视为自适应方法,然后逐渐随着步长的增加转化为 SGD(或带动量的 SGD)。使用该框架中可以获得快速的初始训练进程和良好的最终泛化能力。

论文:Adaptive Gradient Methods with Dynamic Bound of Learning Rate

论文地址:https://openreview.net/pdf?id=Bkg3g2R9FX

摘要:自适应优化方法(如 AdaGrad、RMSprop、Adam)旨在通过调整学习率上的元素级缩放项来获取快速的训练过程。尽管这些方法很普遍,但它们与 SGD 相比泛化性能较差,甚至会由于不稳定和极端的学习率导致无法收敛。近期研究提出了一些新算法(如 AMSGrad)来解决这个问题,但这些算法相比现有算法并没有太大改进。这篇论文展示了极端学习率会导致性能不好。此外,该论文还提供了 Adam 和 AMSGrad 的新变体——AdaBound 和 AMSBound,它们对学习率使用动态边界,以实现从自适应方法到 SGD 的逐步平滑过渡,为收敛提供理论依据。作者在多个流行任务和模型上进行了实验,而这在之前的研究中是匮乏的。实验结果表明这些新变体能够弥合自适应方法和 SGD 之间的泛化差距,同时在训练早期保持更高的学习速度。此外,这些新变体相比原版有巨大改进,尤其是对于复杂深度网络。

极端学习率导致的无法收敛

在这部分中,研究者通过初步的实验和严格的证明阐述了当前自适应方法的主要缺陷。如上所述,根据观察结果 ADAM 这样的自适应方法表现比 SGD 要差。Reddi 等人(2018)提出了 AMSGRAD 来解决这个问题,但最近的研究指出 AMSGRAD 并没有明显的改进。Reddi 等人表示与 ADAM 相比,AMSGRAD 的学习率更小,但他们仅认为较大的学习率是造成 ADAM 表现糟糕的原因。然而,较小的学习率可能也是陷阱。因此,本研究的作者认为极大和极小学习率都是导致 ADAM 泛化能力平平的原因。

动态边界的自适应矩估计

这部分介绍了该研究开发的新优化方法,并提供了收敛性分析。该研究旨在设计一个最优化策略,它能够结合自适应优化方法的优势(即快速的初始化进度)和 SGD 良好的泛化性能。直观地说,研究者希望构建一种算法,能够在训练早期表现得像自适应方法,在训练后期表现得像 SGD。

受梯度裁剪(一种实践中常用的技术,用于裁剪大于阈值的梯度以避免梯度爆炸)的启发,本文研究者对 ADAM 中的学习率进行了裁剪,提出了 ADABOUND,如算法 2 所示。考虑在 ADAM 中应用以下操作:

通过逐元素地裁剪学习率,它使得输出限制在 [η_l , η_u] 内。由此可见,α = α* 的 SGD(M) 可视为 η_l = η_u = α*。至于 ADAM,它的范围则相当于 η_l = 0 以及 η_u = ∞。现在我们可以通过以下步骤提供新的策略。我们将 η_l 和 η_u 作为 t 的函数,而不是常数的上下界,其中η_l(t) 是非递减函数,在 t=0 时它从 0 开始,渐近收敛至 α*;η_u(t) 是非递增函数,在 t=0 时它从 ∞ 开始,也渐近收敛至 α ∗。在这种设定下,ADABOUND 在开始表现得像 ADAM,因为上下界对学习率的影响非常小,而后面逐渐表现得像 SGD(M),因为边界变得越来越受限。研究者证明了 ADABOUND 的以下关键结果:

不难看出 ADABOUND 的后悔值(regret)上限是 O(sqrt(T))。与 Reddi 等人(2018)的做法类似,研究者可以使用更谨慎的动量衰减率 β_1t = (β_1)/t,仍确保 O( sqrt(T)) 的后悔值。值得一提的是,我们还可以在 AMSGRAD 中加入动态边界。由此产生的算法 AMSBOUND 也保持了 O(sqrt(T)) 的后悔值,而收敛的证明基本与理论 4 一样(详见附录 F)。在下一部分中,我们会看到在一些已知的任务上,AMSBOUND 具有与 ADABOUND 相似的性能。

实验

在此部分,研究者对不同的模型进行实证研究,将新方法与常用优化方法进行对比,包括 SGD(M)、ADAGRAD、ADAM 和 AMSGRAD。实验着重于三个任务:MNIST 图像分类任务、CIFAR-10 图像分类任务、在 PTB 上的语言建模任务。

表 2:本文实验所用模型概述

图 2 展示了每个优化方法在训练和测试集上的学习曲线。研究者发现在训练上,所有的算法都能达到近 100% 的准确率。而在测试上,SGD 比 ADAM 和 AMSGAD 自适应方法表现略好。

图 2:前馈神经网络在 MNIST 上的训练(左)与测试(右)准确率

图 3 中,ADABOUND 和 AMSBOUND 甚至超越了 SGDM 1%。尽管自适应方法的泛化能力相对较差,但该研究提出的方法通过为自适应学习率分配边界克服了这一缺陷,使得 DenseNet 和 ResNet 在 CIFAR-10 测试集上几乎取得了最佳准确率

图 3:DenseNet-121 和 ResNet-34 在 CIFAR-10 上的训练与测试准确率

然后作者在 PTB 数据集上训练一些 LSTM,固定预算下运行 200 个 epoch。他们使用困惑度作为性能评估的标准,结果如图 4。

图 4:在 PTB 上使用不同层的 LSTM 对比 SGD、ADAM、ADABOUND 和 AMSBOUND 困惑度曲线。

匿名评审结果

这篇论文已被 ICLR 2019 接收,评审得分为:7,4,6。

匿名评审 2 给出了 7 分,Ta 认为作者在多个常用机器学习测试集中验证了所提出 ADAM 和 AMSGrad 新变体的效果,同时对凸优化问题提供了详细的证明,也因此 ADAM 后悔值(regret)不能收敛为零。

但 Ta 同时认为这篇论文中的证明仍然不够有说服力。性能差的情况确实存在,但这无法说明算法的平均性能,而这在实践中很关键。此外,这篇论文的验证数据集较少,数据集规模也不够大,该评审建议作者在较大的数据集上进行实验,以使结果更具说服力。

作者对此回应道,他们在 CIFAR-100 等较大数据集和其它任务上也进行了实验,结果都很不错。之后会把相关结果添加到论文中。

匿名评审 3 打出了 4 分(rejection)。Ta 对论文的技术细节提出了几点质疑,主要涉及 η_u 和 η_l 的公式及结果、研究结果在其它算法上是否有同样的效果、学习率的选择和变化图等方面。

匿名评审 1 给出了 6 分,Ta 认为这篇论文提出了一个简单的方法来避免标准自适应方法中的学习率极端行为,但理论不足,无法说明该方法相比标准自适应方法的优势。

reddit 讨论

这篇论文在 reddit 上也引起了大量讨论。

很多人对该研究表示赞赏,还有一些人询问该研究是否针对 GAN、迁移学习进行了实验,以及是否有 TensorFlow 实现。作者表示暂未针对 GAN 和迁移学习进行实验,且由于对 TensorFlow 不太了解,因此暂时没有 TensorFlow 实现。

reddit 用户 Berecursive 就实验结果的持续性(consistent)提问:如果我将同样的实验运行 100 次,那么我会得到比较合理的训练和测试误差的方差分布。通常误差图的形状是一致的,但是如果你要绘制方差图,则其范围会因任务而变得非常宽泛。对于优化方法而言,结果的一致性也是一个重要的度量标准。

作者对此的回应是:我在特定超参数设置下运行了 3-5 次,发现在相同设置下 AdaBound 的学习曲线很接近。之前我并不知道如何绘制方差图,稍后会进行尝试。此外,我在附录 G 中就 AdaBound 的一致性问题进行了一些额外实验研究,使用的是不同的超参数设置。此外,我们还提供了 Jupyter notebook,可以帮助可视化和复现。

此外,与匿名评审 2 类似,reddit 用户 alper111 也对实验用数据集 CIFAR-10 提出了质疑:使用 CIFAR-10 来测试泛化误差有些奇怪吧?这个数据集中的样本与训练数据集中的样本有很大的重复性。

论文作者对此的回应是:CIFAR-10 是一个完备的基准数据集,完全可以使用,近似重复问题并不能改变这个事实。此外,使用 CIFAR-10 数据集方便与其它基于该数据集的结果进行对比。

理论SGDAdam优化器最优化问题
6
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

学习曲线技术

在机器学习领域,学习曲线通常是表现学习准确率随着训练次数/时长/数据量的增长而变化的曲线

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

凸优化技术

凸优化,或叫做凸最优化,凸最小化,是数学最优化的一个子领域,研究定义于凸集中的凸函数最小化的问题。凸优化在某种意义上说较一般情形的数学最优化问题要简单,譬如在凸优化中局部最优值必定是全局最优值。凸函数的凸性使得凸分析中的有力工具在最优化问题中得以应用,如次导数等。 凸优化应用于很多学科领域,诸如自动控制系统,信号处理,通讯和网络,电子电路设计,数据分析和建模,统计学(最优化设计),以及金融。在近来运算能力提高和最优化理论发展的背景下,一般的凸优化已经接近简单的线性规划一样直捷易行。许多最优化问题都可以转化成凸优化(凸最小化)问题,例如求凹函数f最大值的问题就等同于求凸函数 -f最小值的问题。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

自适应学习技术

自适应学习也称为适应性教学(Adaptive Learning),是一种以计算机作为交互式教学手段的教学方法,根据每个学习者的特别需求,以协调人力资源和调解资源的分配。计算机根据学生的学习需求(如根据学生对问题、任务和经验的反馈)调整教育材料的表达方式。自适应学习技术已经涵盖了来自各个研究领域,包括计算机科学,教育,心理学和脑科学等等。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

随机梯度下降技术

梯度下降(Gradient Descent)是遵循成本函数的梯度来最小化一个函数的过程。这个过程涉及到对成本形式以及其衍生形式的认知,使得我们可以从已知的给定点朝既定方向移动。比如向下朝最小值移动。 在机器学习中,我们可以利用随机梯度下降的方法来最小化训练模型中的误差,即每次迭代时完成一次评估和更新。 这种优化算法的工作原理是模型每看到一个训练实例,就对其作出预测,并重复迭代该过程到一定的次数。这个流程可以用于找出能导致训练数据最小误差的模型的系数。

大数据技术技术

大数据,又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

前馈神经网络技术

前馈神经网络(FNN)是人工智能领域中最早发明的简单人工神经网络类型。在它内部,参数从输入层经过隐含层向输出层单向传播。与递归神经网络不同,在它内部不会构成有向环。FNN由一个输入层、一个(浅层网络)或多个(深层网络,因此叫作深度学习)隐藏层,和一个输出层构成。每个层(除输出层以外)与下一层连接。这种连接是 FNN 架构的关键,具有两个主要特征:加权平均值和激活函数。

动量技术

优化器的一种,是模拟物理里动量的概念,其在相关方向可以加速SGD,抑制振荡,从而加快收敛

矩估计技术

在统计学中,矩估计是估计总体参数的方法。首先推导涉及感兴趣的参数的总体矩(即所考虑的随机变量的幂的期望值)的方程。然后取出一个样本并从这个样本估计总体矩。接着使用样本矩取代(未知的)总体矩,解出感兴趣的参数。从而得到那些参数的估计。矩估计是英国统计学家卡尔·皮尔逊于1894年提出的。

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

Jupyter技术

Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

暂无评论
暂无评论~