速度比肩Adam,性能媲美SGD
法适用于CV、NLP领域,可以用来开发解决各种流行任务的深度学习模型。而且AdaBound对超参数不是很敏感,省去了大量调参的时间。 两位本科生作为共同一作的这篇论文,也在Reddit上引发了热赞,作者本人也在这个论坛上展开了在线的答疑交流。 AdaBound已经开源,还放出了Demo。 AdaBound是什么 AdaBound结合了SGD和Adam两种算法,在训练开始阶段,它能像Adam一样快速,在后期又能像SGD一样有很好的收敛性。 SGD(随机梯度下降)算法历史悠久,它是让参数像小球滚下山坡一样,落入山谷,从而获得最小值。Adam算法跑得比SGD更快,却存在两大缺陷:结果可能不收敛、可能找不到全局***解。也就是说它的泛化能力较差,在解决某些问题上,表现还不如SGD。 而造成这两大缺陷的原因,可能是由于不稳定和极端的学习率。 AdaBound是如何解决这个问题的? 它给学习率划出动态变化的界限,让实现从Adam到SGD的渐进和平滑过渡,让模型在开始阶段有和Adam一样快的训练速度,后期又能保证和SGD一样稳定的学习率。 这种思路是受到2017年Salesforce的研究人员的启发。他们通过实验发现,Adam后期的学习率太低影响了收敛结果。如果控制一下Adam的学习率的下限,实验结果会好很多。 对学习率的控制就和梯度裁剪差不多。在防止梯度爆炸问题上,我们可以剪掉大于某个阈值的梯度。同样的,我们也可以剪裁Adam学习率实现AdaBound。面的公式中,学习率被限制在下限 η𝑙 和上限 η𝑢之间。当η𝑙 = η𝑢 = α时,就是SGD算法;当η𝑙=0、 η𝑢 =∞时,就是Adam算法。 为了实现从Adam到SGD的平滑过渡,让η𝑙 和 η𝑢变成随时间变化的函数:η𝑙 递增从0收敛到α,η𝑢从∞递减收敛到α。 在这种情况下,AdaBound开始时就像Adam一样训练速度很快,随着学习率边界越来越受到限制,它又逐渐转变为SGD。 AdaBound还有个非常大的优点,就是它对超参数不是很敏感,省去了大量调参的时间。 实验结果
作者分别对不同模型进行实验,比较 (编辑:泉州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |