Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Adamax优化器

Adamax优化器来自于Adam的论文的Section7,该方法是基于无穷范数的Adam方法的变体。

简介

Adamax是Adam的一种变体,此方法对学习率的上限提供了一个更简单的范围,更多详细的基本内容,请参照词条Adam。

在Adam中,单个权重的更新规则是将其梯度与当前和过去梯度的L^2范数(标量)成反比例缩放。而作者又将基于L^2范数的更新规则泛化到基于L^p范数的更新规则中。虽然这样的变体会因为p的值较大而在数值上变得不稳定,但是在特例中,令p → ∞会得出一个极其稳定和简单的算法(见下面的Algrithm 2)。现在我们将推导这个算法,在使用L^p范数情况下,时间t下的步长和v_t^(1/p)成反比例变化。

注意这里的衰减项等价地为β2^p,而不是β2。现在令p → ∞,并定义

然后有:

该表达式就对应相当于极其简单的迭代公式:

其中初始值u_0 = 0。注意这里十分便利,在该情况下我们不需要修正初始化偏差。同样AdaMax参数更新的量级要比Adam更简单,即|∆t| ≤ α。

请注意,由于u_t依赖于max操作,所以adamax不像在Adam中m_t和v_t的偏差趋向于0,这就是为什么我们不需要计算u_t的偏差校正。比较好的默认值η= 0.002,β1 = 0.9,β2 = 0.999。

【出处:论文ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION,URL:https://arxiv.org/pdf/1412.6980.pdf]

发展历史

描述

1847, Augustin-Louis Cauchy,在Méthode générale pour la résolution des systèmes d'équations simultanées. pp. 536–538中提出提出GD。

随机梯度下降(SGD)方法是1951年由Robbins和Monro提出的,至今已有60年历史。在当前的深度学习研究中,这种方法至关重要,一般被用在反向传播过程中。1952年,J. Kiefer and J. Wolfowitz也提出了SGD的方法随机逼近是一种参数的估计方法。它是在有随机误差干扰的情况时,用逐步逼近的方式估计参数的方法。SGD对每个训练样本进行参数更新,每次执行都进行一次更新,且执行速度更快。

为了避免SGD和标准梯度下降中存在的问题,一个改进方法为小批量梯度下降(Mini Batch Gradient Descent),因为对每个批次中的n个训练样本,这种方法只执行一次更新。

SGD方法中的高方差振荡使得网络很难稳定收敛,所以有研究者提出了一种称为动量(Momentum)的技术。1986年,momentum(动量)算法在Rumelhart, Hinton和Williams关于反向传播学习的开创性论文中首次出现。

1983年,Yurii Nesterov提出Nesterov accelerated gradient算法,它是一种二阶优化算法,计算量庞大。Yurii Nesterov研究员,认为动量方法存在一个问题:如果一个滚下山坡的球,盲目沿着斜坡下滑,这是非常不合适的。一个更聪明的球应该要注意到它将要去哪,因此在上坡再次向上倾斜时小球应该进行减速。实际上,当小球达到曲线上的最低点时,动量相当高。由于高动量可能会导致其完全地错过最小值,因此小球不知道何时进行减速,故继续向上移动。Yurii Nesterov在1983年发表了一篇关于解决动量问题的论文,因此,我们把这种方法叫做Nestrov梯度加速法。

2011年,Duchi, J., Hazan, E.,对随机梯度算法进行修改提出提出Adagrad算法。Adagrad方法是通过参数来调整合适的学习率η,对稀疏参数进行大幅更新和对频繁参数进行小幅更新。因此,Adagrad方法非常适合处理稀疏数据。

2012年,Matthew D. Zeiler.提出了Adadelta算法。这是一个AdaGrad的延伸方法,它倾向于解决其学习率衰减的问题。Adadelta不是累积所有之前的平方梯度,而是将累积之前梯度的窗口限制到某个固定大小w。AdaDelta方法的另一个优点是,已经不需要设置一个默认的学习率。

在之前的方法中计算了每个参数的对应学习率,但是为什么不计算每个参数的对应动量变化并独立存储呢?这就是Adam算法提出的改良点。2014年,Kingma, D. P., & Ba, J.提出Adam算法,可看作是目前最常用的优化算法之一。这个方法不仅存储了AdaDelta先前平方梯度的指数衰减平均值,而且保持了先前梯度M(t)的指数衰减平均值,这一点与动量类似,并对Adam进行拓展提出Adamax对学习率的上限提供了一个更简单的范围,。

2016年,Dozat, T.将nesterov momentum算法应用于Adam算法中,提出Nadam算法。Nadam对学习率有了更强的约束,同时对梯度的更新也有更直接的影响。

2018年,在Adam方法收敛到一个次优解时,观察到一些小批次样本贡献了大幅且有效的信息梯度,但是这种情况很少发生,指数平均后减小了它们的影响,导致模型收敛性差。Reddi等人提出AMSGrad算法对SGD算法进行改进.

下图是对鞍点数据进行优化得可视化显示

从上面的动画可以看出,自适应算法能很快收敛,并快速找到参数更新中正确的目标方向;而标准的SGD、NAG和动量项等方法收敛缓慢,且很难找到正确的方向。

【出处:WEB , URL:http://ruder.io/optimizing-gradient-descent/】

主要事件

年份

事件

相关论文/Reference

1951

Robbins, H., & Monro, S.提出SGD算法

Robbins, H., & Monro, S. (1951). A stochastic approximation method. The annals of mathematical statistics, 400-407.

2011

Duchi, J., Hazan, E.,对随机梯度算法进行修改提出提出Adagrad算法

Duchi, J., Hazan, E., & Singer, Y. (2011). Adaptive subgradient methods for online learning and stochastic optimization. Journal of Machine Learning Research, 12(Jul), 2121-2159.

2012

Zeiler, M. D.对Adagrad提出AdaDelta算法

Zeiler, M. D. (2012). ADADELTA: an adaptive learning rate method. arXiv preprint arXiv:1212.5701.

2014

Kingma, D. P., & Ba, J.提出经典的Adam算法和Adamax

Kingma, D. P., & Ba, J. (2014). Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980.

2016

Ruder, S.对多种梯度下降算法进行综述回顾

Ruder, S. (2016). An overview of gradient descent optimization algorithms. arXiv preprint arXiv:1609.04747.

发展分析

瓶颈

Adamax算法在收敛到一个次优解时,观察到一些小批次样本贡献了大幅且有效的信息梯度,指数平均后减小了它们的影响,导致模型收敛性差。

未来发展方向

其实对优化器SGD算法的改进可以通过shuffling and curriculum learning, batch normalization, and early stopping.这几个形式来改进。

除此之外,无论哪一种优化器算法来说,参数的设置也是比较重要的,找到每一种算法的合适的参数也是研究的重点。

Contributor: Ruiying Cai

简介