作者:Less Wright

编译:ronghuaiyang

导读

给大家介绍一个新的深度学习优化器,Ranger,同时具备RAdam和LookAhead的优点,一行代码提升你的模型能力。

Ranger 优化器结合了两个非常新的发展(RAdam + Lookahead)到一个单一的优化器中。为了证明它的有效性,我们的团队最近使用 Ranger 优化器在 FastAI 全球排行榜上获得了 12 个排行榜记录。

Lookahead 是 Ranger 优化器的其中一半,是由著名的深度学习研究员 Geoffrey Hinton 在 2019 年 7 月的一篇新论文“LookAhead optimizer: k steps forward, 1 step back“中介绍的。LookAhead 的灵感来自于最近在理解神经网络损失曲面方面的进展,并提出了一种全新的稳定深度学习训练和收敛速度的方法。基于 RAdam(Rectified Adam)在深度学习的方差管理方面取得的突破,我发现将 RAdam + LookAhead 组合在一起(Ranger)可以产生一个梦之队,可以得到甚至比单独的 RAdam 更好的优化器。

Ranger 优化器是一个易于使用和高效的单一代码库(加载/保存和一个循环处理的所有参数的更新),集成到了 FastAI 中,Ranger 的源代码你可以直接拿来用:https://github.com/lessw2020/Ranger-Deep-Learning-Optimizer。

Adam,SGD和Look Ahead + Adam/SGD在LSTM上的对比

为什么 RAdam 和 LookAhead 是互补的

可以说,RAdam 为优化器在开始训练时提供了最好的基础。RAdam 利用一个动态整流器来根据变化调整 Adam 的自适应动量,针对当前数据集,有效地提供了一个自动 warm-up,,以确保可以得到一个扎实的训练开头。

LookAhead 的灵感来自于最近对深度神经网络损失曲面的理解,并为在整个训练过程中进行健壮和稳定的探索提供了突破。

引用 LookAhead 团队的话说,LookAhead“减少了对大量超参数调优的需求”,同时“以最小的计算开销在不同深度学习任务之间实现更快的收敛”。

因此,两者都在深度学习优化的不同方面提供了突破,并且两者的结合具有高度的协同性,可能为你的深度学习结果提供了两种改进的最佳效果。因此,对更稳定和更健壮的优化方法的追求将继续下去,通过结合两个最新的突破(RAdam + LookAhead),Ranger 的集成有望为深度学习提供另一个进步。

Hinton 等人— “我们通过实验证明,即使在 ImageNet、CIFAR-10/100、神经机器翻译和 Penn Treebank 上使用缺省超参数设置, LookAhead 也可以显著提高 SGD 和 Adam 的性能。”

由于LookAhead具有双向探索的设置,因此对比SGD,Lookahead可以优化到距离minima更近的位置。

因此,本文在前面的 RAdam 介绍的基础上,解释了什么是 LookAhead,以及如何将 RAdam 和 LookAhead 合并到一个单一的优化器 Ranger 中,从而获得新的高精度。在我测试的前 20 个 epoch 中,我获得了一个新的高准确率,比目前的 FastAI 排行榜高出 1%。

Ranger的第一次测试达到了93%

FastAI排行榜,20个epochs, 92%

更重要的是,任何人都可以使用 Ranger,看看它有没有提高你的深度学习结果的稳定性和准确性!

因此,让我们深入研究驱动 Ranger 的两个组件 — RAdam 和 LookAhead:

1、什么是 RAdam (Rectified Adam):

我将你请参阅我的前一篇文章,里面有更多的 RAdam 细节,这里有个简短的总结,开发 RAdam 的研究人员调查了为什么自适应动量优化器(Adam,RMSProp 等等),所有这些都需要 warmup,否则他们在训练开始前就会陷入糟糕的/可疑的局部最佳状态。

原因是在开始训练时,当优化器没有看到足够的数据来做出准确的自适应动量决策时,数据的方差就会出现非常大的情况。因此,Warmup 可以减少训练开始时的方差……但即使是决定 Warmup 的程度,也需要根据数据集改变手动调整。

因此,Rectified Adam 是通过使用一个整流函数来确定一个“启发式的 Warmup”,这个整流函数是基于实际遇到的方差来确定的。整流器动态的关闭和开启自适应动量,这样它就不会全速跳跃,直到数据的方差稳定下来。

通过这样做,就避免了手动热身的需要,并自动稳定了训练。

一旦方差稳定下来,RAdam 基本上就变成了 Adam,甚至是 SGD。因此,RAdam 的贡献是在训练的开始。

读者注意到,在结果部分,虽然 RAdam 超过了 Adam,但从长远来看,SGD 最终可以赶上并超过 RAdam 和 Adam 的最终精度。

这就是我们现在要使用 LookAhead 的地方,整合一种新的探索机制,即使在 1000 个 epochs 之后也能超越 SGD。

Lookahead使用alpha= 0.5和变化学习率 vs SGD,1000个epoch

2、 Lookahead — 用于探索损失超平面的小伙伴 =更快、更稳定的探索和收敛。

正如 Lookahead 的研究人员所指出的,目前,大多数成功的优化器都是在 SGD 的基础上进行优化的

1 、自适应动量(Adam, AdaGrad)

2 、一种加速形式(Nesterov 动量或 Polyak Heavy Ball)

来完善探索和训练过程,最终趋同。

然而,Lookahead 是一种新的发展,它维持两组权重,然后在它们之间进行插值 — 实际上,它允许一组更快的权重“向前看”或探索,而较慢的权重留在后面,以提供更长期的稳定性。

结果减少了训练过程中的方差,大大降低了对次优超参数的敏感性,并减少了对大量超参数调优的需要。这是在完成各种深度学习任务时实现更快的收敛。换句话说,这是一个令人印象深刻的突破。

通过简单的类比,可以将 LookAhead 理解为以下内容。想象你在一个山顶,周围有各种各样的落差。其中一条通往成功的底部,而其他的只是倒霉的裂缝。

你自己独自探索是困难的,因为你必须选一条路下去,并假设它是一个死胡同,然后再找路出来。

但是,如果你有一个朋友,他呆在或接近顶部,如果你选的路是好的,就帮助你备份,这样你可能会更好的找到最优的路径,因为探索全地形会更快,困倒霉的裂缝的可能性会更小。

这就是 LookAhead 的基本功能。它保留一个额外的权值副本,然后让内部化的“更快”优化器(对于 Ranger,即 RAdam)进行 5 或 6 个 batch 的搜索。batch 间隔由 k 参数指定。

当 k 个 batch 的探索完成时,LookAhead 将它保存的权值与 RAdam 的最新权值之间的差值乘以一个 alpha 参数(默认情况下为 0.5),r 然后更新 RAdam 的权值。

Range代码显示Lookahead更新RAdam的参数

结果实际上是内部优化器(在本例中是 RAdam)的快速移动平均和通过 LookAhead 获得的较慢的指数移动平均的综合效应。速度快的人探索,而速度慢的人则充当拉回或稳定机制 — 通常在速度快的人探索时留在后面,但在某些情况下,当速度快的人继续探索时,速度慢的人会把速度快的人推下一个更有希望的斜坡。

由于具有 LookAhead 的安全性,优化器可以更充分地探索前景,而不必担心陷入困境。

这种方法与目前使用的两种主要方法完全不同——自适应动量或“heavy ball”/Nesterov 类型动量。

因此,LookAhead 在探索和寻找“下降的方式”方面更胜一筹,因为它增强了训练的稳定性,甚至超过了 SGD。

3、Ranger — 一个集成的代码库,提供了把 RAdam 和 LookAhead 结合在一起的优化器

Lookahead 可以和任何优化器一起使用,作为“fast”权值,论文中使用的是 vanilla Adam,因为 RAdam 当时还不可用。

LookAhead的PyTorch集成

然而,为了便于代码集成,简化用法,我合并了成一个单一的优化器,名为 Ranger。

我个人看到的ImageNette最高的20个epoch的分数 — 实际上是Ranger的第一次运行。(92%是目前的排行榜)。还要注意稳定的训练进度。

4、现在就来用 Ranger 吧!

在 github 上有几个 LookAhead 的实现,我从 LonePatient 的一个开始,因为我喜欢它简洁的代码,然后在此基础上构建。RAdam,当然来自官方的 RAdam github 代码库。

使用步骤:

1 、 把 ranger.py 拷贝到你的文件夹中

2 、 import ranger:

3 、使用 FastAI 构建一个训练准备使用 Ranger。

4 、开始测试!

LookAhead 参数:

k parameter :— 这个参数控制了在与 LookAhead 权值合并之前要运行多少个 batch,常见的默认值是 5 或者 6,论文中使用到了 20。

alpha = 这个参数控制了与 LookAhead 参数差异更新的百分比。Hinton 等人做了一个强有力的证明 0.5 可能是理想值,但值得做个简短的实验验证一下。这篇论文提到的一个未来的想法可能是把 k 和或 alpha 放在一个基于训练进展程度的时间表上。

总结

两个独立的研究团队在实现快速、稳定的深度学习优化算法的目标上取得了新的突破。我发现,通过结合这两个,RAdam + LookAhead,产生了一个增强的优化器(Ranger),并在 ImageNette 验证了运行 20 个 epoch 分数的新高。

需要进一步的测试来优化 LookAhead 的 k 参数和 RAdam 学习率 ,但 LookAhead 和 RAdam 都减少了在达到 state of the art 之前的手动超参数调优,应该可以帮助你得到最好的训练结果。

—END—

英文原文:https://medium.com/@lessw/new-deep-learning-optimizer-ranger-synergistic-combination-of-radam-lookahead-for-the-best-of-2dc83f79a48d

推荐原创干货阅读:  

聊聊近状, 唠十块钱的

【Deep Learning】详细解读LSTM与GRU单元的各个公式和区别

【手把手AI项目】一、安装win10+linux-Ubuntu16.04的双系统(全网最详细)

【Deep Learning】为什么卷积神经网络中的“卷积”不是卷积运算?

【TOOLS】Pandas如何进行内存优化和数据加速读取(附代码详解)

【TOOLS】python3利用SMTP进行邮件Email自主发送

【手把手AI项目】七、MobileNetSSD通过Ncnn前向推理框架在PC端的使用

【时空序列预测第一篇】什么是时空序列问题?这类问题主要应用了哪些模型?主要应用在哪些领域?

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

个人微信

备注:昵称+学校/公司+方向

拉你进AI蜗牛车粉丝群

点个在看,么么哒!

可以丢掉SGD和Adam了,新的深度学习优化器Ranger:RAdam + LookAhead强强结合相关推荐

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

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

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

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

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

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

  4. adam优化_认识 AdaMod: 一个新的有记忆的深度学习优化器

    Meet AdaMod: a new deep learning optimizer with memory by Less Wright https://medium.com/@lessw/meet ...

  5. USC提出拟牛顿法深度学习优化器Apollo,效果比肩SGD和Adam

    ©作者 | Xuezhe Ma 单位 | USC助理教授 研究方向 |NLP.机器学习 摘要 本文介绍了 Apollo,一种针对非凸随机优化的拟牛顿方法.它通过对角矩阵逼近 Hessian,动态地将损 ...

  6. 厉害了!牛顿法深度学习优化器,效果比肩SGD和Adam

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨Xuezhe Ma@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/40 ...

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

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

  8. 深度学习优化器Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)

    在机器学习.深度学习中使用的优化算法除了常见的梯度下降,还有 Adadelta,Adagrad,RMSProp 等几种优化器,都是什么呢,又该怎么选择呢? 在 Sebastian Ruder 的这篇论 ...

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

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

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

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

最新文章

  1. Oracle442个应用场景---------PL/SQL基础
  2. CFA考试一二三级经验,我写的很仔细......
  3. 使用RoundedBitmapDrawable快速生成圆角和圆形图片
  4. java笔记4-类型转换
  5. java jdk 1.8 配置_java_Day01: java的jdk环境变量配置(1.8)
  6. win 10下方搜索栏没见了解决方法
  7. js基于lodash实现前端防抖与节流
  8. 【转】英文论文中“such as, for example, e.g., i.e., etc., et al. ”的用法分析
  9. string类的erase函数属于stl吗_探索STL容器:vector
  10. python3爬虫-通过requests爬取图虫网
  11. A - 敌兵布阵(线段树)(单点更新区间求和)
  12. python 数组中取出最小值_每日算法系列【LeetCode 153】寻找旋转排序数组中的最小值...
  13. 新科LoRa网关和LoRa节点
  14. 基于帧的时隙ALOHA(FSA)算法的实现与性能分析
  15. 浅入浅出linux中断子系统
  16. 3.7 矩阵最小二乘广义逆
  17. 控制用计算机论文,计算机在自动控制技术实践中的应用分析论文原稿
  18. oracle存储过程借助utl,使用UTL_MAIL包实现存储过程邮件发送
  19. 金融课第二次测试笔记
  20. 火狐安全软件Huohong

热门文章

  1. c4d渲染测试软件,C4D常用的4大主流渲染器
  2. 5.2.3 UE behaviour in state 5GMM-REGISTERED
  3. 西门子PLC怎么调试?
  4. vfp 操作excel
  5. 2021年4月12日 关于VRRP!!!
  6. iphone捷径未能连接服务器,ios13无法安装第三方捷径怎么办 不允许不受信任的快捷指令解决方法...
  7. Lexicon Enhanced Chinese Sequence Labelling Using BERT Adapter 论文解读
  8. 如何调整硬盘分区大小
  9. PCISPH的通俗解释与简单实现
  10. html 自动字体大小,根据屏幕大小自动修改字体大小的代码