Meet AdaMod: a new deep learning optimizer with memory by Less Wright

https://medium.com/@lessw/meet-adamod-a-new-deep-learning-optimizer-with-memory-f01e831b80bd

AdaMod 是一个基于 Adam 的新的深度学习优化器,但它提供了自动warmup heuristic和长期学习率缓冲。 从最初的测试来看,AdaMod 是top 5的优化器,很容易击败或超过普通的 Adam,且对学习率超参数不那么敏感,训练曲线更平滑,不需要warmup模式。

AdaMod是Ding, Ren, Lou 和 Sun在"An Adaptive and Momental Bound Method for Stochastic Learning"论文中提出的。

AdaMod工作原理: AdaMod保持了自适应学习率自身的指数长期平均值,并在整个训练过程中用这个值来clip任何过高的适应率。 结果改善了收敛性,不需要warmup,对实际学习率选择的敏感性较低。 记忆的程度由一个新的参数 Beta3控制。

这种长期记忆和从中的clipping,解决了许多自适应优化器(如Adam)的主要问题ーー缺乏长期记忆可能会导致不收敛,因为优化器由于自适应学习率的尖刺而陷入糟糕的局部最优中。 Reddi,Kale,Kumar (2018)提出的这个不收敛的问题,引起了对优化器的一些改进

不需要warmup: 非常类似Rectified Adam,AdaMod能够从训练开始就控制自适应学习率的方差,从而确保训练开始阶段的稳定。 AdaMod的研究人员做了几个实验来展示warmup对Adam的影响,同时也展示了AdaMod在没有warmup的情况下的表现。

在某些情况下(例如 NLP 的transformer模型) ,Adam 没有warmup根本无法优化,如上图所示。

这个问题的原因与Rectified Adam的研究人员所指出的完全相同ーー训练开始时(没有warmup)学习率的过度变化意味着Adam在开始时可能会做出糟糕的、过度的跳跃,并将自己困在一个无法逃脱的糟糕极小值中。

上面这张Paper上的图片与Rectified Adam paper上的图片非常相似,warmup可以缓解过高的学习率。 在上面的两张图片中,我在0处加了一条红色的中心线,以便更好地突出Adam在warmup中学习率要低得多的事实(这也是为什么如果只使用普通的Adam, warmup是至关重要的。)

虽然Rectified Adam在一开始就控制稳定的学习率,AdaMod也这样做,但如果学习率高于长期记忆或平均,它会继续通过clipping整个训练控制方差。 这有助于收敛,并可能避免 Reddi 指出的一常规 Adam 不收敛的问题。

AdaMod的局限: 虽然AdaMod通常比普通的Adam表现更好,但是在更长的训练条件下,SGDM 仍然可能比AdaMod表现更好。 作者将此作为未来的一项工作。

(请注意,DiffGrad 在类似的测试中确实优于 SGDM,但是 DiffGrad 不能像AdaMod一样好的处理训练方差(即warmup)... 因此我写了个结合了 DiffGrad 和 AdaMod: 的‘ DiffMod’ :)

一个很好的建议是融合AdaMod ,然后运行一些 SGDM 的额外训练,看看是否可以有额外的改进:

使用 AdaMod: AdaMod 是Adam的替代品。 唯一的变化是一个新的超参数 B3,或者 Beta3。 这控制了长期clipping平均值的回溯程度。 作者推荐. 999ー. 9999。

请注意,虽然官方代码使用的是带有十进制的 B3,但是我对 github repo 做了一个小小的改动,对其使用了一些 AdaMod 变体(结合 DiffGrad + AdaMod DiffMod) ,因此你可以将总批数传递给 B3常量,称为“len_memory”。 即1,000(与0.999相同)或10,000(与0.9999相同) ,但更易记忆及追踪。 这样你也可以更容易的用5000或2500等测试。

len_memory = b3 是更容易使用的格式。 指定memory len 为500,计算 b3。

AdaMod视频 ー我近期发布一个涵盖 AdaMod 和在 FastAI上快速使用它的视频。

你可以使用的AdaMod源代码:

1ー官方 Github repo (PyTorch) : https://Github.com/lancopku/adamod

2ー非官方的 AdaMod 和可选的 DiffMod 变体(PyTorch,FastAI) : https://github.com/lessw2020/best-deep-learning-optimizers/tree/master/AdaMod

概要: AdaMod 代表了深度学习优化器的更进一步,因为它提供了三个改进

1ー无须warmup(类似Rectified Adam)

2ー对学习率超参数的敏感性降低(收敛于相似结果)

3ー由于在整个训练过程中提高了稳定性(通过长期记忆和从中clipping) ,通常在最终结果上优于 Adam。

在一些数据集上用测试 AdaMod 和其它优化器时,我发现 AdaMod 始终是Top 5 的优化器。

供参考,Ranger 和 DeepMemory 也在Top 5中 ,所以AdaMod是一个强有力的竞争者,值得你在深度学习训练中使用!

adam优化_认识 AdaMod: 一个新的有记忆的深度学习优化器相关推荐

  1. Adam 那么棒,为什么还对 SGD 念念不忘?一个框架看懂深度学习优化算法

    作者|Juliuszh 链接 | https://zhuanlan.zhihu.com/juliuszh 本文仅作学术分享,若侵权,请联系后台删文处理 机器学习界有一群炼丹师,他们每天的日常是: 拿来 ...

  2. 使用什么优化器_新的深度学习优化器Ranger:RAdam + LookAhead强强结合

    [导读]给大家介绍一个新的深度学习优化器,Ranger,同时具备RAdam和LookAhead的优点,一行代码提升你的模型能力. Ranger 优化器结合了两个非常新的发展(RAdam + Looka ...

  3. Adam那么棒,为什么还对SGD念念不忘?一个框架看懂深度学习优化算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者|Juliuszh,https://zhuanlan.zhih ...

  4. adam算法效果差原因_深度学习优化器-Adam两宗罪

    在上篇文章中,我们用一个框架来回顾了主流的深度学习优化算法.可以看到,一代又一代的研究者们为了我们能炼(xun)好(hao)金(mo)丹(xing)可谓是煞费苦心.从理论上看,一代更比一代完善,Ada ...

  5. 2017年深度学习优化算法最新进展:改进SGD和Adam方法

    2017年深度学习优化算法最新进展:如何改进SGD和Adam方法 转载的文章,把个人觉得比较好的摘录了一下 AMSGrad 这个前期比sgd快,不能收敛到最优. sgdr 余弦退火的方案比较好 最近的 ...

  6. 2017年深度学习优化算法最新进展:如何改进SGD和Adam方法?

    2017年深度学习优化算法最新进展:如何改进SGD和Adam方法? 深度学习的基本目标,就是寻找一个泛化能力强的最小值,模型的快速性和可靠性也是一个加分点. 随机梯度下降(SGD)方法是1951年由R ...

  7. 【深度学习】新的深度学习优化器探索(协同优化)

    [深度学习]新的深度学习优化器探索(协同优化) 文章目录 1 RAdam VS Adam 2 自适应优化 3 LookAhead3.1 "侵入式"优化器3.2 LookAhead ...

  8. 深度学习:优化方法——momentum、Nesterov Momentum、AdaGrad、Adadelta、RMSprop、Adam

    深度学习:优化方法 1. 指数加权平均(Exponentially weighted average) 2. 带偏差修正的指数加权平均(bias correction in exponentially ...

  9. 新的深度学习优化器Ranger: RAdam + LookAhead的协同组合,两者兼得。

    Rectified Adam(RAdam) 新的state of the art优化器:Rectified Adam(RAdam),相比adam,可以稳定提高准确率,关键是,真的有用. Liu, Ji ...

最新文章

  1. 报告鼠标和键盘事件的一个程序(转)
  2. python画猪头_使用Python画小猪佩奇 社会人标配
  3. Facebook 发币 Libra;谷歌十亿美金为穷人造房;第四代树莓派 Raspberry Pi 4 发布 | 开发者周刊...
  4. SpringSecurity框架【详解】
  5. 由于ORACLE_SID未设定造成的ora-12162 错误
  6. 三目表达式 ---if--else的简写
  7. 将算术表达式转换成四元式的程序实现
  8. 什么是网络空间测绘?到底有什么作用?
  9. 我的运算放大器(四)加法电路
  10. win10计算机管理看不见蓝牙,Win10设备管理器找不到蓝牙设备的解决方案
  11. STM32CubeMX SDRAM的使用(二)
  12. OpenGL ES 3. 天空盒 立方体贴图
  13. 2天,我把MySQL索引、锁、事务、分库分表撸干净了!
  14. 求职经验丨应届毕业生,如何找到一份程序员工作呢?
  15. Windows服务器防火墙端口怎么开放?扬州服务器租用140.210.20.X
  16. 数据库操作的学习(一)
  17. 算法2_非对称加密算法之ECDSA(椭圆曲线数字签名算法)
  18. jQuery简单备忘录功能的日历插件
  19. 盘点:2019年好用的设备管理系统软件,你都用过吗?
  20. 20分钟吃掉广告算法业务知识

热门文章

  1. JsonHelper(Json帮助类)
  2. hdu5141 线段树
  3. string wstring
  4. 11 种方法教你用 Python 高效下载资源
  5. 定时自动清除tmp工具tmpwatch
  6. Zabbix 监控网站的访问量
  7. postgresql视图
  8. postgresql报错 :FATAL: no pg_hba.conf entry for host 192.168.163.130,user postgres,database pos
  9. java虚拟机的内存_Java虚拟机的内存结构
  10. SecureCRT连接阿里云ECS服务器,经常掉线的解决方案