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

第一作者是北大大四学生,有点厉害啊!

论文地址:

https://openreview.net/pdf?id=Bkg3g2R9FX

GitHub地址:

https://github.com/Luolc/AdaBound

这篇文章对于SGD和Adam等优化算法的理解也有很大的帮助。

文章的Motivation是:

SGD的缺点:

SGD现在后期调优时还是经常使用到,但SGD的问题是前期收敛速度慢。SGD前期收敛慢的原因: SGD在更新参数时对各个维度上梯度的放缩是一致的,并且在训练数据分布极不均很时训练效果很差而因为收敛慢的问题应运而生的自适应优化算法Adam、AdaGrad、RMSprop 等,但这些自适应的优化算法虽然可以在训练早期展现出快速的收敛速度,但其在测试集上的表现却会很快陷入停滞,并最终被 SGD 超过。

Adam等自适应学习率算法缺点:

这就是目前很多大牛任然喜欢SGD的原因。这篇文章对于Adam后期的毛病进行了分析,原因出在自适应方法训练后期不稳定的极端学习率。换句话说,就是自适应学习率训练到后期,学习率出现极端情况,更新参数时有些维度上学习率特别大,有些维度学习率特别小

AdaBound算法:像Adam一样快,又像SGD一样好的优化器_第1张图片

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

发现这个问题怎么解决?如何融合上面两种方法的优点?

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

AdaBound算法:像Adam一样快,又像SGD一样好的优化器_第2张图片

换句话说,Adam和SGD是AdaBound的特殊情况。

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

 

 

你可能感兴趣的:(深度学习基础知识)