https://blog.csdn.net/wishchin/article/details/80567558

自动调参的Adam方法已经非常给力了,不过这主要流行于工程界,在大多数科学实验室中,模型调参依然使用了传统的SGD方法,在SGD基础上增加各类学习率的主动控制,以达到对复杂模型的精细调参,以达到刷出最高的分数。

ICLR会议的 On the convergence of Adam and Beyond 论文,对Adam算法进行了 猛烈的抨击,并提出了新的Adam算法变体。

以前的文章:最优化方法之GD、SGD ;最优化之回归/拟合方法总结;最优化方法之SGD、Adams;

参考文章:GD优化算法总结--,可见每一步公式的更新都来之不易。

优化方法总结:  SGD,Momentum,AdaGrad,RMSProp,Adam.这一篇文章描述简介.

整个优化系列文章列表:Deep Learning 之 最优化方法;Deep Learning 最优化方法之SGD;Deep Learning 最优化方法之Momentum(动量);Deep Learning 最优化方法之Nesterov(牛顿动量);Deep Learning 最优化方法之AdaGrad;Deep Learning 最优化方法之RMSProp;Deep Learning 最优化方法之Adam;

按章节翻译的中文版-DLBook中文版:https://github.com/exacity/deeplearningbook-chinese

Adams算法

先上结论:

1.Adam算法可以看做是修正后的Momentum+RMSProp算法

2.动量直接并入梯度一阶矩估计中(指数加权)

3.Adam通常被认为对超参数的选择相当鲁棒

4.学习率建议为0.001

再看算法:其实就是Momentum+RMSProp的结合,然后再修正其偏差。

Adams问题

参考:Adams那么棒,为什么对SGD念念不忘-2 ?

1.Adams可能不收敛

文中各大优化算法的学习率:

其中,SGD没有用到二阶动量,因此学习率是恒定的(实际使用过程中会采用学习率衰减策略,因此学习率递减)。AdaGrad的二阶动量不断累积,单调递增,因此学习率是单调递减的。因此,这两类算法会使得学习率不断递减,最终收敛到0,模型也得以收敛。

但AdaDelta和Adam则不然。二阶动量是固定时间窗口内的累积,随着时间窗口的变化,遇到的数据可能发生巨变,使得  可能会时大时小,不是单调变化。这就可能在训练后期引起学习率的震荡,导致模型无法收敛。

2.Adams可能错失全局最优解

吐槽Adam最狠的 The Marginal Value of Adaptive Gradient Methods in Machine Learning 。文中说到,同样的一个优化问题,不同的优化算法可能会找到不同的答案,但自适应学习率的算法往往找到非常差的答案。他们通过一个特定的数据例子说明,自适应学习率算法可能会对前期出现的特征过拟合,后期才出现的特征很难纠正前期的拟合效果。

Adams变体方法改进

会议评论:On the Convergence of Adam and Beyond ; 论文:https://openreview.net/pdf?id=ryQu7f-RZ 。

1. THE NON-CONVERGENCE OF ADAM
      With the problem setup in the previous section, we discuss fundamental flaw in the current exponential moving average methods like ADAM. We show that ADAM can fail to converge to an optimal solution even in simple one-dimensional convex settings. These examples of non-convergence contradict the claim of convergence in (Kingma & Ba, 2015), and the main issue lies in the following quantity of interest:
                                      (2)
      This quantity essentially measures the change in the inverse of learning rate of the adaptive method with respect to time. One key observation is that for SGD and ADAGRAD, -t 0 for all t 2 [T]. This simply follows from update rules of SGD and ADAGRAD in the previous section. Inparticular, update rules for these algorithms lead to “non-increasing” learning rates. However, this is not necessarily the case for exponential moving average variants like ADAM and RMSPROP i.e., -t can potentially be indefinite for t 2 [T] . We show that this violation of positive definiteness can  lead to undesirable convergence behavior for ADAM and RMSPROP. Consider the following simple sequence of linear functions for F = [-1,1]:
                  
     where C > 2. For this function sequence, it is easy to see that the point x = -1 provides the minimum regret. Suppose 1 = 0 and 2 = 1=(1 + C2). We show that ADAM converges to a highly suboptimal solution of x = +1 for this setting. Intuitively, the reasoning is as follows. The algorithm obtains the large gradient C once every 3 steps, and while the other 2 steps it observes the gradient -1, which moves the algorithm in the wrong direction. The large gradient C is unable to counteract this effect since it is scaled down by a factor of almost C for the given value of 2, and hence the algorithm converges to 1 rather than -1. We formalize this intuition in the result below.
Theorem 1. There is an online convex optimization problem where ADAM has non-zero average regret i.e., RT =T 9 0 as T ! 1.
 We relegate all proofs to the appendix.

使用指数移动平均值的RMSProp公式有缺陷,,基本表现了“自适应学习率”优化算法的学习率的倒数相对于时间的变化。 对于SGD和ADAGRAD而言,当t ∈ [T]时,Γt始终大于等于0。这是它们的基本梯度更新规则,所以它们的学习率始终是单调递减的。但是基于指数移动平均值的RMSProp和Adam却没法保证这一点,当t ∈ [T]时,它们的Γt可能大于等于0,也可能小于0。这种现象会导致学习率反复震荡,继而使模型无法收敛。

以F = [−1, 1]的简单分段线性函数为例:  。当C > 2,在这个函数中,我们很轻松就能看出它应收敛于x = −1。但如果用Adam,它的二阶动量超参数分别是β1 = 0,β2 = 1/(1 + C2),算法会收敛在x = +1这个点。我们直观推理下:该算法每3步计算一次梯度和,如果其中两步得出的结论是x = -1,而一次得出的结论是C,那么计算指数移动平均值后,算法就会偏离正确收敛方向。因为对于给定的超参数β2,大梯度C没法控制自己带来的不良影响。

2.来看一个各个优化算法在最优解和鞍点附近的迭代求解图。

  

图片来源:http://imgur.com/a/Hqolp

从上图来看,似乎SGD是一种 “最蠢”的方法,不过文献《The Marginal Value of Adaptive Gradient Methods in Machine Learning》给出的结论却是:

自适应优化算法训练出来的结果通常都不如SGD,尽管这些自适应优化算法在训练时表现的看起来更好。 使用者应当慎重使用自适应优化算法。自适应算法类似于过学习的效果,生成的模型面对整体分布时是过拟合的。

作者这样阐述:our experimental evidence demonstrates that adaptive methods are not advantageous for machine learning, the Adam algorithm remains incredibly popular. We are not sure exactly as to why, but hope that our step-size tuning suggestions make it easier for practitioners to use standard stochastic gradient methods in their research.这一点貌似不是主要的Adam的缺点。

Adams变体AMSGrad

RMSProp和Adam算法下的Γt可能是负的,所以文章探讨了一种替代方法,通过把超参数β1、β2设置为随着t变化而变化,从而保证Γt始终是个非负数。

For the first part, we modify these algorithms to satisfy this additional constraint. Later on, we also explore an alternative approach where -t can be made positive semi-definite by using values of 1 and 2 that change with t.

AMSGRAD uses a smaller learning rate in comparison to ADAM and yet incorporates the intuition of slowly decaying the effect of past gradients on the learning rate as long as -t is positive semidefinite.

通过添加额外的约束,使学习率始终为正值,当然代价是在大多数时候,AMSGrad算法的学习率是小于Adams和Rmsprop的。它们的主要区别在于AMSGrad记录的是迄今为止所有梯度值vt中的最大值,并用它来更新学习率,而Adam用的是平均值。因此当t ∈ [T]时,AMSGrad的Γt也能做到始终大于等于0。

实验结果

多种方法结合

论文 Improving Generalization Performance by Switching from Adam to SGD,进行了实验验证。他们CIFAR-10数据集上进行测试,Adam的收敛速度比SGD要快,但最终收敛的结果并没有SGD好。他们进一步实验发现,主要是后期Adam的学习率太低,影响了有效的收敛。他们试着对Adam的学习率的下界进行控制,发现效果好了很多。

于是他们提出了一个用来改进Adam的方法:前期用Adam,享受Adam快速收敛的优势;后期切换到SGD,慢慢寻找最优解。这一方法以前也被研究者们用到,不过主要是根据经验来选择切换的时机和切换后的学习率。这篇文章把这一切换过程傻瓜化,给出了切换SGD的时机选择方法,以及学习率的计算方法,效果看起来也不错。

时机很重要,把自适应变化为分析数据后,固定优化函数手动切换,理论上能取得更好的效果。又或者,修改Adams算法,以应对Novel情况,保证它的收敛性。

最优化方法系列:Adam+SGD-AMSGrad 重点相关推荐

  1. 最优化方法系列:SGD、Adam

    整理一下资源,不过最好还是根据书上的理论好好推导一下..... 文章链接:Deep Learning 最优化方法之SGD 72615436 本文是Deep Learning 之 最优化方法系列文章 整 ...

  2. 最优化方法系列:Adam+SGD-AMSGrad

    自动调参的Adam方法已经非常给力了,不过这主要流行于工程界,在大多数科学实验室中,模型调参依然使用了传统的SGD方法,在SGD基础上增加各类学习率的主动控制,以达到对复杂模型的精细调参,以达到刷出最 ...

  3. 【超详细】对比10种优化函数BGD、SGD、mini-batch GD、Momentum、NAG、Adagrad、RMSProp、Adadelta、Adam、AMSgrad

    在实践中常用到一阶优化函数,典型的一阶优化函数包括 BGD.SGD.mini-batch GD.Momentum.Adagrad.RMSProp.Adadelta.Adam 等等,一阶优化函数在优化过 ...

  4. 常用优化器(Adam SGD)算法

    文章目录 概览 SGD (Stochastic gradient descent) Momentum NAG(Nesterov accelerated gradient) AdaGrad RMSPro ...

  5. 660系列-31题-(重点在n阶可导的推论以及洛必达何时可用)

    目录 题目 标准答案思路: 错误思路: 错因分析: 一.标准答案 二.考点总结 1.某点n阶导函数存在的推论 2.洛必达的使用范围 3.n阶可导为什么只能使用n-1次洛必达 4.泰勒公式 补充~ 题目 ...

  6. 深度学习常见的优化方法(Optimizer)总结:Adam,SGD,Momentum,AdaGard等

    机器学习的常见优化方法在最近的学习中经常遇到,但是还是不够精通.将自己的学习记录下来,以备不时之需 https://www.cnblogs.com/GeekDanny/p/9655597.html

  7. 一文告诉你Adam、AdamW、Amsgrad区别和联系 重点

    **序言:**Adam自2014年出现之后,一直是受人追捧的参数训练神器,但最近越来越多的文章指出:Adam存在很多问题,效果甚至没有简单的SGD + Momentum好.因此,出现了很多改进的版本, ...

  8. Adam那么棒,为什么还对SGD念念不忘 (3)—— 优化算法的选择与使用策略

    在前面两篇文章中,我们用一个框架梳理了各大优化算法,并且指出了以Adam为代表的自适应学习率优化算法可能存在的问题.那么,在实践中我们应该如何选择呢? 本文介绍Adam+SGD的组合策略,以及一些比较 ...

  9. 中国学霸本科生提出AI新算法:速度比肩Adam,性能媲美SGD,ICLR领域主席赞不绝口

    晓查 乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI 两位学霸本科生,一位来自北大,一位来自浙大. 他们在实习期间,研究出一种新的AI算法,相关论文已经被人工智能顶级会议ICLR 201 ...

最新文章

  1. AI识别彻底懵逼,这到底是“牛”还是“鲨”?
  2. 0502-Hystrix保护应用-简介,使用,健康指标等
  3. ExtJS在树TreePanel之间拖放结点
  4. 正则表达式的简单理解
  5. Java中 == 和 equals 的区别是什么?
  6. python让词向量一直在内存里_python读取大文件踩过的坑——读取txt文件词向量
  7. [RK3399][Android7.1] ADB功能怎么Debug
  8. PSV 基本的游戏下载方式及局部功能介绍
  9. 车路协同科研教学与实训先导平台 ——一种面向新一代智能交通人才培养的综合实验平台及系统
  10. 将QQ语音的slk格式转化为wma
  11. PCI-E接口的学习
  12. python说句心里话a_python第一周作业
  13. pageadmin CMS网站建设教程:站点的添加和管理
  14. GAMMA初学笔记二
  15. LTM(Lifelong Topic Modeling)介绍
  16. 专家有料 | 李中文:美团软件成分安全分析(SCA)能力的建设与演进
  17. Android热更新初探,Bugly热更新的集成和使用(让你的应用轻松具备热更新能力)
  18. 信息系统项目管理师----成本类计算
  19. (一)protege之使用入门
  20. 【CSDN竞赛第5期】编程竞赛总结

热门文章

  1. 2022-2028年中国场景金融行业深度调研及投资前景预测报告
  2. androidstudio判断手指滑动方向_方向盘的黑科技有多“黑”
  3. Linux shell 学习笔记(10)— 处理用户输入(命令行读取参数、读取用户输入、超时处理)
  4. 路由器:访问控制列表
  5. 详解Spring中Bean的自动装配~
  6. 单精度和半精度混合训练
  7. GitHub上开源的YOLOv5
  8. cs嵌html5页面,在.cs c#.net中包含HTML页面
  9. python 创建.txt的文件 并写内容到里面
  10. Android Profiler 抓取接口返回信息,请求头信息等,