adam相关的优化器

4 篇文章 0 订阅
订阅专栏
3 篇文章 0 订阅
订阅专栏

原文来自:https://zhuanlan.zhihu.com/p/52084949

选自medium,作者:Phúc Lê,机器之心编译,参与:高璇、王淑婷。

Adam 自出道以来,就一直是最流行的深度学习优化器,哪怕现在其实已经有几种可能更好用的优化器……

如果将 Adam 优化出现以来产生的关于优化过程的有趣想法按时间顺序排列的话,结果如下:

  • LR Range test + Cyclical LR(《Cyclical Learning Rates for Training Neural Networks》)
  • SGDR(《SGDR: Stochastic Gradient Descent with Warm Restarts》)
  • SGDW(R) and AdamW(R)(《Fixing Weight Decay Regularization in Adam》)
  • 1-cycle policy and super-convergence(《Super-Convergence: Very Fast Training of Neural Networks Using Large Learning Rates》)

这个来自 Andrej Karpathy 的笑话或多或少是我深度学习项目的一套流程。除非把具有学习率硬编码的代码直接从 GitHub 里复制到所选优化器中,否则我可能只会把 3e-4 放到 Adam 优化器中,然后让模型训练。如果损失减少,今天就可以收工大吉。

但是,那些美好的日子已经一去不复返了。所以在这篇博客中,我将概述一些人们想出来推翻 Adam 的方法。

 

LR Range Test:不再盲目找最佳学习率

在这之前,如果 3e-4 在我的数据集上无法作用于模型,我会采取两个办法:

  • 如果看不到损失值移动的明确方向,我会降低学习率。
  • 如果在小数点后 5 或 6 位才能看到损失减少,我会提高学习率。
  • 如有必要,我会再重复上面的过程。

2015 年,Leslie N. Smith 将上述的反复试验法形式化为一种名为 LR Range Test 的技术。这个方法很简单,你只需将模型和数据迭代几次,把学习率初始值设置得比较小,然后在每次迭代后增加。你需要记录学习率的每次损失并将它画出。

LR Range Test 图示。LR 的初始值仅为 1e-7,然后增加到 10

LR Range Test 图应该包括三个区域,第一个区域中学习率太小以至于损失几乎没有减少,第二个区域里损失收敛很快,最后一个区域中学习率太大以至于损失开始发散。

除了确保你正在选择最佳学习率之外,该技术还可以作为一种「保险」检查。如果 LR Range Test 没有显示上述 3 个区域,或者图中有断层(损失中有 NaN 值),则表示模型中有缺陷或者数据中有错误。在运行模型之前,最好获取一个理想的 LR range 图。

不好的 LR Range 测试结果。断层处也是损失具有 NaN 值的地方

Cyclical LR :谁说 LR 需要下降

以往的常识是逐步降低学习率或使用指数函数,从而使模型收敛更稳定。

Leslie Smith 在同一篇论文中挑战了这一观点,他认为,与其单调地降低学习率,不如让学习率在合理范围内进行周期性变化,这样实际上能以更少的步骤提高模型的准确率。

在 lr 和 max_lr 范围内循环学习率

lr 和 max_lr 的范围可以通过上述的 LR Range test 技术来确定。这背后的原理是:最优学习率将在处于这个范围内,所以如果学习率在这歌区间变化,大多数情况下你将得到一个接近最优学习率的学习率。

作者讨论的另一个优点是能够在损失情况下避开鞍点。鞍点位置的梯度较小,因此小的学习率使模型在训练后期遍历这些鞍点时会很慢。通过在后期提高学习率,可以帮助模型更有效地摆脱鞍点。

  • Keras: https://github.com/bckenstler/CLR
  • Pytorch: https://github.com/anandsaha/pytorch.cyclic.learning.rate/blob/master/cls.py

 

SGDR:性能良好的旧版热重启 SGD

原则上,SGDR 与 CLR 本质是非常相似的,即在训练过程中学习率是不断变化的。

可重启和余弦退火的 SGD。图片来源:https://www.jeremyjordan.me/nn-learning-rate/

其中,主动退火策略(余弦退火)与重启计划相结合。重启是一个「热」重启,因为模型没有像全新模型那样重启,而是在重新启动学习率后,使用重启前的参数作为模型的初始解决方案。这在实现中非常简单,因为你不需要对模型执行任何操作,只需要即时更新学习率。

到目前为止,Adam 等自适应优化方法仍然是训练深度神经网络的最快方法。然而,各种基准测试的许多最优解决方案或在 Kaggle 中获胜的解决方案仍然选用 SGD,因为他们认为,Adam 获得的局部最小值会导致不良的泛化。

SGDR 将两者结合在一起,迅速「热」重启到较大的学习率,然后利用积极的退火策略帮助模型与 Adam 一样快速(甚至更快)学习,同时保留普通 SGD 的泛化能力。

  • Keras: https://gist.github.com/jeremyjordan/5a222e04bb78c242f5763ad40626c452
  • 关于 Pytorch 的 PR:  https://github.com/pytorch/pytorch/pull/7821/files

AdamW 和 SGDW:错误的权值衰减

「热」启动策略非常好,并且在训练期间改变学习率似乎是可行的。但为什么上一篇论文没有扩展到 AdamR 呢?

论文《Fixing Weight Decay Regularization in Adam》的作者曾说:

虽然我们初始版本的 Adam 在「热」启动时性能比 Adam 更好,但相比于热启动的 SGD 没有什么竞争力。

这篇论文指出,所有流行的深度学习框架(Tensorflow,Pytorch)都在错误的权值衰减中实现了 Adam。作者在论文中提出了以下意见:

  • L2 正则化和权值衰减不同。
  • L2 正则化在 Adam 中无效。
  • 权值衰减在 Adam 和 SGD 中同样有效。
  • 在 SGD 中,再参数化可以使 L2 正则化和权值衰减等效。
  • 主流的库将权值衰减作为 SGD 和 Adam 的 L2 正则化。

ImageNet 上的前 5 个测试错误,图片来自原论文

→他们提出了 AdamW 和 SGDW,这两种方法可以将权值衰减和 L2 正则化的步骤分离开来。

通过新的 AdamW,作者证明了 AdamW(重启 AdamWR)在速度和性能方面都与 SGDWR 相当。

更多细节请参考:  https://www.fast.ai/2018/07/02/adam-weight-decay/

在 Pytorch 和 Keras 中有一些针对此修复的请求,所以你应该很快就可以直接从库中使用这个。

 

一周期策略和超收敛

在 2018 年的近期工作中,LR Range test 和 CLR 的作者将自己的想法推向了极致,其中循环学习率策略仅包含 1 个周期,因此称作「一周期」策略。

在一周期策略中,最大学习率被设置为 LR Range test 中可以找到的最高值,最小学习率比最大学习率小几个数量级。

整个周期(向上和向下)的长度被设置为略小于训练周期的总数,这样循环结束后有残余时间降低学习率,从而帮助模型稳定下来。

我们可以将这种策略看作是一种探索-开发的权衡,其中周期的前半部分更有可能从某一局部最优跳到另一局部最优,从而有望在最平坦、最广泛的局部最优区域达到稳定。以较大的学习率开始循环的后半部分有助于模型更快地收敛到最优。

一周期策略本身就是一种正则化技术,因此需要对其它正则化方法进行调优才能与此策略配合使用。

在 Imagenet 上训练 Inception-Resnet-v2 时的超收敛

通过这一策略,作者演示了「超收敛」,它达到相同的验证准确率只需要 1/5 的迭代。

这种现象特别值得注意,因为随着可用的标记训练数据受限,收敛效果会增加。

更多细节请参考: https://sgugger.github.io/the-1cycle-policy.html

 

结论

所以在 2018 年,你应该做什么来代替 3e-4 Adam 工作流程呢?有很多东西需要考虑,如批量大小、动量等。但是,更好的工作流程将是:

  • 使用 LR Range Test 找到最佳学习率,并完整地检查当前模型和数据。
  • 始终使用学习率调度器,该调度器会改变上一步中找到的学习率,可以是 CLR 或 Restart。
  • 如果需要 Adam,请使用具有适当权值衰减的 AdamW,而不是当前流行框架中使用的默认权值衰减。
  • 如果想实现超收敛,可以进一步尝试一周期策略。

原文链接: https://medium.com/vitalify-asia/whats-up-with-deep-learning-optimizers-since-adam-5c1d862b9db0

2017年深度学习优化算法最新进展:改进SGD和Adam方法
jacke121的专栏
08-05 5094
2017年深度学习优化算法最新进展:如何改进SGD和Adam方法 转载的文章,把个人觉得比较好的摘录了一下 AMSGrad 这个前期比sgd快,不能收敛到最优。 sgdr 余弦退火的方案比较好 最近的一些研究(Dozat and Manning, 2017[13]、Laine and Aila, 2017[16])通过实验发现,调低β2值,影响了Adam方法中过去平方梯度的指数移动平均值的...
强化学习算法中的Adam优化器
AI架构设计之禅
05-21 420
1. 背景介绍 1.1 强化学习的兴起与挑战 强化学习(Reinforcement Learning,RL)作为机器学习的一个重要分支,近年来取得了令人瞩目的成就,其应用范围涵盖了机器人控制、游戏AI、自然语言处理等众多领域。强化学习的核心思想是让智能体(Agent)通过与环境的交互学习到最优的
Adam真的是最好的优化器吗?有人认为不过是神经网络进化的结果
数据派THU
12-10 348
来源:机器之心本文约2400字,建议阅读6分钟Adam 优化器真的是最好的优化器吗?提到优化器,大多数人会想到 Adam。自 2015 年推出以来,Adam 一直是该领域的“王者”。但近...
余弦退火算法作图理解(python)
hxl
04-11 1712
model = MyBertModel() optimizer = optim.AdamW(model.parameters(),lr=1) #一阶动量和二阶动量都用起来,就是 Adam 了——Adaptive + Momentum。 scheduel = CosineAnnealingWarmRestarts(optimizer,T_0 = 2,T_mult=1,eta_min=0,last_epoch=-1)#T_0就是初始restart的epoch数目,T_mult就是重启之后因子,默认是1。我觉得可
余弦退火:通过动态调整学习率增强深度学习
weixin_46287760的博客
02-20 3031
本文将深入探讨了余弦退火的概念、其理论基础、实际应用、代码示例以及它在深度学习领域提供的优势。
学习率:余弦退火衰减策略(附代码+在cifar10上采用余弦退火衰减)
weixin_45074568的博客
04-09 2819
学习率会在刚开始的时候上升,加快模型的收敛速度,寻找最优点位置,到达一定step后,学习率下降,此时我们可以认为这是一个模型在微调的过程。上升采用线性上升,下降采用cos函数下降。 step = (训练样本数 * 训练epoch )/batch_size 0.001是自己设置的learning_base点。 下面为cifar-10数据集,学习采用余弦退火衰减 实现方式如下,利用Callback实现,与普通的ReduceLROnPlateau调用方式类似: import numpy as np import.
使用余弦退火(CosineAnnealing)调整学习率的代码实现
AI_dataloads的博客
10-30 2528
optimizer类型对象含义: 指定要进行学习率调度的优化器。调度器将会修改这个优化器中的学习率。T_max类型: 整数含义: 一个周期(epoch)的长度,指定了学习率从最大值下降到最小值的周期长度。在余弦退火学习率调度器中,学习率在 T_max 这个周期内按照余弦函数的形状下降。通常,T_max 被设置为一个整数,代表了网络训练的总周期数。eta_min类型: 浮点数含义: 学习率的下限。在训练过程中,学习率将不会小于这个值。默认为0。last_epoch类型: 整数含义。
adamw和adam 优化器相关讲解.docx
09-16
adamw和adam 优化器相关讲解
如何在keras中添加自己的优化器(如adam等)
09-16
主要介绍了在keras中实现添加自己的优化器(如adam等)方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Adam优化算法原理详解(吴恩达深度学习笔记)
01-06
在介绍Adam之前首先介绍一下momentum和RMSprop优化算法。 一、momentum 1、指数加权平均数 指数加权平均数不仅考虑了当前数值也涵盖了以前的数据对现在的影响。 解释指数加权平均值名称的由来: 指数加权平均值的...
SGD和Adam优化器在卷积神经网络上的结果对比实验 文档+代码整理
01-28
# SGD和Adam优化器在卷积神经网络上的结果对比实验 文档+代码整理 1. 使用ResNet18进行实验,研究了batch size、学习率和权重初始化对图像分类任务的影响; 2. 针对LeNet、AlexNet、ResNet18三种卷积神经网络,比较...
keras学习率余弦退火CosineAnnealing
01-06
keras学习率余弦退火CosineAnnealing1.引言2.余弦退火的原理3.keras实现 1.引言 当我们使用梯度下降算法来优化目标函数的时候,当越来越接近Loss值的全局最小值时,学习率应该变得更小来使得模型不会超调且尽可能接近这一点,而余弦退火(Cosine annealing)可以通过余弦函数来降低学习率。余弦函数中随着x的增加余弦值首先缓慢下降,然后加速下降,再次缓慢下降。这种下降模式能和学习率配合,以一种十分有效的计算方式来产生很好的效果。 在论文Stochastic Gradient Descent with Warm Restarts中介绍主要介绍了带重启的随机梯度下
RadioMLtrainer_网络优化_ADAM_
09-30
属于神经网络中的一种优化算法,是一中较SGD更好的方法
【深度学习】(10) 自定义学习率衰减策略(指数、分段、余弦),附TensorFlow完整代码
博观而约取,厚积而薄发
04-28 6259
大家好,今天和大家分享一下如何使用 TensorFlow 自定义 指数学习率下降、阶梯学习率下降、余弦学习率下降 方法,并使用 Mnist数据集验证自定义的学习率下降策略。 创建的自定义学习率类方法,需要继承 tf.keras.optimizers.schedules.LearningRateSchedule 1. 指数学习率下降 指数学习率下降公式为: 其中代表初始的学习率,代表学习率衰减系数,代表epoch,即每次迭代学习率衰减一次 以初始学习率,学习率衰减系数,为例指数学...
垃圾分类、EfficientNet模型B0~B7、Rectified Adam(RAdam)、Warmup、带有Warmup的余弦退火学习率衰减
あずにゃん梓喵的博客
08-04 6871
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) EfficientNet中的每个模型要求的输入形状大小 每个网络要求的输入形状大小: EfficientNetB0 - (224, 224, 3) EfficientNetB1 - (240, 240, 3) EfficientNetB2...
文章Super-Convergence记录
葫芦与瓢的博客
08-31 1539
Super-Convergence: Very Fast Training of Residual Networks Using Large Learning Rates 在这篇文章中,作者针对现在训练较慢,超参数学习率比较难找,给出了自己的解决方案,周期学习率: 将学习率设置一个最大值,和最小值,在给出一个参数stepsize,两个stepsize为一个周期,在前半个stepsize内,学习率
文献阅读《ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION》
dog13的博客
08-21 2821
一、Adam介绍 Adam是一种基于低阶矩的自适应随机目标函数的一阶梯度优化算法。它具有如下优点:对梯度的缩放具有不变性;既适用于数据或参数较大的问题,也同样适用于稀疏梯度问题;步长能够自动退火等。相较于SDG、RMSProp以及AdaGrad而言,在一般优化问题上都具有良好的表现。 二、Adam的算法原理 1.算法简述 Adam算法是对梯度的一阶矩、二阶矩进行估计并将其应用于参数更新的一种算法Adam算法的实现方式Adam算法的实现如上图所示,其中和分别是对梯度的一阶矩和二阶矩的估计,并
训练神经网络的最快方法:Adam优化算法+超级收敛(转)
weixin_30911809的博客
05-15 1879
训练神经网络的最快方法:Adam优化算法+超级收敛(转) 2018-7-26 10:54|发布者:炼数成金_小数|原作者: 刘志勇 译|来自: AI前线 摘要: 纵观 Adam 优化器的发展历程,就像过山车一样。它于 2014 年在论文 Adam: A Method for Stochastic Optimization(https://arxiv.org/a...
深度学习:学习率规划-余弦退火CosineAnnealing和WarmRestart原理及实现
热门推荐
Ten_yn的博客
12-15 1万+
摘要:文献【1】中除了权重衰减还利用了余弦退火(Cosine Annealing)以及Warm Restart,本文介绍这两种方法的原理及numpy和Keras的实现方法,其中Keras实现中继承回调函数Callbacks。
AdamOptimizer优化器
最新发布
05-27
Adam优化器的主要思想是对每个参数维护一个自适应的学习率,使得每个参数在更新时都能够使用合适的学习率。Adam算法能够在多种类型的深度神经网络上取得优异的表现。 具体来说,Adam优化器通过计算梯度的指数移动...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • [NLP]Attention机制与self-Attention机制 21174
  • [Pytorch]PyTorch Dataloader自定义数据读取 18488
  • .yml文件的基本用法 15407
  • [Attention]SE-Net论文讲解 12432
  • [Pytorch]Pytorch的tensor变量类型转换 10857

分类专栏

  • ACM 9篇
  • Attention 3篇
  • Detection 1篇
  • segementation 1篇
  • classification 1篇
  • GAN 3篇
  • Pytorch 3篇
  • 论文解析 14篇
  • Linux 4篇
  • 技巧/经验/心得 2篇
  • 机器学习 7篇
  • 深度学习 4篇
  • CV 1篇
  • NLP 1篇
  • 论文源码解读 3篇
  • offer之路 12篇
  • Human Pose Estimation 2篇
  • 系统/环境/工具 22篇
  • python 13篇
  • 人脸关键点检测 3篇
  • 线代/概率 1篇

最新评论

  • [NLP]Attention机制与self-Attention机制

    weixin_45936934: 流弊

  • [NLP]Attention机制与self-Attention机制

    sinat_36134052: 联系不起来博客的前一部分和后一部分,前面讲的引入attention之后的语义信息Ci和后面讲的attention的QKV联系不起来表情包

  • [NLP]Attention机制与self-Attention机制

    模型预测控制: 很清楚,赞

  • [BP求导]BP反向传播理解

    elsiwaveQI: 所有边相乘等于6,对b求导是5,如何理解?还是不理解

  • .yml文件的基本用法

    zanliaoliao: 双引号、单引号的解释是不是反了

最新文章

  • 权值线段树/主席树学习笔记+例题
  • ACM姿势/思维/算法训练
  • 梯度下降优化算法综述
2019年83篇
2018年86篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码塘坑模板推广宝安营销网站大运模板推广坂田营销型网站建设坑梓网站改版光明外贸网站建设爱联高端网站设计木棉湾关键词排名石岩网站制作平湖营销型网站建设大浪网站优化按天收费沙井网站优化按天收费大芬seo网站推广龙华如何制作网站石岩关键词排名包年推广木棉湾百度网站优化排名大芬建设网站惠州建网站南澳SEO按天计费盐田百搜标王南澳企业网站设计南联至尊标王布吉网站推广工具平湖关键词按天收费永湖设计公司网站布吉网站推广系统同乐网站优化按天收费塘坑网站搜索优化福田网站优化按天计费光明网站优化推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化