乐趣区

关于人工智能:Adam优化器杂谈

文章来自:微信公众号【机器学习炼丹术】

最罕用的 Adam 优化器,有着收敛速度快、调参容易等长处,然而也存在常常被人吐槽的泛化性问题和收敛问题。

因而,在很多大佬的代码中,仍然会应用传统的 SGD+momentum 的优化器。

对于两个优化器的比拟,仁者见仁智者见智,能够看一下这篇文章,有简略的对于这两个优化器的代码实现和成果比拟:
Pytorch 的 SGD,SGDM,Adam,RAdam 的代码实现

这篇文章就轻易的谈一谈上面的问题,来让大家扩大一下常识:

  • Adam 被攻打的泛化问题和收敛问题;

Adam 是什么

对机器学习有理解的敌人,应该对 Adam 优化器不生疏了。大体来说就是 Momentum + Adagrad + RMSProp 的联合。

【如果需要的话,之后能够简略易懂的艰深讲讲各种类型的优化器的算法】

从 Adam 和 SGDM 中就能够得悉,Momentum 是一个很好的设计。

Adam 的两个吐槽

泛化问题

在探讨模型泛化问题的时候,咱们会心愿模型找到的极小值(收敛地位),是一个比拟平缓、不平缓的地位!,起因看下图:
![](http://helloworld2020.net/wp-…

右边的那个收敛点是一个比拟平缓的点,而左边的是一个十分平缓十分 sharp 的收敛点。而训练集和测试集尽管要求同散布,然而其实还是会有渺小的差异。

对于平缓的收敛点,训练集的损失可能会很小,然而测试集的损失很可能就很大。而平坦的收敛点就不会这样。这就是泛化问题,有的时候也被看成过拟合景象。

然而咱们是也无奈直接证明 Adam 总是找到 sharp 的极小值。不过很多很论或多或少都只指出了 Adam 在测试的时候 error 会较大。

这里有一张图,能够看到,尽管 Adam 在训练集中收敛速度最快,然而测试集的成果并不是十分的好。

收敛问题

Adam 在某些状况下会呈现无奈收敛的状况,最驰名的对于这个问题的 Adam 的吐槽就是这个论文:
2018 ICLR 的 best paper:On the Convergence of Adam and Beyond

然而这个问题其实并不是咱们这种人常常会遇到的,反而泛化问题是一个真正的困扰。

改良 Adam

learning rate scheduling

大佬们常常用的一个 learning rate scheduling 计划就是 warn-up+decay。

【warn-up】

是指不要一开始用高的 learning-rate, 应该要从低的缓缓增大到 base-learning rate。学习率从小到大。

【decay】

随着 optimization 的步数的增长,逐步升高 learning rate。

Decay 的局部其实很常见,所有的人都会用,然而 warn-up 其实就有点诡异了,在 ResNet 的论文中其实能够看到这个。

RAdam

Radam 是在 warm up 的时候提出了一些无效的策略。

退出移动版