当前位置: 首页 > 科技观察

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

时间:2023-03-13 12:24:29 科技观察

两位本科生,一位来自北大,一位来自浙江大学。在实习期间,他们开发了一种新的人工智能算法。相关论文已被最新的人工智能会议ICLR2019收录,得到领域主席的好评,绝对肯定采纳建议。在这篇论文中,他们公布了一种名为AdaBound的神经网络优化算法。简单来说,算法训练速度堪比Adam,性能堪比SGD。该算法适用于CV和NLP领域,可用于开发各种热门任务的深度学习模型。而且,AdaBound对超参数不是很敏感,这节省了很多调参的时间。两位本科生合着的论文也在Reddit上引起了极大的好评,作者本人也在该论坛发起了在线问答交流。AdaBound已经开源并发布了Demo。什么是AdaBound?AdaBound结合了SGD和Adam算法。训练初期可以和Adam一样快,后期可以和SGD一样收敛。SGD(StochasticGradientDescent)算法有着悠久的历史。它使参数像滚下山的球一样落入山谷,从而获得最小值。但它最大的缺点是下降速度较慢(步长为定值),可能会在沟谷两边不断震荡,停留在一个局部极大点。Adam(adaptivemomentestimation)就是为了提高训练速度而诞生的。与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代码。需要安装Python3.6或更高版本,可以直接用pip安装:pipinstalladabound的使用方法与Pytorch中其他优化器一样:optimizer=adabound.AdaBound(model.parameters(),lr=1e-3,final_lr=0.1)作者也承诺很快会有一个TensorFlow版本,让我们拭目以待。本研究的共同作者是两名本科生。他们在滴滴实习期间一起做了这项研究。其中一位名叫罗良辰,是北京大学地球与空间科学学院的一名大四学生。另一个是就读于浙江大学文电学院的熊元浩,也是今年大四的学生。本届大四学生罗良臣有四篇第一作者论文被最新一届人工智能学术会议收录,其中1篇EMNLP2018,2篇AAAI2019,还有我们今天介绍的一篇,发表在ICLR2019。他毕业于北京师范大学附属实验中学,连续三年获得全国青少年信息学奥林匹克竞赛一等奖。2015-2018年任Android开发工程师,北京大学PKUHelper团队负责人。2016年春担任数据结构与算法课程助教,带领实验室学生开发一款回合制游戏平台坦克大战。2016年7月至2017年6月,担任UniBike技术开发VP,负责软件开发。2017年7月至2018年5月在微软亚洲研究院实习,任研究助理。在此研究期间,AAAI发表了两篇论文。2018年7月起在滴滴人工智能实验室从事研究助理工作。本文介绍的研究成果就是这项工作的成果。目前,他还在北京大学语言计算与机器学习组实习,师从孙旭研究员,孙旭也是本文的作者之一。熊元浩现为浙江大学信息与通信学院信息工程专业大四学生。在发表这篇ICLR论文之前,他还以第二作者的身份在通信领域的权威期刊上发表了一篇论文。此外,该论文还有一位作者,南加州大学副教授YanLiu。如果你对他们的研究感兴趣,请关注以下传送门:论文:ADAPTIVEGRADIENTMETHODSWITHDYNAMICBOUNDOFLEARNINGRATEhttps://openreview.net/pdf?id=Bkg3g2R9FX论文评审页面:https://openreview.net/forum?id=Bkg3g2R9FXGitHub地址:https://github.com/Luolc/AdaBoundReddit讨论地址:https://www.reddit.com/r/MachineLearning/comments/auvj3q/r_adabound_an_optimizer_that_trains_as_fast_as/