【李宏毅2020 ML/DL】P8-9 Optimization for Deep Learnin | 优化器技术总结,SGDM 与 Adam 对比与使用建议

我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。

已经有人记了笔记(很用心,强烈推荐):
https://github.com/Sakura-gh/ML-notes

本节对应笔记:在 Sakura-gh/ML-notes 仓库中无。

本节内容综述

  1. 本节由由助教簡仲明同学讲授,目的为介绍 Adam 等优化器,不会讲解证明,力求大家会用就好。
  2. 首先复习了之前了解到的概念、符号等。
  3. on-line 是指只能见到一对 (x, y) ,off-line 是在拥有所有 (x, y) 后,进行学习。
  4. 介绍了 SGDSGDM(SGD with Momentum) (上节课有提及);
  5. 接着介绍了 Adagrad (上节课介绍过),可以理解为对于 Momentum 的改进,防止在大梯度时走过大,小梯度时走过小。
  6. RMSProp 进行了 v t = α v t 1 + ( 1 α ) ( g t 1 ) 2 v_t = \alpha v_{t-1} + (1 - \alpha)(g_{t-1})^2 操作,防止在某一幅度摆动过于夸张。
  7. 但上述方法依然无法处理卡在局部最小的问题。引出 Adam ,可以理解为 SGDM + RMSProp
  8. 接着,助教讲到“关于 Adaptive 的技术都是2014年以后提出的”,原因是其应用越来越广泛,举了例子:BERT 由 ADAM 训练,Transformer 由 ADAM 训练,Tacotron 由 ADAM 训练;YOLO 由 SGDM 训练,Mask R-CNN 由 SGDM 训练,ResNet 由 SGDM 训练;Big-GAN 由 ADAM 训练, MAML 由 ADAM 训练。
  9. 为什么只用 SGDM 或者 Adam ?因为这二者抢到了两个极端的位置,见[小细节](#Adam vs SGDM)。
  10. SWATS 这个技术于 2017 提出,将 Adam 与 SGDM 简单结合。
  11. 接着,引出了 Adam 的缺陷(会被差的小的梯度牵着鼻子走),提出了 AMSGrad(2018) 。但是 AMSGrad only handles large learning rates
  12. 接着,引出 Adam 另一个缺陷(梯度大时,学习率过小),由 AdaBound(2019) 解决。但是该方法也有些“粗暴”。
  13. 接着,引出 SGDM 的缺陷(SGDM之所以慢,是因为不能动态调整学习率)。有没有可能帮 SGDM 找到最佳学习率?提出了 Cyclical LR(2017) ,其学习率呈周期性变化;而 SGDR(2017) 是呈曲线三角函数型的变化;One-cycle LR(2017) 是一个周期变化。
  14. Does Adam need warm-up? 提出了 warmup 的优势,以及 RAdam 。(见[小细节](#Does Adam need warm-up?))
  15. RAdam vs SWATS (见[小细节](#RAdam vs SWATS))。
  16. 提出了 Lookahead(2019) ,为优化器做了一个“包裹”:k step foward, 1 step back, universal wrapper for all optimizers
  17. Nesterov accelerated gradient, NAG(1983) ,并不是为深度学习提出(为了数学优化),思路为首先预测未来的区域好坏(超前部署),从而决定是否下降。涉及到一些数学证明。
  18. Nadam(2016) 实际上就是将 NAG 用到 Adam 上。
  19. 接着,举了一个 L2 regularization 的故事。见[小细节](#Do you really know your optimizer?)。提出了 weight decayL2 的效果好,以及 SGDWMAdamWNLP中使用 AdamW 比较多,AdamW 比之前提出的各种新算法在工程上意义都大。
  20. 一些其他帮助优化的东西:SufflingDropoutGradient noise(2015)The more exploration, the better!
  21. 一些其他帮助优化的东西:Warm-upCurriculum learning(2009)Fine-tuning 。(从简单的开始)Teach your model patiently!
  22. 一些其他帮助优化的东西:NormalizationRegularization
  23. 最后,总结,关于 SGDM 与 Adam 的对比,与建议。见小细节

小细节

What is Optimization about?

  • find a θ \theta to get the lowest x L ( θ ; x ) \sum_x L(\theta;x) !!
  • Or, Find a θ \theta to get the lowest L ( θ ) L(\theta) !!

Adam vs SGDM

  • Adam : fast training, large generalization gap, unstable
  • SGDM : stable, little generalization gap, better convergence(?)

有没有可能将其结合?SWATS

  • Begin with Adam (fast), end with SGDM

Does Adam need warm-up?

横轴是分布,纵轴是代数。可以看到,有了 warmup 分布会有所改善。

warmup 的意义在于,在不确定方向好不好时,不要暴走。

还有一种 RAdam(2020) ,使用 R 帮助决定 Adam 的步长。

RAdam vs SWATS

RAdam SWATS
Inspiration Distortion of gradient at the beginning of training results in inaccurate adaptive learning rate non-convergence and generalization gap of Adam, slow training of SGDM
How? Apply warm-up learning rate to reduce the influence of inaccurate adaptive learning rate Combine their advantages by applying Adam first, then SGDM
Switch SGDM to RAdam Adam to SGDM
Why switch The approximation of the variance of v ^ t \hat{v}_t is invalid at the beginning of training To pursue better convergence
Switch point When the approximation becomes valid Some human-defined criteria

Do you really know your optimizer?

如上图,对于 SGDM:

  • 计算 m t m_t 时,是只要主项的梯度,还是也要把用于正则的那项也加进去?
  • 对于 Adam 有同样的疑问。

这其实没有标准答案。

Loshchilov 在 2017 写了篇文章:

  • 不做正则,而是做一个 weight decay
  • 如上图的 SGDWMAdamW ,额外减去一个 γ θ t 1 \gamma \theta_{t-1} weitgh decay。

Advices


SGDM:

  • Slow
  • Better convergence
  • Stable
  • Smaller generalization gap

Adam:

  • Fast
  • Possibly non-convergence
  • Unstable
  • Larger generalization gap

给一些建议。

SGDM:

  • Computer vision (image classification, segmentation, object detection)
  • NLP (QA, machine translation summary), Speech synthesis, GAN

有没有 Universal Optimizer ? No Way.