SGD

绝地求生:越南第一猛男队终破签证魔咒 SGD搭上PGC末班车

绝地求生东南亚PSC三阶段冠军联赛正式结束,作为赛区的两大霸主,越南的Divine与泰国AG包揽了联赛冠亚军,常规赛阶段排名第一的SGD最终名列第三,获得了赛区最后一张前往PGC全球总决赛的机票,而Divine这一次终于顺利获得签证,全员出战PGC全球赛。

本次PSC三阶段联赛分为常规赛与决赛两阶段,常规赛阶段将按积分排名换算成排位分,这种规则与我们PCL的季后赛类似,虽然SGD在常规赛阶段排在第一,但到了决赛阶段,东南亚两大霸主Divine与AG双双发力,成功反超SGD,Divine最终拿下191分夺得冠军,泰国AG以2分的优势力压SGD获得第二。

虽然Divine夺得了本次PSC三阶段联赛的冠军,但他们在一阶段就已经拿到了联赛冠军,早早就锁定了PGC全球总决赛的席位,而泰国AG拿下了二阶段联赛冠军,也拿到了一个名额。由于在三阶段联赛中前两名的队伍都已经获得了PGC名额,所以名额就顺延到了排名第三的SGD。

值得一提的是,SGD在二阶段联赛中仅排在倒数第二,而正是这样糟糕的战绩让俱乐部下定决心调整阵容,在引进了两名新选手之后,SGD实力大增,在常规赛阶段以较大优势力压Divine与AG排名榜首,虽然最终未能夺冠,但好在队伍还是拿到了PGC全球总决赛的入场券,SGD的逆袭之路还在继续。

获得冠军的Divine拿到了五万美元的奖金,而AG获得了2万美元,SGD也有1万美元到手。

最令越南玩家开心的除了SGD拿到了最后一张PGC入场券外,还有一个天大的好消息,那就是他们的Divine战队终于可以出战世界赛了。每逢提起签证问题,越南大兄弟Divine总是那个最受伤的队伍,PSC一阶段联赛获得冠军的Divine由于签证问题无法参加FGS全球巅峰赛以及在澳门举办的PAI亚洲邀请赛,而在FGS上,Duckmanz所在的泰国AG大放异彩,给全球玩家留下了深刻的印象,作为东南亚的霸主,Divine的缺席无疑令人感到有些遗憾,不过好在这一次俱乐部早早的就在筹备签证问题,据爆料称,Divine全员都已经获得了美国签证,玩家们终于可以在世界大赛上看到越南猛男的身影了。

东南亚赛区的队伍一向以打架凶狠闻名,观赏性极强,期待他们在PGC上与我们赛区的4AM、VC战队过招的场景。

展开
收起

Uber论文5连发宣告神经演化新时代,深度强化学习训练胜过SGD和策略梯度

雷锋网 AI 科技评论按:一直低调的 Uber AI 研究院近日连发 5 篇论文,介绍了他们在基因算法(genetic algorithm)、突变方法(mutation)和进化策略(evolution strategies)等神经演化思路方面的研究成果,同时也理论结合实验证明了神经演化可以取代 SGD 等现有主流方法用来训练深度强化学习模型,同时取得更好的表现。

神经演化(Neuroevolution)是一种符合直觉的、近年正在重新获得关注的机器学习研究思路。生物进化是在繁衍中不断产生突变、不断出现带有新的特性的个体,然后整个种群中能适应环境的个体生存下来、不能适应环境的就被淘汰。机器学习领域的研究者们就已经反复尝试过用这样的思路探索高效的神经网络架构(不再凭研究人员的直觉去设计),比如初始化一百个互相之间略有区别的网络,训练以后选出表现最好的那个,然后再拷贝出 100 个它的带有小的随机改变的副本(模拟生物进化中的突变),进行下一轮测试筛选和带突变复制;前沿学术研究机构谷歌大脑(Google Brain)的负责人 Jeff Dean 也表示过神经演化是一个非常有潜力的研究方向(另一个他觉得很有潜力的方向是稀疏激活的网络)。

但是根据这样反复变化+筛选的过程,我们已经可以推断出用神经演化搜索神经网络架构是一件非常耗费计算能力的事情,所以目前为止能得到的网络规模也不大、完成的任务也不够复杂。雷锋网 AI 科技评论前段时间也报道过一篇在减小计算能力需求方面做出了很大进步的论文《进化算法可以不再需要计算集群,开普敦大学的新方法用一块 GPU 也能刷新 MNIST 记录》。

而这次 Uber 的论文探索了神经进化的另一种用法,就是用它训练神经网络。比如对于架构固定的神经网络,用基于神经进化思路的微小扰动和突变改变连接权重,从而实现了网络的训练。并且他们新开发的技术可以让网络高效地进化,并在某些应用下取得了比基于传统基于梯度的方法(SGD 和策略梯度)更好的表现。雷锋网 AI 科技评论把 Uber AI 研究院综述博文和论文简介编译如下。

在深度学习领域,大家已经习惯了用随机梯度下降 SGD 来训练上百层的、包含几百万个连接的深度神经网络。虽然一开始没能严格地证明 SGD 可以让非凸函数收敛,但许多人都认为 SGD 能够高效地训练神经网络的重要原因是它计算梯度的效率很高。

不过在 Uber 看来,SGD 虽然热门,但它不一定总是最好的选择。近日 Uber 就一口气发布了关于神经演化(Neuroevolution)的 5 篇论文,其中的训练方法不再是 SGD,而是进化算法;他们的研究结果表明,进化算法同样可以高效地为强化学习模型训练深度神经网络。对 Uber 来说,能够借助数据持续自我改进的机器学习模型已经在他们的业务中占据了不少地位,而开发出多种多样的强有力的学习方法(比如神经进化算法)就能够帮助他们更好地达成自己「开发更安全、更可靠的交通解决方案」的目标。

基因算法是训练深度神经网络时有竞争力的替代方案

借助新开发出的技术,Uber AI 的研究人员已经可以让深度神经网络高效地进化。同时他们也惊讶地发现,一个非常简单的基因算法(genetic algorithm)就可以训练带有超过四百万个参数的卷积网络,让它能够直接看着游戏画面玩 Atari 游戏;这个网络可以在许多游戏里取得比现代深度强化学习算法(比如 DQN 和 A3C)或者进化策略(evolution strategies)更好的表现,同时由于算法有更强的并行能力,还可以运行得比这些常见方法更快。

这个结果令人十分惊喜,一个原因是基因算法并不是基于梯度的,此前也没人期待它对于四百万个参数这样大的参数空间还有很好的拓展性;另一个原因是,用简单的基因算法就能达到与顶级的现代强化学习方法同等甚至更好的表现,此前也没人觉得这事有任何可能性。

Uber AI 的研究人员们进一步的研究表明,现代的一些基因算法改进方案,比如新颖性搜索算法(novelty search)不仅在基因算法的效果基础上得到提升,也可以在大规模深度神经网络上工作,甚至还可以改进探索效果、对抗带有欺骗性的问题(带有有挑战性的局部极小值的问题);Q-learning(DQN)、策略梯度(A3C)、进化策略、基因算法之类的基于反馈最大化思路的算法在这种状况下的表现并不理想。

基因算法可以在 Frostbite 游戏中玩到 10500 分;而 DQN、A3C 和进化策略的得分都不到 1000 分。

通过计算梯度做安全的突变

在另一篇论文中,Uber AI 的研究人员们展示出可以把梯度结合在神经演化中,提升它进化循环神经网络和非常深的深度神经网络的能力。这样一来,超过一百层的深度神经网络也可以进化,这要比之前的神经演化研究中得到的结果高出一个数量级。作者们的方法是计算网络输出关于连接权重的梯度(并不是传统深度学习中计算训练误差的梯度),从而可以对随机突变进行调节,对于最敏感那些的网络参数也就可以处理得比以往精细得多。这样一来就解决了以往大规模神经网络中的随机突变效果不好的问题。

两张动图展示的是同一个网络的两类不同的突变结果,它的目标是传过这个迷宫(从左下角出发,目标点在左上角)。一般的突变在多数情况下都会让模型失去走到迷宫尽头的能力,而安全突变就很大程度上把这种能力保留了下来,同时还达成了一定的多样性。这组对比就展示出了安全突变的明显优势。

进化策略 ES 和 SGD 之间有何联系

这项研究是对研究领域中已经出现的技巧运用的补充。OpenAI 的研究人员们首先注意到,神经演化中的各种进化策略(evolution strategy)可以用来优化深度神经网络,尤其在深度强化学习任务中可以取得有竞争力的表现。不过目前为止这个结果更广泛的意义和作用都还仅限于大家的猜测中。

在这项研究中,Uber AI 的研究人员们把注意力放在进化策略的进一步创新上,他们在 MNIST 数据集上进行测试,看看进化策略近似计算出的梯度和 SGD 算出的每个 mini-batch 的最优梯度到底有多大区别,以及它们之间的区别需要保持在什么程度才能让进化策略发挥出良好表现。实验表明,只要提供了足够计算资源用来提高梯度近似计算的质量,进化策略可以在 MNIST 上达到 99% 准确率。这同时也解释了为什么进化策略越来越成为深度强化学习领域的重要方法,就是因为随着并行计算的程度越来越高,没有什么方法可以有获得完美的梯度信息的“特权”,那么只需近似的梯度就能发挥良好表现的进化策略在这时就会体现出优势。

进化策略 ES 不仅仅是一个传统的带来有限数目的不同结果的方法

这项研究进一步拓展了对进化策略的理解。通过实证实验表明,在足够多的参数受到扰动时,进化策略的表现和 SGD 有所不同,因为进化策略优化的目标是由一个概率分布(体现为搜索空间中的点云)描述的策略群落的预期回报,而 SGD 优化的目标是单独一个策略的预期回报(搜索空间中的一个点)。 这种区别就会让进化策略更多地在搜索空间中的不同位置上走来走去,不管最后的结果是更好还是更糟(两种情况在论文中都有详细介绍)。

为一个群落的参数扰动做优化还带来另外一个结果,就是进化策略训练出的模型要比 SGD 训练出模型的健壮性好得多。进化策略优化一个参数群落的特点也体现出了进化策略和贝叶斯方法之间的有趣联系。

传统的带来有限个不同结果的方法(梯度下降)没法穿过一个狭窄的不适应区(黑色),而进化策略就可以轻松地穿过它,来到另一侧高适应性(高亮)的区域。

但另一方面,当适应区变得越来越狭窄时,进化策略会止步不前;传统的带来有限个不同结果的方法(梯度下降)就可以正常地沿这个方向走下去。前后这两张图就共同表明了这两类方法之间的异同点和需要做出的取舍。

改进进化策略的探索能力

深度神经演化方面的研究带来一个非常讨人喜欢的结果,那就是本来为神经演化开发的各种工具如今都可以用来增强深度神经网络的训练过程。Uber AI 的研究人员们开发了一种新算法,它可以把进化策略的优化能力和可拓展性与神经演化中独有的方法结合起来,用一个鼓励各自做出不同行为的智能体群落提升强化学习任务中的探索能力。

这种基于群落的探索方式和传统强化学习中只有一个智能体进行探索的做法有很大不同,其实乃至近期的关于深度强化学习的探索能力的研究都只靠一个智能体进行探索。Uber AI 的研究人员们通过实验表明,增加的这种新的探索方式可以提高进化策略在许多领域的表现,包括一些 Atari 游戏、模拟器中的仿人类行走,在这些任务中都需要躲开具有欺骗性的局部极小值。

这个智能体的目标是尽量往前走。原本的进化策略一直都没能学会躲开这个欺骗性的陷阱。而新算法支持下的智能体身背着探索的压力,就学会了如何躲开陷阱。

结论

对于有兴趣往深度神经网络方面多做探索的神经演化研究者们来说,有这么几件重要的事情需要考虑:首先,这些实验需要的计算量要比以往大得多,Uber 这几篇新论文中的实验,往往需要在上百个甚至上千个同步的 CPU 集群上运行。不过,对更多 CPU 和 GPU 性能的渴求不应该被看作是对研究的阻碍。长远来看,把演化算法拓展到大规模并行计算机系统上有很好的便捷性,也就意味着神经演化很有可能是最能在未来世界中占到好处的算法。

这些新结果和以往在低维神经演化研究中得到的结果大有不同,它们推翻了这些年以来人们对神经演化的直觉,尤其为高维空间的搜索带来了全新的启示。就像人们在深度学习中发现的一样,一旦方法的复杂度超过了某个阈值,高维空间的搜索好像反倒更容易了,因为它对局部极小值不再那么敏感了。深度学习领域的研究者们当然已经对这种思考方法习以为常,不过神经演化领域的研究者们还只是刚刚开始消化这些见解。

旧算法和现代的海量计算能力结合起来就可以带来好得令人惊讶的结果,神经演化的重新复兴就是又一个有力的例子。神经演化方法的活力也很让人感兴趣,因为神经演化研究界开发出的许多技巧可以直接用在深度神经网络尺度的网络中,为有挑战性的问题带来各种各样的工具。更进一步地,正如 Uber AI 在论文中展示的,神经演化的搜索方法和 SGD 的搜索方法不一样,从而也给机器学习的各种方法里新增了一个有趣的替代方案。Uber AI 已经开始琢磨神经演化会不会像深度学习那样迎来一次全面复兴,如果能的话,2017 年就会是这个时代的元年,而他们也非常期待在未来的几年里神经演化领域还能产生哪些精彩成果。

五篇新论文简介

《Deep Neuroevolution: Genetic Algorithms are a Competitive Alternative for Training Deep Neural Networks for Reinforcement Learning》

https://arxiv.org/abs/1712.06567

深度神经进化:在强化学习中,基因算法是训练深度神经网络的有竞争力的替代方案

重点内容概要:

用一个简单、传统、基于群落的基因算法 GA(genetic algorithm)就可以让深度神经网络进化,并且在有难度的强化学习任务中发挥良好表现。在 Atari 游戏中,基因算法的表现和进化策略 ES(evolution strategies)以及基于 Q-learning(DQN)和策略梯度的深度强化学习算法表现一样好。

深度基因算法「Deep GA」可以成功让具有超过四百万个自由参数的网络进化,这也是有史以来用传统进化算法进化出的最大的神经网络。

论文中展现出一个有意思的现象:如果想要优化模型表现,在某些情况下沿着梯度走并不是最佳选择

新颖性搜索算法(Novelty Search)是一种探索算法,它适合处理反馈函数带有欺骗性、或者反馈函数稀疏的情况。把它和深度神经网络结合起来,就可以解决一般的反馈最大化算法(比如基因算法 GA 和进化策略 ES)无法起效的带有欺骗性的高维度问题。

论文中也体现出,深度基因算法「Deep GA」具有比进化策略 ES、A3C、DQN 更好的并行性能,那么也就有比它们更快的运行速度。这也就带来了顶级的编码压缩能力,可以用几千个字节表示带有数百万个参数的深度神经网络。

论文中还尝试了在 Atari 上做随机搜索实验。令人惊讶的是,在某些游戏中随机搜索的表现远远好于 DQN、A3C 和进化策略 ES,不过随机搜索的表现总还是不如基因算法 GA。

《Safe Mutations for Deep and Recurrent Neural Networks through Output Gradients》

https://arxiv.org/abs/1712.06563

通过输出梯度在深度神经网络和循环神经网络中安全地进行突变

重点内容概要:

借助梯度的安全突变 SM-G(Safe mutations through gradients)可以大幅度提升大规模、深度、循环网络中的突变的效果,方法是测量某些特定的连接权重发生改变时网络的敏感程度如何。

计算输出关于权重的梯度,而不是像传统深度学习那样计算训练误差或者损失函数的梯度,这可以让随机的更新步骤也变得安全、带有探索性。

以上两种安全突变的过程都不要增加新的尝试或者推演过程。

实验结果:深度神经网络(超过 100 层)和大规模循环神经网络只通过借助梯度的安全突变 SM-G 的变体就可以高效地进化。

《On the Relationship Between the OpenAI Evolution Strategy and Stochastic Gradient Descent》

https://arxiv.org/abs/1712.06564

对 OpenAI 的进化策略和随机梯度下降之间的关系的讨论

重点内容概要:

在 MNIST 数据集上的不同测试条件下,把进化策略 ES 近似计算出的梯度和随机梯度下降 SGD 精确计算出的梯度进行对比,以此为基础讨论了进化策略 ES 和 SGD 之间的关系。

开发了快速的代理方法,可以预测不同群落大小下进化策略 ES 的预期表现

介绍并展示了多种不同的方法用于加速以及提高进化策略 ES 的表现。

受限扰动的进化策略 ES 在并行化的基础设施上可以大幅运行速度。

把为 SGD 设计的 mini-batch 这种使用惯例替换为专门设计的进化策略 ES 方法:无 mini-batch 的进化策略 ES,它可以改进对梯度的估计。这种做法中会在算法的每次迭代中,把整个训练 batch 的一个随机子集分配给进化策略 ES 群落中的每一个成员。这种专门为进化策略 ES 设计的方法在同等计算量下可以提高进化策略 ES 的准确度,而且学习曲线即便和 SGD 相比都要顺滑得多。

在测试中,无 mini-batch 的进化策略 ES 达到了 99% 准确率,这是进化方法在这项有监督学习任务中取得的最好表现。

以上种种结果都可以表明在强化学习任务中进化策略 ES 比 SGD 更有优势。与有监督学习任务相比,强化学习任务中与环境交互、试错得到的关于模型表现目标的梯度信息的信息量要更少,而这样的环境就更适合进化策略 ES。

《ES Is More Than Just a Traditional Finite Difference Approximator》

https://arxiv.org/abs/1712.06568

进化策略远不止是一个传统的带来有限个结果的近似方法

重点内容概要:

提出了进化策略 ES 和传统产生有限个结果的方法的一个重大区别,即进化策略 ES 优化的是数个解决方案的最优分布(而不是单独一个最优解决方案)。

得到了一个有意思的结果:进化策略 ES 找到的解决方案对参数扰动有很好的健壮性。比如,作者们通过仿人类步行实验体现出,进化策略 ES 找到的解决方案要比基因算法 GA 和信赖域策略优化 TRPO 找到的类似解决方案对参数扰动的健壮性强得多。

另一个有意思的结果:进化策略 ES 在传统方法容易困在局部极小值的问题中往往会有很好的表现,反过来说也是。作者们通过几个例子展示出了进化策略 ES 和传统的跟随梯度的方法之间的不同特性。

《Improving Exploration in Evolution Strategies for Deep Reinforcement Learning via a Population of Novelty-Seeking Agents》

https://arxiv.org/abs/1712.06560

通过一个寻找新颖性的智能体群落,改进用于深度强化学习的进化策略的探索能力

重点内容概要:

对进化策略 ES 做了改进,让它可以更好地进行深度探索

通过形成群落的探索智能体提高小尺度神经网络进化的探索的算法,尤其是新颖性搜索算法(novelty search)和质量多样性算法(quality diversity),可以和进化策略 ES 组合到一起,提高它在稀疏的或者欺骗性的深度强化学习任务中的表现,同时还能够保持同等的可拓展性。

确认了组合之后得到的新算法新颖性搜索进化策略 NS-ES 和质量多样性进化策略 QD-ES 的变体 NSR-ES 可以避开进化策略 ES 会遇到的局部最优,并在多个不同的任务中取得更好的表现,包括从模拟机器人在欺骗性的陷阱附近走路,到玩高维的、输入图像输出动作的 Atari 游戏等多种任务。

这一基于群落的探索算法新家庭现在已经加入了深度强化学习工具包。

via Uber Engineering Blog,雷锋网 AI 科技评论编译

展开
收起

你真的了解随机梯度下降中的“全局最优”吗?

【新智元导读】在密苏里科技大学与百度大数据实验室合作的一篇论文中,研究人员从理论视角对SGD在深度神经网络训练过程中的行为进行了刻画,揭示了SGD的随机项在其选择最终的全局极小值点的关键性作用。这项工作加深了对SGD优化过程的理解,也有助于构建深度神经网络的训练理论。

梯度下降是机器学习算法中最常用的一种优化方法。

其中,随机梯度下降 (Stochastic Gradient Descent, SGD) 由于学习速率快并且可以在线更新,常被用于训练各种机器学习和深度学习模型,很多当前性能最优 (SOTA) 模型都使用了SGD。

然而,由于SGD 每次随机从训练集中选择少量样本进行学习,每次更新都可能不会按照正确的方向进行,因此会出现优化波动。

对于非凸函数而言,SGD就只会收敛到局部最优点。但同时,SGD所包含的这种随机波动也可能使优化的方向从当前的局部最优跳到另一个更好的局部最优点,甚至是全局最优。

在密苏里科技大学与百度大数据实验室日前合作公开的一篇论文中,研究人员利用概率论中的大偏差理论对SGD在深度神经网络训练过程中的行为进行了刻画。

“这项工作的出发点在于试图理解SGD的优化过程和GD有什么不同,尤其是SGD的随机项(也是GD所没有的)在隐式正则化中到底起到什么作用。”论文第一作者、密苏里科技大学数学系助理教授胡文清博士在接受新智元采访时说。

“通过变分分析和构造势函数,我们发现,由于有方差 (variance) 的存在,对于任何局部最优而言,SGD都有一定逃逸的可能性。”研究负责人、百度大数据实验室科学家浣军博士告诉新智元:“如果时间足够长,SGD会以马氏链的方式遍历所有的局部最优,最终达到一个全局最优。”

“对于过参数化网络 (over parameterized network),全局最优的点在任何数据点的梯度都是0。SGD就会被限制在这样的位置上。”

不同梯度下降优化方法在损失曲面鞍点处的表现,过参数化网络的全局最优点在任何数据点的梯度都是0,SGD就会被限制在这样的位置上。

这项工作有助于我们更深刻地理解SGD在训练深度神经网络过程,以及训练其它机器学习模型中的机制和作用。

拟势函数:随机梯度下降中损失函数的隐式正则项

人们普遍认为SGD是一种“隐式正则项”,能够自己在模型或数据集中寻找一个局部最小点。

此前有研究从变分推断的角度分析SGD逃离bad minima的现象。还有研究发现,SGD的逃逸速率跟噪声协方差有关,尤其是在深度神经网络模型中。

在这篇题为《将拟势函数视为随机梯度下降损失函数中的隐式正则项》的论文中,作者提出了一种统一的方法,将拟势作为一种量化关系的桥梁,在SGD隐式正则化与SGD的随机项的协方差结构之间建立了联系。

“从‘拟势’这种统一的观点出发,能更清楚地从数学上描述SGD的长时间动力学。”胡文清博士说。

具体说,他们将随机梯度下降 (SGD) 的变分推断看做是一个势函数最小化的过程,他们将这个势函数称之为“拟势函数”(quasi–potential),用(全局)拟势φQP表示。

这个拟势函数能够表征具有小学习率的SGD的长期行为。研究人员证明,SGD最终达到的全局极小值点,既依赖于原来的损失函数f,也依赖于SGD所自带的随机项的协方差结构。

不仅如此,这项工作的理论预测对于一般的非凸优化问题都成立,揭示了SGD随机性的协方差结构在其选择最终的全局极小值点这个动力学过程的关键性作用,进一步揭示了机器学习中SGD的隐式正则化的机制。

下面是新智元对论文凸损失函数相关部分的编译,点击“阅读原文”查看论文了解更多。

局部拟势:凸损失函数的情况

我们假设原来的损失函数f(x)是凸函数,只允许一个最小点O,这也是它的全局最小点。设O是原点。

我们将在这一节中介绍局部准势函数,并通过哈密顿-雅可比型偏微分方程将其与SGD噪声协方差结构联系起来。分析的基础是将LDT解释为轨迹空间中的路径积分理论。

SGD作为梯度下降(GD)的一个小随机扰动

首先,我们给出一个假设:

假设1:假设损失函数f(x)允许梯度f(x),即L–Lipschitz:

(1)

我们假设Σ(x)是x中的分段Lipschitz,并且SDG协方差矩阵D(x)对于所有x∈Rd是可逆的,使得:

(2)

对于ε>0,SGD过程具有接近由如下确定性方程表征的梯度下降(GD)流的轨迹:

(3)

事实上,我们可以很容易地证明有以下内容:

引理1:基于假设1,我们有,对于任何T>0,

(4)

对一些常数C = C(T, L, M) > 0。

当上述公式成立时,我们可以很容易得出在区间0≤t≤T内,x(t)和xGD(t)收敛于

。因此,在有限的时间内,SGD过程x(t)将被吸引到原点O的邻域。

由于O是凸损失函数f(x)的唯一最小点,R中的每一点都被梯度流Rd吸引到O。

在仅有一个最小点O的情况下,也可以执行由于小的随机扰动而对吸引子(attractor)的逃逸特性的理解。

大偏差理论解释为轨迹空间中的路径积分

为了定量地描述这种逃逸特性,我们建议使用概率论中的大偏差理论(LDT)。粗略地说,这个理论给出了路径空间中的概率权重,而权重的指数部分由一个作用量泛函S给出。

局部拟势函数作为变分问题和哈密顿-雅可比方程的解

我们可以定义一个局部拟势函数为:

(5)

将公式(5)和下面的公式6)进行结合

(6)

给出了平稳测度的指数渐近:

(7)

这意味着在梯度系统只有一个稳定吸引子O的情况下,拟势φQP(x)是由局部φQPloc(x;x0)给定,这是变分问题(公式5)的解。

局部最小点的逃逸属性(根据局部拟势)

局部拟势φQPloc(x;x0)的另一个显著特征是它描述了局部最小点的逃逸性质。从sharp极小值到flat极小值的逃逸是导致良好泛化的一个关键特征。

LDT估计提供了一种工具,可以获得退出概率的指数估计值,并从吸引子获得平均首次退出时间。

并且我们可以证明一个过程x(t)在局部最小点处的逃逸性质,如出口概率、平均逃逸时间甚至第一个出口位置,都与拟势有关。

全局拟势:SGD在各个局部极小值点之间的马氏链动力学

现在再假设损失函数f(x)是非凸的,存在多个局部极小值点。这种情况下,对每个局部极小值点的吸引区域,都可数学上构造由前述所介绍的局部拟势。

SGD在进入一个局部极小值点之后,会在其协方差结构所带来的噪声的作用下,逃逸这个局部极小值点,从而进入另一个局部极小值点。

按照前述的介绍,这种逃逸可以由局部拟势给出。然而在全局情形,不同的极小值点之间的局部拟势不一样,而从一个极小值点到另一个极小值点之间的这种由逃逸产生的跃迁,会诱导一个局部极小值点之间的马氏链。

我们的文章指出,SGD的长时间极限行为,正是以这种马氏链的方式,遍历可能的局部极小值点,最终达到一个全局极小值点。

值得一提的是,这个全局极小值点不一定是原来损失函数的全局极小值点,而是和SGD的随机性的协方差结构有关,这一点可以由上节中局部拟势的构造方式看出。

这就表明SGD的随机性所产生的协方差结构,影响了其长期行为以及最终的全局极小值点的选择。

文章中给出了一个例子,说明当损失函数f(x)有两个完全对称的全局极小值点,而其所对应的协方差结构不同的情况下,SGD会倾向于选择其中一个全局极小值点,这一个极小值点对应的协方差结构更接近各向同性(isotropic)。

未来工作

研究人员希望通过这项工作,进一步理解SGD所训练出的局部极小点的泛化性能,特别是泛化能力与协方差结构的关系。基于此,他们期待进一步的结果将不仅仅局限于overparametrized神经网络,而对一般的深度学习模型都适用。

展开
收起

中国学霸本科生提出AI新算法:速度比肩Adam,性能媲美SGD

晓查 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI

两位学霸本科生,一位来自北大,一位来自浙大。

他们在实习期间,研究出一种新的AI算法,相关论文已经被人工智能顶级会议ICLR 2019收录,并被领域主席赞不绝口,给出5分评价。

在这篇论文中,他们公布了一个名为AdaBound的神经网络优化算法,简单地说,这个算法训练速度比肩Adam,性能媲美SGD。

这个算法适用于CV、NLP领域,可以用来开发解决各种流行任务的深度学习模型。而且AdaBound对超参数不是很敏感,省去了大量调参的时间。

两位本科生作为共同一作的这篇论文,也在Reddit上引发了热赞,作者本人也在这个论坛上展开了在线的答疑交流。

AdaBound已经开源,还放出了Demo。

AdaBound是什么

AdaBound结合了SGD和Adam两种算法,在训练开始阶段,它能像Adam一样快速,在后期又能像SGD一样有很好的收敛性。

SGD(随机梯度下降)算法历史悠久,它是让参数像小球滚下山坡一样,落入山谷,从而获得最小值。

但它最大的缺点是下降速度慢(步长是恒定值),而且可能会在沟壑的两边持续震荡,停留在一个局部最优点。

Adam(自适应矩估计)就是为了提高训练速度而生的。它和自适应优化方法AdaGrad、RMSProp等一样,通过让小球在更陡峭的山坡上下降,速率加快,来更快地让结果收敛。

虽然Adam算法跑得比SGD更快,却存在两大缺陷:结果可能不收敛、可能找不到全局最优解。也就是说它的泛化能力较差,在解决某些问题上,表现还不如SGD。

而造成这两大缺陷的原因,可能是由于不稳定和极端的学习率。

AdaBound是如何解决这个问题的?

它给学习率划出动态变化的界限,让实现从Adam到SGD的渐进和平滑过渡,让模型在开始阶段有和Adam一样快的训练速度,后期又能保证和SGD一样稳定的学习率。

这种思路是受到2017年Salesforce的研究人员的启发。他们通过实验发现,Adam后期的学习率太低影响了收敛结果。如果控制一下Adam的学习率的下限,实验结果会好很多。

对学习率的控制就和梯度裁剪差不多。在防止梯度爆炸问题上,我们可以剪掉大于某个阈值的梯度。同样的,我们也可以剪裁Adam学习率实现AdaBound。

在上面的公式中,学习率被限制在下限 η 和上限 η之间。当η = η = α时,就是SGD算法;当η=0、 η =∞时,就是Adam算法。

为了实现从Adam到SGD的平滑过渡,让η 和 η变成随时间变化的函数:η 递增从0收敛到α,η从∞递减收敛到α。

在这种情况下,AdaBound开始时就像Adam一样训练速度很快,随着学习率边界越来越受到限制,它又逐渐转变为SGD。

AdaBound还有个非常大的优点,就是它对超参数不是很敏感,省去了大量调参的时间。

实验结果

作者分别对不同模型进行实验,比较了Adam与业界流行方法SGD,AdaGrad,Adam和AMSGrad在训练集和测试集上的学习曲线。

以上结果证明了AdaBound确实有比SGD更快的训练速度。

在LSTM上的实验则证明Adam更好的泛化能力。Adam算法在该实验条件下没有收敛到最优解,而AdaBound和SGD算法一样收敛到最优解。

上图中,还无法完全体现AdaBound算法相比SGD的在训练速度上的优点,但AdaBound对超参数不敏感,是它相比SGD的另一大优势。

但使用AdaBound不代表完全不需要调参,比如上图中α=1时,AdaBound的表现很差,简单的调整还是需要的。

目前实验结果的测试范围还比较小,评审认为论文可以通过更大的数据集,比如CIFAR-100,来获得更加可信的结果。

Reddit网友也很好奇AdaBound在GAN上的表现,但作者表示自己计算资源有限,还没有在更多的模型上测试。希望在开源后有更多人验证它的效果。

自己动手

目前作者已经在GitHub上发布了基于PyTorch的AdaBound代码。

它要求安装Python 3.6或更高版本,可以用pip直接安装:

pip install adabound

使用方法和Pytorch其他优化器一样:

optimizer = adabound.AdaBound(model.parameters(), lr=1e-3, final_lr=0.1)

作者还承诺不久后会推出TensorFlow版本,让我们拭目以待。

学霸本科生

这项研究的共同一作,是两位学霸本科生。他们在滴滴实习的时候一起完成了这项研究。

一位名叫骆梁宸,就读于北京大学地球与空间科学学院,今年大四。

另一位名叫熊远昊,就读于浙江大学信电学院,今年也是大四。

骆梁宸

这名学霸今年大四,已经有四篇一作论文被人工智能顶级学术会议收录,其中1篇EMNLP 2018、2篇AAAI 2019,还有我们今天介绍的这篇,发表于ICLR 2019。

他高中毕业于北京师范大学附属实验中学,连续三年获得全国青少年信息学奥林匹克竞赛一等奖。

在2015年到2018年期间,是北大PKU Helper团队的安卓开发工程师和负责人。

2016年春季,担任数据结构与算法课程助教,还带着实验室同学们开发了一个回合制的游戏平台坦克大战。

2016年7月到2017年6月,担任UniBike技术开发VP,负责软件开发。

2017年7月到2018年5月,在微软亚洲研究院实习,做研究助理。在这段研究经历中,发表了两篇被AAAI收录的论文。

2018年7月至今,在滴滴人工智能实验室做研究助理,本篇文章介绍的研究成果,就是这一工作中的成果。

目前,他也在北大语言计算与机器学习组实习,导师为研究员孙栩,也是这篇论文的作者之一。

熊远昊

他现在是浙江大学信电学院信息工程专业的大四学生,同样是学霸级人物,三年综合成绩排名年级第一。

在发表这篇ICLR论文之前,他还以第二作者身份在通信领域的权威期刊上发表过论文1篇。

此外,论文还有一位作者,是南加州大学的副教授Yan Liu。

如果,你对他们的研究感兴趣,请收好下面的传送门:

论文:ADAPTIVE GRADIENT METHODS WITH DYNAMIC BOUND OF LEARNING RATEhttps://openreview.net/pdf?id=Bkg3g2R9FX

论文评审页面:https://openreview.net/forum?id=Bkg3g2R9FX

GitHub地址:https://github.com/Luolc/AdaBound

Reddit讨论地址:https://www.reddit.com/r/MachineLearning/comments/auvj3q/r_adabound_an_optimizer_that_trains_as_fast_as/

展开
收起

两辆SGD 333K牛牌车上路行驶 武汉交警为你揭开事实真相

近日,网友爆料“我在武昌看到两辆劳斯莱斯,悬挂的都是SGD 333K车牌,是临时入境车的套牌车吗?这是哪里发的车牌?”

据市公安交管部门相关负责人介绍,接到爆料后,交管局涉牌涉证中心立即通过车控网+平台,对悬挂SGD 333K“号牌”的车辆进行搜索,经调查发现,目前在武汉市内仅有一辆白色的劳斯莱斯悬挂SGD 333K“号牌”上路行驶,随后,民警利用查缉布控系统锁定这辆白色的劳斯莱斯,并找到其小区停车场的停车位。经民警核查,该车悬挂的“号牌”并非哪个国家或者区域的机动车号牌,而是一块“装饰牌”。

找到车主后,民警立即对该车进行了细致地检查,经车主介绍及民警核查发现,该车本是一辆酒红色的劳斯莱斯,最近通过贴膜将车变成了白色,一直以来都悬挂的SGD 333K的“装饰牌”,真正的车牌并未悬挂,目前,该车临时号牌已过期。3日,交管局涉牌涉证中心民警以“不按规定安装机动车号牌”、“改变车身颜色未按规定时限办理变更登记”,对当事人处以400元罚款,记12分的处罚。

交警提醒:当你拿到机动车号牌,必须第一时间按规定悬挂号牌;你为爱车改变车身颜色,如是纯色并不炫目、反光,应当在变更后10日内向车辆管理所申请变更登记,旧车交易市场均可办理。

展开
收起

引入Powerball 与动量技术,新SGD优化算法收敛速度与泛化效果双提升|IJCAI

本文介绍的是 IJCAI-2020论文《pbSGD: Powered Stochastic Gradient Descent Methods for Accelerated Non-Convex Optimization》,该论文由华中科技大学、滑铁卢大学和加州大学伯克利分校合作完成。

作者 | 孙伟高

编辑 | 丛 末

论文地址: https://www.ijcai.org/Proceedings/2020/0451.pdf

开源地址:https://github.com/HAIRLAB/pbSGD

1

前言

深度学习的训练由于高维函数空间和随机目标函数的存在,相比于传统优化而言更加困难。随机梯度下降(Stochastic Gradient Descent)作为深度学习领域内第一种被广泛用于优化训练的方法,通过其计算小批量数据的目标损失,并向负梯度方向迭代更新模型参数。目前,基于SGD方法已衍生出许多用于更加高效训练神经网络的优化方法。

在这篇论文中,我们提出了一种新的基于SGD的优化方法(pbSGD)用于训练神经网络。

与目前的主流思路(自适应学习率或者动量法)不同,该论文作者在之前的工作[1]中,通过利用ODE的有限时间稳定性的直观表达,提出了一种新的加速算法收敛的方法。这类称为Powerball的方法,是通过简单的将幂系数 γ∈[0,1)添加到各类基于梯度的优化方法中的梯度上得到的。从本质上讲,Powerball方法可以看作是相对于p-范数的最速下降法,其中 p = 1 + 1/γ。这里,Powerball函数而不是其他非线性函数的一种直观的解释是:一方面,数学中带有指数(幂)算子的多项式可以用来逼近任意的非线性函数。因此,作者们将幂系数作为变量参数来创建Powerball函数。另一方面,因为幂系数 γ∈[0,1),根据幂函数的作用原理,不难发现,通过引入作用于梯度的幂系数,可以有效地改善梯度消失的现象。

对于离散时间模型(优化算法)在有限时间内收敛性的推导是非常困难的。正是这一点促使[1]中作者提出了优化方法的连续时间模型,并分析了它们在有限时间内的收敛性。此外,[1]中指出了对于给定的优化问题,如何选取最优的γ在理论上是开放的。众所周知,当涉及大规模优化问题时,初始迭代对于给定的计算约束是至关重要的。为此,[1]中也开发了几类Powerball方法的变形,它们在经验上都分别优于标准的优化方法,特别是在初始迭代中。在[1]中的基于多个实际数据集上的实验表明,文中所提出的方法可以使(随机)梯度下降法和L-BFGS方法的收敛速度提高10倍。

具体而言,基于[1]中作者提出的在梯度下降法中应用Powerball函数的基本思想,本文将其推广到了SGD的情形,得到了一类简单且通用的改善深度神经网络训练效率的方法。在pbSGD中,Powerball函数作用于SGD中的随机梯度项,其作用机制与[1]中一致。该方法在迭代过程中对随机梯度做了简单的幂函数变换改善了SGD方法的性能,通过只引入一个额外的超参数即幂指数项。我们进一步提出了结合动量(momentum)的pbSGD,即pbSGDM,并给出了两种方法的收敛性理论分析。

实验表明,提出的pbSGD和pdSGDM方法,可以实现与其他自适应梯度方法相比更快的收敛速度,以及与SGD方法的相近的泛化效果,同时该方法可以保持[1]中方法的优点,主要包括在初始迭代时的训练加速、算法性能对超参数的鲁棒性,以及有效地改善梯度消失问题。

2

研究背景

随机优化是深度学习研究中非常重要的一环。基于SGD方法,近些年提出了许多其他能有效训练深度神经网络的优化方法,例如结合动量的SGD方法(SGD with Momentum,SGDM)、RMSProp和Adam等。自适应算法(比如AdaGrad、RMSProp、Adam)通常在前期可以获得较好的收敛性能,然而最近研究表明自适应算法在优化中容易收敛到局部极小值,在测试集上泛化性能较差。因此许多计算机视觉与自然语言处理方面的研究仍然采用SGD用于训练网络。另一方面,相比于自适应方法SGD在收敛速度方面有所欠缺。因此,如何使得SGD可以在非凸条件下有效逃离鞍点并取得更好的收敛效果成为了热点研究领域。

针对SGD的设计思路目前主要有两种:动量法和自适应学习率。SGDM从物理角度出发引入了一个动量项,并在实际应用中取得了比SGD更快的收敛效果,动量可以看作是指数滑动平均的一个特例。自适应算法通常采用自适应学习率的思路,通过积累历史的二阶与一阶梯度信息来动态修改学习率,最早应用于AdaGrad方法中,Adam结合了AdaGrad与RMSProp算法成为目前最为常用的优化器之一。

与目前的主流思路(自适应学习率或者动量法)不同,我们提出了一种新方法,采用Powerball函数对梯度项作非线性变换来改善SGD在非凸情况下的表现,即pbSGD方法。本文的主要贡献如下所示:

我们基于SGD提出了一种简单易用的优化方法pbSGD,给出结合了动量的pbSGD变体即pbSGDM。我们在多种数据集与任务上进行了详尽的实验对比,实验结果表明本文提出的方法能在训练前期取得比自适应算法更好的收敛速度,同时在测试集上与SGD和SGDM的泛化效果相近。我们提供了在非凸条件下pbSGD和pbSGDM的收敛速度的理论分析。

3

算法介绍

我们这里给出所提两种算法的思路和推导,其中pbSGD把Powerball优化方法和传统的随机梯度下降法相结合,pbSGDM是pbSGD引入动量项以后的延伸。

1、pbSGD

训练一个含有n个自由参数的DNN网络,可以被建模为一个无约束的优化问题:

这里f是一个有下界的函数,SGD已经被证明是高维优化问题的一个有效且高效的求解方法。它通过迭代地更新参数向量对f进行了优化,这个更新是朝着随机梯度g的反方向进行的。这里的随机梯度是通过训练数据集的第t个小批次计算而来。SGD的参数更新策略如下所示:

现在,我们介绍一个新颖的非线性函数:

并称之为Powerball函数。这里sign是指符号函数,如果z是一个向量,则Powerball函数要作用到z的每一个元素上。这里的参数gamma是Powerball函数引入的一个新参数,用以调整Powerball函数作用的机制和强度。

这里,我们把Powerball函数作用到SGD的随机梯度项上,如下所示:

便得到了新的pbSGD优化算法。

2、pbSGDM

动量技术是从物理过程中获取的灵感,已将其成功地应用于SGDM,并在大多数情况下可以获得神经网络的更佳训练结果。我们这里同样提出pbSGD的动量加速形式,即pbSGDM,其参数更新规则为:

本文提出的两个算法,其伪代码可总结为如下形式:

4

实验对比

在三个公开数据集CIFAR-10、CIFAR-100和ImageNet上,我们分别使用了几种不同的模型来比较算法的收敛速度和泛化效果,其中CIFAR-10用于训练模型ResNet-50和DenseNet-121、CIFAR-100用于训练ResNet-29和WideResNet、ImageNet用于训练ResNet-50。另外我们构建了一个13层的全连接神经网络来验证pbSGD缓解梯度消失的能力。

1、收敛和泛化对比实验

我们在三个数据集上完成了七个不同的对比实验,对比用的优化器有SGDM、pbSGD、pbSGDM、AdaGrad、RMSProp和Adam,我们在1.0~1e-4的范围内通过网格搜索找到最佳的学习率,每个学习率完成五次求平均值以避免随机误差,其他的超参数保持默认值,实验中参数的设置与其他论文保持一致。下图展示了最佳学习率的情况下,各优化器在不同实验下的训练曲线,其中箭头标注出的是测试集上最佳的准确率,实验结果如下所示:

从实验结果中我们可以看出加入Powerball函数得到的pbSGD算法在没有积累历史梯度信息的情况下,在前期收敛上比自适应算法(AdaGrad、RMSProp和Adam)更加迅速,在CIFAR-10和CIFAR-100测试集上的表现与SGD相比相差无几,pbSGDM和pbSGD表现相近。在ImageNet数据集上pbSGD仍然展现出了较好的收敛速度,但是我们注意到泛化性能与SGD差距加大,我们猜测是自适应算法和pbSGD改变了梯度分布,在较大数据集上导致了不好的结果。

2、梯度消失

Powerball函数的引入重新缩放了梯度向量,因此在深度神经网络中还可以缓解梯度消失的问题。我们设计了一个13层的全连接网络,激活函数选择为ReLU,分别使用SGD和pbSGD来训练,学习率仍然采用网格搜索选取。通过实验我们发现SGD无法训练该网络结构,而pbSGD在缩放梯度向量后可以正常训练模型。

3、鲁棒性改善

在实验中我们发现,超参数gamma的引入不仅可以加速收敛,同时可以改善对测试集准确率和收敛性的鲁棒性。(gamma=1.0时pbSGD变为了SGD算法)

1)改善学习率对准确率的鲁棒性

超参数gamma可以在设置学习率较小时规范测试集表现,例如在学习率eta=1e-3、gamma=0.6时,pbSGD的测试集准确率为90.06%,而SGD准确率为79.87%。

2)改善学习率对收敛的鲁棒性

超参数gamma同样可以改善学习率对收敛的鲁棒性,在学习率设置的不太合适时pbSGD仍然能取得较好的收敛表现。

4、与学习率策略相结合

pbSGD只对梯度项做了改变,因此可以与其他优化方法很好的结合起来去进一步提升整体的性能。我们选择了restart的学习率策略用于对比实验,从结果中可以看出结合了学习率策略的pbSGD取得了更好的结果。

5、对batch size的鲁棒性

增加batch size可以加大每次迭代时的计算量从而加速训练过程,然而因为改变了梯度的分布特点,也会导致泛化性能的变差。我们采用不同的大小进行对比实验来探讨pbSGD对batch size的鲁棒性。从实验中我们可以看出,batch size的增加使得SGD的泛化性能迅速降低,而对pbSGD的影响相对较小,Powerball函数的引入提升了SGD对于batch size的鲁棒性。

5

总结

本文中我们提出了一种简单易行但切实有效的方法用于改进SGD和SGDM方法的性能,实验结果证明该方法可以有效地加速训练中模型前期的收敛、改善超参数选择的鲁棒性,并且缓解梯度消失的问题。另外,该方法可以很好的与其他方法相互补,比如学习率策略,用于进一步改进优化器的性能。

参考文献:

[1] Y. Yuan, M.Li, J. Liu and C. Tomlin, "On the Powerball Method: Variants of DescentMethods for Accelerated Optimization," in IEEE Control Systems Letters,vol. 3, no. 3, pp. 601-606, 2019.

招聘

AI科技评论希望能够招聘科技编辑/记者

办公地点:北京/深圳

职务:以跟踪学术热点、人物专访为主

工作内容:

1、关注学术领域热点事件,并及时跟踪报道;

2、采访人工智能领域学者或研发人员;

3、参加各种人工智能学术会议,并做会议内容报道。

要求:

1、热爱人工智能学术研究内容,擅长与学者或企业工程人员打交道;

2、有一定的理工科背景,对人工智能技术有所了解者更佳;

3、英语能力强(工作内容涉及大量英文资料);

4、学习能力强,对人工智能前沿技术有一定的了解,并能够逐渐形成自己的观点。

感兴趣者,可将简历发送到邮箱:jiangbaoshang@yanxishe.com

展开
收起

东南亚PSC赛区Divine、AG、SGD,出战11月绝地求生PGC世界赛

东南亚PSC赛区第三阶段的比赛昨日正式落幕,我们来看看最终的积分情况

东南亚赛区第三阶段的比赛分2个部分组成第1部分是线上赛阶段,打45场比赛,越南的黑马战队SGD战队凭借优异的发挥力压泰国战队Divine和AG,成功夺得线上赛冠军,晋级到线下赛,线下赛共15局比赛

最终Divine、AG还是更胜一筹在线下赛阶段成功实现反超,最终Divine获得了冠军,AG获得了亚军,SGD获得了季军,因为Divine是第一阶段的冠军,AG是第二阶段的冠军,已经获得了PGC的门票,所以第三阶段的季军SGD获得了PGC最后一张门票。

至此东南亚赛区的参加世界赛的战队分别是:Divine、AG、SGD。

或者很多人对Divine不是很了解,对AG印象比较深刻,但其实东南亚赛区最强的一直是Divine战队,前几次世界赛都获得了资格,但都因为签证问题未能出席,期待此次赛事他们的表现,据了解签证已经过了。

展开
收起

腾讯AI Lab误差补偿式量化SGD:显著降低分布式机器学习通信成本

选自arXiv

作者:Jiaxiang Wu、Weidong Huang、Junzhou Huang、Tong Zhang

机器之心编译

参与:Panda

在量子在分布式机器学习应用中,各个节点之间的通信效率往往会成为整体性能的关键制约因素,目前的常见解决方法是对节点之间的通信信息进行压缩,但这会引入量化误差。为了解决这一问题,腾讯 AI Lab 提出了一种误差补偿式量化随机梯度下降(ECQ-SGD)方法。该论文已被将于当地时间 7 月 10-15 日在瑞典斯德哥尔摩举办的 ICML 2018 接收,此次实验室共有 16 篇论文被收录。在 ICML 2018 与 IJCAI 2018 大会期间(今年都在斯德哥尔摩),腾讯将举办 Tencent Academic and Industrial Conference (TAIC),诚邀全球顶尖 AI 学者、青年研究员与腾讯七大事业群专家团队探讨最前沿 AI 研究与应用。

由于数据近年来的爆炸式增长,很多不同领域都已经越来越关注大规模机器学习了,比如计算机视觉和语音识别领域。在这些应用中,训练数据的量往往过于庞大,以至于难以通过单个计算节点实现有效的处理,所以分布式优化方法是这些应用中的一个核心构建模块。

数据并行化是一种常用的分布式学习框架,其中整个数据集会被分割和存储在一个集群中的多个节点上。每个节点都会计算各自的局部梯度并与其它节点交流梯度以更新模型参数。对于这样的学习系统,消耗的时间可大致归类为计算时间和通信时间。其中通信往往会成为性能的瓶颈,尤其是对于具有大量参数的大型集群和/或模型。

目前已有一些试图通过降低通信成本来提升分布式学习的效率的研究工作。某些方法关注的是将梯度量化为定点数(Zhou et al., 2016; Alistarh et al., 2017),这样需要传输的比特数就会少很多。还有一些研究探索过更为激进的量化方法,比如二元或三元表征(Seide et al., 2014; Strom, 2015; Wen et al., 2017)。还有方法是在通信过程中在梯度上施加稀疏性,这样每轮迭代中就仅有一小部分梯度在节点之间交换(Wangni et al., 2017; Lin et al., 2018)。

这些方法的基本思想基本都是将梯度压缩成某种特定的形式,让其中每一项都能使用远少于原来的 32 位浮点数的比特数表示。这样的压缩会在优化过程中引入额外的随机噪声,即量化误差,这会减缓收敛速度,甚至导致发散。1Bit-SGD(Seide et al., 2014)采用了误差反馈方案,即使用上一轮迭代的量化误差来补偿当前的局部梯度,之后再将其输入量化函数。尽管该方法的提出者表示这有助于改善收敛行为,但却没有给出理论分析来证明其有效性。

在本论文中,我们提出了误差补偿式量化随机梯度下降(ECQ-SGD)方法。我们的算法也使用了误差反馈方案,但我们会累积所有之前的量化误差,而不是像 1Bit-SGD 一样只使用上一轮迭代的量化误差。尽管实验评估表明这种修改能实现比很多基准方法更快更稳定的收敛,但为这种现象提供理论保证却并不简单。

Alistarh et al., 2017 已经证明,对于他们提出的 QSGD 算法,达到特定次优间隙(sub-optimality gap)所需的迭代数量正比于随机量化梯度的方差界限。但是,这不能解释我们的方法的收敛行为,因为我们的量化梯度是对原始梯度的有偏估计,这与 QSGD 的情况不同。实际上,由于使用的是累积的量化误差,我们的量化梯度的方差界限甚至比 QSGD 的还大。为了解决这一问题,我们从另一个角度给出了收敛性分析,并且证明了在合适的超参选择下,我们的算法比 QSGD 具有更紧致的最坏情况误差界限(worst-case error bound)。事实证明,我们提出的误差反馈方案可以很好地抑制量化误差对误差界限的贡献;正如我们在实验中观察到的那样,这能实现比 QSGD 更小的次优间隙。

算法 1:误差补偿式量化 SGD

在量化完成之后,总体通信成本会降至 32+dr 比特(r 32),远少于原来的 32 位全精度梯度所需的 32d 比特;其中 d 是原向量的维度;

,其中 s 是非零量化级别的数量:s 越大,则量化越细粒度,通信成本也就越高。

图 2:损失函数值与当前迭代解到最优解距离的比较(左图:Syn-256;中图:Syn-512;右图:Syn-1024)。

图 3:在 Syn-20K 数据集上各阶段所消耗的时间以及测试损失(括号中)的比较。QSGD 和 ECQ-SGD 的数字后缀表示非零量化级别的数量 s。这里的总时间是 1000 次迭代所消耗的时间。

图 6:在 ILSVRC-12 数据集上训练 ResNet-50 模型时,使用不同数量的 GPU 的吞吐量比较。

论文:误差补偿式量化 SGD 及其在大规模分布式优化中的应用(Error Compensated Quantized SGD and its Applications to Large-scale Distributed Optimization)

论文地址:https://arxiv.org/abs/1806.08054

摘要:大规模分布式优化对很多不同应用而言都很重要。对于基于数据并行的分布式学习,节点之间的梯度通信往往会成为性能的瓶颈。我们在本论文中提出了可提升训练效率的误差补偿式量化随机梯度下降算法。该方法通过量化局部梯度来降低通信开销,并且使用累积的量化误差来加快收敛速度。此外,我们还提供了对其收敛行为的理论分析,并展示了其相对于其它竞争方法的优势。我们进行了大量实验,结果表明我们的算法在不降低表现水平的情况下能将梯度压缩高达两个数量级。

展开
收起

北大95后学霸亲述:AI新算法媲美SGD,这是我第一次研究优化方法

【新智元导读】由北大、浙大两位本科生为主开发的AdaBound算法,速度与Adam不相上下,性能媲美SGD,近期被ICLR 2019收录,网友惊呼太酷太强大。昨天,论文的第一作者、北大大四学生骆梁宸向新智元进行了详细解读。

本科生又一次刷新了AI的新成绩。

最近,来自北大和浙大的两位大四学生,开发了一种名为AdaBound的算法,能够实现更快的训练速度和更好的性能,速度与Adam不相上下,性能媲美SGD。

AdaBound算法相关论文Adaptive Gradient Methods with Dynamic Bound of Learning Rate已经被AI顶会 ICLR 2019收录。

值得一提的是,论文一作第一次在GitHub上公布AdaBound代码之后,就获得了300多赞,评论中无数人感叹:实在是太酷了!

昨天,论文一作、北京大学的骆梁宸向新智元解读了AdaBound算法。

以下是他的分享:

AdaBound算法:像Adam一样快,又像SGD一样好的优化器

以随机梯度下降 (SGD) 为代表的一阶优化算法自上世纪50年代被提出以来,在机器学习领域被广泛使用,如今也是我们训练模型时最为常用的工具。

但是,由于SGD在更新参数时对各个维度上梯度的放缩是一致的,这有可能导致训练速度缓慢,并且在训练数据分布极不均很时训练效果很差。为了解决这一问题,近些年来涌现了许多自适应学习方法,包括 Adam、AdaGrad、RMSprop 等。其中 Adam 由于其快速的收敛速度,成为了如今最流行的 Optimizer 之一。

然而,在许多最新的State of The Art 中,研究者们没有使用新颖流行的自适应学习方法,而是仍然使用“过时的” SGD 或是其 +momentum 和 +nesterov 变种,这是为什么呢?事实上,Wilson 等人在其NeurIPS 2017的研究中指出,自适应方法虽然可以在训练早期展现出快速的收敛速度,但其在测试集上的表现却会很快陷入停滞,并最终被 SGD 超过。

ICLR 2018的最佳论文中,作者提出了名为 AMSGrad 的新方法试图更好的避免这一问题,然而他们只提供了理论上的收敛性证明,而没有在实际数据的测试集上进行试验。而后续的研究者在一些经典 benchmarks 比较发现,AMSGrad 在未知数据上的最终效果仍然和 SGD 有可观的差距。

我们每个人都希望在训练模型时可以收敛的又快又好,但似乎目前来看我们很难同时做到这两点,或者至少我们需要对现有优化算法的超参数进行精细的调整。机器学习和深度学习社区如今非常需要一个像 Adam 一样快,又像 SGD 一样好的优化器。

关键点:限制极大和极小的实际学习率

最早的对各类流行的自适应学习器和 SGD 进行系统的比较分析的工作来自上文提及的 Wilson 等,在他们的文章中,首次用系统的实验和样例问题指出了自适应方法的性能问题。Wilson 等同时猜测,自适应方法较差的泛化性能有可能是来源于训练后期不稳定的极端学习率。然而,他们并没有给出更多关于这一猜测的原因,包括理论分析或实验。

沿着这一思路,在Adaptive Gradient Methods with Dynamic Bound of Learning Rate这篇文章中,作者首先进行了初步的实验来作参考:他们在 ResNet-34 中随机选取了 9 个卷积核和 1 个全连接层偏置向量,并从中再各随机取样一个维度的变量,统计其在 CIFAR-10 上训练末期的学习率。

采样参数的学习率。每个单元格包含一个通过对学习率进行对数运算得到的值。颜色越浅的单元格代表越小的学习率。

我们可以看到,当模型接近收敛时,学习率中有大量的极端值(包含许多小于 0.01 和大于 1000 的情况)。这一现象表明在实际训练中,极端学习率是实际存在的。

而还有两个关键问题没有明确:

(1) 过小的学习率是否真的对模型收敛产生不良影响?

(2) 实际的学习率很大程度上取决于初始学习率的设定,我们可不可以通过设定一个较大的学习率还避免这一影响呢?

于是,作者继续给出了理论证明:

这一结果表明了极端学习率的潜在负面影响,在有效解决这一问题之前,我们很可能无法使用自适应学习器得到足够好的最终模型;需要设法对训练末期 Adam 的学习率做出限制。

AdaBound:对学习率进行动态裁剪

为了解决这一问题,我们希望能有一种优化器可以结合 Adam 和 SGD 的优势,即分别是训练早期快速的收敛速度和训练末期好的最终性能。或者直观的形容,我们希望它在训练早期像 Adam,而在训练末期更像 SGD。

基于这一思路,作者通过对学习率进行动态裁剪,提出了 Adam 和 AMSGrad 的变种,AdaBound 和 AMSBound。这一方法受到在工程实现中非常常用的梯度裁剪技术的启发。只不过这时裁剪发生在学习率而非梯度上。考虑如下的裁剪操作:

其中 Clip 可以将实际学习率限制在下界

和上界

之间。很容易发现,SGD 和 Adam 分别是应用梯度裁剪的特殊情况:学习率为

的 SGD 可视为

;Adam 可视为

,

。其他取值则介于两者之间。那么,如果用两个关于 t 的函数来取代固定值作为新的上下界,其中

从 0 逐渐收敛至

也逐渐收敛至

,那么我们就成功实现了从Adam到SGD的动态过度。

在这一设置下,在训练早期由于上下界对学习率的影响很小,算法更加接近于 Adam;而随着时间增长裁减区间越来越收紧,模型的学习率逐渐趋于稳定,在末期更加贴近于 SGD。AMSBound 可以对 AMSGrad 采用类似的裁剪得到。

实验结果

作者将 AdaBound/AMSBound 和其他经典的学习器在一些 benchmarks 上进行了实验验证,包括:SGD (或 momentum 变种)、AdaGrad、Adam、AMSGrad。以下是作者在论文中提供的学习曲线。

可以看到,在几项 CV 和 NLP 的 benchmark 任务中,AdaBound/AMSBound 都在训练前期可以快速且平滑收敛的情况下,同时在末期得到了优秀的最终性能,可以取得与 SGD 类似甚至更好的结果。

额外惊喜:对超参数更低的敏感性

AdaBound还带给我们一个额外惊喜:它对超参数相对更不敏感,尤其是和 SGD(M) 比较。这一结果是非常意外也非常让人惊喜的,因为这意味着 AdaBound 有更高的鲁棒性。通过使用这一新型优化器,我们可能大大节省花在调整超参数上的时间。在常见的情形下,使用其默认参数即可取得相对优秀和稳定的最终结果。

当然,作者也同样指出,尽管 AdaBound 相对 SGD 更加稳定,但这并不意味着我们可以一劳永逸再也不需要调整超参了,机器学习没有银弹。一个模型的最终结果取决于方方面面的因素,我们仍然需要结合具体问题和数据特征具体分析,对 AdaBound 做出合适的调整。而 AdaBound 最大的优势在于,你很可能用在这上边的时间会比以前少很多!

代码已在GitHub开源

AdaBound 的 PyTorch 实现已经在 GitHub 上开源。作者同样提供了可以简单只用 pip 安装的版本,大家可以像使用其他任何一种 PyTorch optimizer 一样使用 AdaBound。

此外,作者还提供了一个非常方便的可视化 Jupyter notebook 并提供了相应的训练代码,方便感兴趣的同学复现和直观比较新优化器的结果。

GitHub上搜索AdaBound即可。

以上就是作者的解读。

这个工作也在Reddit机器学习社区引起热议,不少人表示非常cool,也有人提出建议和疑问:有没有TensorFlow实现?能不能在更大的数据集工作?在GAN上的结果如何等等。

作者后来在Reddit帖子更新中表示:

正如许多人以及评审人员所建议的那样,在更多、更大的数据集上,使用更多模型测试AdaBound会更好,但很不幸,我只有有限的计算资源。我几乎不可能在ImageNet这样的大型基准上进行实验。如果谁能在更大的基准上测试AdaBound,并告诉我它的缺点或bug,那就太好了!这对于改进AdaBound和进一步的工作很有帮助。我相信在计算机科学领域没有什么灵丹妙药。这并不意味着使用AdaBound你就不用调参了。模型的性能取决于很多东西,包括任务、模型结构、数据分布等等。你仍然需要根据具体情况决定使用哪些超参数,但是在这上面花的时间可以比以前少很多!这是我第一次研究优化方法。由于这是一个由本科生、并且对这个领域来说完全是新人的团队做的项目,我相信AdaBound非常需要进一步的改进。我会尽我最大的努力把它做好。再次感谢大家的建设性意见!这对我有很大的帮助。:D

作者真容

论文一共由四位作者完成,分别是:

骆梁宸,北京大学大四在读,1996年出生,目前为北京大学计算语言学重点实验室的研究助理,导师是孙栩教授。

Yuanhao Xiong,浙江大学信电学院信息工程专业,同样是大四本科生。他的研究兴趣是数据挖掘和机器学习,在发表这篇文章之前他已经在IEEE通信领域期刊发表一篇论文。

Yan Liu

Yan Liu,南加州大学计算机科学系副教授,南加州大学机器学习中心主任。Philip and Cayley MacDonald Endowed Early Career Chair。

孙栩

孙栩,北京大学信息学院研究员,博士生导师。日本东京大学博士。研究领域包括:自然语言处理,机器学习,深度学习。

论文的两位本科学生骆梁宸、Yuanhao Xiong今年都上大四。骆梁宸曾在微软亚洲研究院、DiDi AI Labs等机构实习过。他的研究兴趣是自然语言处理深度学习,尤其是对话系统和语言理解/表征。他也对机器学习理论有兴趣,比如优化算法。

作为一名本科生,骆梁宸已经在ICLR、AAAI、EMNLP等顶会发表4篇文章,其中3篇一作!体会一下:

后生前途无量啊!

展开
收起

SGD过程中的噪声如何帮助避免局部极小值和鞍点?

来自 UC Berkeley RISELab 的本科研究员 Noah Golmant 发表博客,从理论的角度分析了损失函数的结构,并据此解释随机梯度下降(SGD)中的噪声如何帮助避免局部极小值和鞍点,为设计和改良深度学习架构提供了很有用的参考视角。

当我们着手训练一个很酷的机器学习模型时,最常用的方法是随机梯度下降法(SGD)。随机梯度下降在高度非凸的损失表面上远远超越了朴素梯度下降法。这种简单的爬山法技术已经主导了现代的非凸优化。然而,假的局部最小值和鞍点的存在使得分析工作更加复杂。理解当去除经典的凸性假设时,我们关于随机梯度下降(SGD)动态的直觉会怎样变化是十分关键的。向非凸环境的转变催生了对于像动态系统理论、随机微分方程等框架的使用,这为在优化解空间中考虑长期动态和短期随机性提供了模型。

在这里,我将讨论在梯度下降的世界中首先出现的一个麻烦:噪声。随机梯度下降和朴素梯度下降之间唯一的区别是:前者使用了梯度的噪声近似。这个噪声结构最终成为了在背后驱动针对非凸问题的随机梯度下降算法进行「探索」的动力。

mini-batch 噪声的协方差结构

介绍一下我们的问题设定背景。假设我想要最小化一个包含 N 个样本的有限数据集上的损失函数 f:R^n→R。对于参数 x∈R^n,我们称第 i 个样本上的损失为 f_i(x)。现在,N 很可能是个很大的数,因此,我们将通过一个小批量估计(mini-batch estimate)g_B:

来估计数据集的梯度 g_N:

。其中,B{1,2,…,N} 是一个大小为 m 的 mini-batch。尽管 g_N 本身就是一个关于梯度 f(x) 的带噪声估计,结果表明,mini-batch 抽样可以生成带有有趣的协方差结构的估计。

引理 1 (Chaudhari & Soatto 定理:https://arxiv.org/abs/1710.11029):在回置抽样(有放回的抽样)中,大小为 m 的 mini-batch 的方差等于 Var(g_B)=1/mD(x),其中

该结果意味着什么呢?在许多优化问题中,我们根本的目标是最大化一些参数配置的似然。因此,我们的损失是一个负对数似然。对于分类问题来说,这就是一个交叉熵。在这个例子中,第一项

是对于(负)对数似然的梯度的协方差的估计。这就是观测到的 Fisher 信息。当 N 趋近于正无穷时,它就趋向于一个 Fisher 信息矩阵,即相对熵(KL 散度)的 Hessian 矩阵。但是 KL 散度是一个与我们想要最小化的交叉熵损失(负对数似然)相差甚远的常数因子。

因此,mini-batch 噪声的协方差与我们损失的 Hessian 矩阵渐进相关。事实上,当 x 接近一个局部最小值时,协方差就趋向于 Hessian 的缩放版本。

绕道 Fisher 信息

在我们继续详细的随机梯度下降分析之前,让我们花点时间考虑 Fisher 信息矩阵 I(x) 和 Hessian 矩阵 ^2f(x) 之间的关系。I(x) 是对数似然梯度的方差。方差与损失表面的曲率有什么关系呢?假设我们处在一个严格函数 f 的局部最小值,换句话说,I(x)=^2f(x) 是正定的。I(x) 引入了一个 x附近的被称为「Fisher-Rao metric」的度量指标: d(x,y)=√[(xy)^TI(x)(xy) ]。有趣的是,参数的 Fisher-Rao 范数提供了泛化误差的上界(https://arxiv.org/abs/1711.01530)。这意味着我们可以对平坦极小值的泛化能力更有信心。

回到这个故事中来

接下来我们介绍一些关于随机梯度下降动态的有趣猜想。让我们做一个类似中心极限定理的假设,并且假设我们可以将估计出的 g_B 分解成「真实」的数据集梯度和噪声项:g_B=g_N+(1√B)n(x),其中 n(x)N(0,D(x))。此外,为了简单起见,假设我们已经接近了极小值,因此 D(x)≈^2f(x)。n(x) 在指数参数中有一个二次形式的密度ρ(z):

这表明,Hessian 矩阵的特征值在决定被随机梯度下降认为是「稳定」的最小值时起重要的作用。当损失处在一个非常「尖锐」(二阶导很大)的最小值,并且此处有许多绝对值大的、正的特征值时,我很可能会加入一些把损失从朴素梯度下降的吸引域中「推出来」的噪声。类似地,对于平坦极小值,损失更有可能「稳定下来」。我们可以用下面的技巧做到这一点:

引理 2:令 v∈R^n 为一个均值为 0 并且协方差为 D 的随机向量。那么,E[||v||^2]=Tr(D)。

通过使用这一条引理以及马尔可夫不等式,我们可以看到,当 Hessian 具有大曲率时,更大扰动的可能性越高。我们还可以考虑一个在局部最小值 x 周围的「稳定半径」:对于给定的 ∈(0,1),存在一些 r(x)>0,使得如果我们的起点 x_0 满足 ||x_0x||

定理 1: 一个严格的局部最小值 x 的稳定性半径 r(x) 与 ^2f(x) 的谱半径成反比。

让我们把这个结论和我们所知道的 Fisher 信息结合起来。如果在随机梯度下降的动态下,平坦极小值更加稳定,这就意味着随机梯度下降隐式地提供了一种正则化的形式。它通过注入各项异性的噪声使我们摆脱了 Fisher-Rao 范数所带来的不利泛化条件。

深度学习的启示:Hessian 矩阵的退化和「wide valleys」

在深度学习中,一个有趣的现象是过度参数化。我们经常有比做示例运算时更多的参数(d>>N)。这时,D(x) 是高度退化的,即它有许多零(或者接近零)的特征值。这意味着损失函数在很多方向上都是局部不变的。这为这些网络描绘了一个有趣的优化解空间中的场景:随机梯度下降大部分时间都在穿越很宽的「峡谷」(wide valleys)。噪声沿着几个有大曲率的方向传播,这抵消了 g_N 朝着这个「峡谷」的底部(损失表面的最小值)推进的趋势。

当前关注点:批量大小、学习率、泛化性能下降

由于我们在将 n(x) 加到梯度之前,按照 1/√m 的因子将其进行缩放,因此增加了批处理的规模,降低了小批量估计的整体方差。这是一个值得解决的问题,因为大的批量尺寸可以使模型训练得更快。它在两个重要的方面使得训练更快:训练误差在更少的梯度更新中易于收敛,并且大的批量尺寸使得我们能利用大规模数据并行的优势。但是,不使用任何技巧就增大批量尺寸会导致测试误差增大。这个现象被称为泛化能力下降(generalization gap),并且目前还存在一些为什么会出现这种情况的假说。一个流行的解释是,我们的「探索性噪声」不再有足够的力量将我们推出一个尖锐最小值的吸引域。一种解决办法是简单地提高学习率,以增加这种噪声的贡献。这种缩放规则非常成功(https://arxiv.org/abs/1706.02677)。

长期关注点:逃离鞍点

虽然泛化能力下降「generalization gap」最近已经成为了一个热门话题,但之前仍有很多工作研究鞍点的影响。虽然不会渐进收敛到鞍点(http://noahgolmant.com/avoiding-saddle-points.html),我们仍然可能附近停留相当长的一段时间(https://arxiv.org/abs/1705.10412)。而且尽管大的批量尺寸似乎会更易于产生更尖锐的最小值,但真正大的批量尺寸会将我们引导到确定的轨迹上,这个轨迹被固定在鞍点附近。一项研究(https://arxiv.org/abs/1503.02101)表明,注入足够大的各项同性噪声可以帮助我们逃离鞍点。我敢打赌,如果噪声有足够的「放大」能力,小批量的随机梯度下降(mini-batch SGD)会在造成训练困难的维度上提供足够的噪声,并且帮助我们逃离它们。

一旦我们解决了「尖锐的最小值」的问题,鞍点可能是下一个大规模优化的主要障碍。例如,我在 CIFAR-10 数据集上用普通的随机梯度下降算法训练了 ResNet34。当我将批量尺寸增大到 4096 时,泛化能力下降的现象出现了。在这一点之后(我最高测试了大小为 32K 的批量尺寸,有 50K 个训练样本),性能显著降低:训练误差和测试误差都仅仅在少数几个 epoch 中比较平稳,并且网络无法收敛到一个有效解上。以下是这些结果的初步学习曲线(即看起来比较丑、还有待改进):

进一步的工作

目前提出的大多数处理尖锐的最小值/鞍点的解决方案都是围绕(a)注入各向同性噪声,或(b)保持特定的「学习率和批量尺寸」。我认为从长远来看,这还不够。各向同性噪声在包含「wide valley」结构的解空间中做的并不好。增加学习率也增大了对梯度的更新,这使得权重更新得更大。我认为正确的方法应该是想出一种有效的方法来模拟小批量噪声的各向异性,这种方法从学习率和批处理大小的组合中「解耦」出来。存在能够使用子采样梯度信息和 Hessian 向量乘积去做到这一点的方法,我正在进行这个实验。我很希望听听其它的关于如何解决这个问题的想法。与此同时,我们还需要做大量的理论工作来更详细地理解这种动态,特别是在一个深度学习环境中。

展开
收起