优化算法系列(5):SGD改进之Adam一个综合方案和派生(更新)
本文已经更新了Adam的派生方案。
梯度估计修正与自适应学习率调整后,很自然的思路是把它们的基本思路结合起来。本文就以此方向展开。
Adam
Adam(Adaptive Moment Estimation Algorithm,即RMSprop with momentum)可以认为是RMSprop和Monentum法的结合,
补充,这是Tensorflow下这两个参数的默认值,
注意到,刚开始迭代时,$M_{t}$和$G_{t}$的均值和方差比实际的要小,为此,可以如下修正,
于是,Adam的参数更新如下,
为什么在这个问题上使用Adam,而不是GD或者Adagrad?
Adamax
Adamax更改了$G_t$的迭代策略,
使用$L_{\infty}$替代$L_{2}$
Adamax有点梯度截断的意思,比如按值截断方法,
那么Adamax的真实用意是什么呢?
Nadam
NAdam即Nadam is Adam with Nesterov momentum,由Adam思路很自然而想到的派生。可参考cs229中的Incorporating Nesterov Momentum into Adam。
总结
因此,以上算法均可以形式化为,
$G_{t}$处理学习率,$M_{t}$处理参数更新方向。
这些优化算法大体上可以分为两类:
- 调整学习率,使得优化更稳定
- 梯度估计修正,优化训练速度
从GD、SGD到AdaGrad、RMSprop、AdaDelta再到Adam系,其实其改进都是相当直观的。其实我们还可以根据自身训练任务的特点,设计专属于自己的优化器,不过这个前提是要相当熟悉当然任务训练中的特点,也就是说要练丹足,挖坑够,哈哈哈。
写到这里,优化算法系列应该就结束了,如果后续学术界有更多的优化器提出或者遇到新的优化器,根据需要可能会继续写下去~
参考
[1] Incorporating Nesterov Momentum into Adam