论文解读:Radam:ON THE VARIANCE OF THE ADAPTIVE LEARNING RATE AND BEYOND

1,目的

想找到一个比较好的优化器,能够在收敛速度和收敛的效果上都比较号。

目前sgd收敛较好,但是慢。

adam收敛快,但是容易收敛到局部解。

常用解决adam收敛问题的方法是,自适应启动方法。

2,adam方法的问题

adam在训练的初期,学习率的方差较大。

根本原因是因为缺少数据,导致方差大。

学习率的方差大,本质上自适应率的方差大。

可以控制自适应率的方差来改变效果。

3,Radam,控制自适应率的方差

一堆数学公式估计出自适应率的最大值和变化过程。

提出了Radam的优化过程

4,实验结论

前几个周期内整流项使得RAdam比Adam方法慢,但是在后期的收敛速度是比Adam要更快的。

尽管RAdam在测试精度方面未能超越SGD,但它可以带来更好的训练性能。

RAdam算法对初始学习率是具有鲁棒性的,可以适应更宽范围内的变化。在从0.003到0.1一个很宽的范围内,RAdam表现出了一致的性能,训练曲线末端高度重合

如果你以为RAdam只能处理较小数据集上的训练,或者只有在CNN上有较好的表现就大错特错了。即使大道有几十亿个单词的数据集的LSTM模型,RAdam依然有比Adam更好的表现。

5,个人理解

优势:鲁棒性强,这个优势很强,而且适合任何模型的初期的实验,也对新手比较友好;不用调试学习率,这个优势也很强;自适应启动的方式会增加超参数,不适合初期的实验。

缺点:论文也提出,他的收敛效果不一定是所有里面最好的。所以在实验的后期,对于老手,可以采用更加精细的学习率控制策略试试会不会拿到另一个好的结果。

==============================================================================

找到一种快速稳定的优化算法,是所有AI研究人员的目标。

但是鱼和熊掌不可兼得。Adam、RMSProp这些算法虽然收敛速度很快,当往往会掉入局部最优解的“陷阱”;原始的SGD方法虽然能收敛到更好的结果,但是训练速度太慢。

最近,一位来自UIUC的中国博士生Liyuan Liu提出了一个新的优化器RAdam

它兼有Adam和SGD两者的优点,既能保证收敛速度快,也不容易掉入局部最优解,而且收敛结果对学习率的初始值非常不敏感。在较大学习率的情况下,RAdam效果甚至还优于SGD。

RAdam意思是“整流版的Adam”(Rectified Adam),它能根据方差分散度,动态地打开或者关闭自适应学习率,并且提供了一种不需要可调参数学习率预热的方法。

一位Medium网友Less Wright在测试完RAdam算法后,给予了很高的评价:

RAdam可以说是最先进的AI优化器,可以永远取代原来的Adam算法了。

目前论文作者已将RAdam开源,FastAI现在已经集成了RAdam,只需几行代码即可直接调用。

补众家之短

想造出更强的优化器,就要知道前辈们的问题出在哪:

像Adam这样的优化器,的确可以快速收敛,也因此得到了广泛的应用。

但有个重大的缺点是不够鲁棒,常常会收敛到不太好的局部最优解 (Local Optima) ,这就要靠预热 (Warmup)来解决——

最初几次迭代,都用很小的学习率,以此来缓解收敛问题。

为了证明预热存在的道理,团队在IWSLT’14德英数据集上,测试了原始Adam带预热的Adam

结果发现,一把预热拿掉,Transformer语言模型的训练复杂度 (Perplexity) ,就从10增到了500。

另外,BERT预训练也是差不多的情况。

为什么预热、不预热差距这样大?团队又设计了两个变种来分析:

缺乏样本,是问题根源

一个变种是Adam-2k

在前2000次迭代里,只有自适应学习率是一直更新的,而动量 (Momentum) 和参数都是固定的。除此之外,都沿袭了原始Adam算法。

实验表明,在给它2000个额外的样本来估计自适应学习率之后,收敛问题就消失了:

另外,足够多的样本可以避免梯度分布变扭曲 (Distorted) :

这些发现证明了一点:早期缺乏足够数据样本,就是收敛问题的根源

下面就要证明,可以通过降低自适应学习率的方差来弥补这个缺陷。

降低方差,可解决问题

一个直接的办法就是:

把ψ-cap里面的ϵ增加。假设ψ-cap(. ) 是均匀分布,方差就是1/12ϵ^2。

这样就有了另一个变种Adam-eps。开始把ϵ设成一个可以忽略的1×10^-8,慢慢增加,到不可忽略的1×10^-4。

从实验结果看,它已经没有Adam原本的收敛问题了:

这就证明了,真的可以通过控制方差来解决问题。另外,它和Adam-2k差不多,也可以避免梯度分布扭曲。

然而,这个模型表现比Adam-2k带预热的Adam差很多。

推测是因为ϵ太大,会给自适应学习率带来重大的偏差 (Bias) ,也会减慢优化的过程。

所以,就需要一个更加严格的方法,来控制自适应学习率。

论文中提出,要通过估算自由度ρ来实现量化分析。

RAdam定义

RAdam算法的输入有:步长αt;衰减率{β1, β2},用于计算移动平均值和它的二阶矩。

输出为θt。

首先,将移动量的一阶矩和二阶矩初始化为m0,v0,计算出简单移动平均值(SMA)的最大长度ρ∞←2/(1-β2)-1。

然后按照以下的迭代公式计算出:第t步时的梯度gt,移动量的二阶矩vt,移动量的一阶矩mt,移动偏差的修正和SMA的最大值ρt。

如果ρ∞大于4,那么,计算移动量二阶矩的修正值和方差修正范围:

如果ρ∞小于等于4,则使用非自适应动量更新参数:

以上步骤都完成后,得出T步骤后的参数θT。

测试结果

RAdam在图像分类任务CIFAR-10和ImageNet上测试的结果如下:

尽管在前几个周期内整流项使得RAdam比Adam方法慢,但是在后期的收敛速度是比Adam要更快的。

尽管RAdam在测试精度方面未能超越SGD,但它可以带来更好的训练性能。

此外,RAdam算法对初始学习率是具有鲁棒性的,可以适应更宽范围内的变化。在从0.003到0.1一个很宽的范围内,RAdam表现出了一致的性能,训练曲线末端高度重合。

亲测过的网友Less Wright说,RAdam和他今年测试的许多其它论文都不一样。

其他方法常常是在特定数据集上有良好的效果,但是放在新的数据集上往往表现不佳。

而RAdam在图像分类、语言建模,以及机器翻译等等许多任务上,都证明有效。

(也侧面说明,机器学习的各类任务里,广泛存在着方差的问题。)

Less Wright在ImageNette上进行了测试,取得了相当不错的效果(注:ImageNette是从ImageNet上抽取的包含10类图像的子集)。在5个epoch后,RAdam已经将准确率快速收敛到86%。

如果你以为RAdam只能处理较小数据集上的训练,或者只有在CNN上有较好的表现就大错特错了。即使大道有几十亿个单词的数据集的LSTM模型,RAdam依然有比Adam更好的表现。

总之,RAdam有望提供更好的收敛性、训练稳定性,以及几乎对所有AI应用都用更好的通用性。

 
 
https://blog.csdn.net/u014248127/article/details/99696029
 
 
 
 

RAdam VS Adam的更多相关文章

  1. Unity Adam特性整理

    1.Wind 小工具,一个绘制箭头Gizmos的脚本 2.TubeLight柱形光照 蛮NB的技术,实现动态柱状光照,但相机必须挂上PostProcessing 默认场景拖出来之后是这样的,然后给相机 ...

  2. [DeeplearningAI笔记]改善深层神经网络_优化算法2.6_2.9Momentum/RMSprop/Adam优化算法

    Optimization Algorithms优化算法 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.6 动量梯度下降法(Momentum) 另一种成本函数优化算法,优化速度一般快于标准 ...

  3. 深度学习优化算法Momentum RMSprop Adam

    一.Momentum 1. 计算dw.db. 2. 定义v_db.v_dw \[ v_{dw}=\beta v_{dw}+(1-\beta)dw \] \[ v_{db}=\beta v_{db}+( ...

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

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

  5. 【深度学习】深入理解优化器Optimizer算法(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)

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

  6. Heroku创始人Adam Wiggins发布十二要素应用宣言

    Heroku是业内知名的云应用平台,从对外提供服务以来,他们已经有上百万应用的托管和运营经验.前不久,创始人Adam Wiggins根据这些经验,发布了一个“十二要素应用宣言(The Twelve-F ...

  7. TensorFlow之DNN(二):全连接神经网络的加速技巧(Xavier初始化、Adam、Batch Norm、学习率衰减与梯度截断)

    在上一篇博客<TensorFlow之DNN(一):构建“裸机版”全连接神经网络>中,我整理了一个用TensorFlow实现的简单全连接神经网络模型,没有运用加速技巧(小批量梯度下降不算哦) ...

  8. (五) Keras Adam优化器以及CNN应用于手写识别

    视频学习来源 https://www.bilibili.com/video/av40787141?from=search&seid=17003307842787199553 笔记 Adam,常 ...

  9. 【DeepLearning】优化算法:SGD、GD、mini-batch GD、Moment、RMSprob、Adam

    优化算法 1 GD/SGD/mini-batch GD GD:Gradient Descent,就是传统意义上的梯度下降,也叫batch GD. SGD:随机梯度下降.一次只随机选择一个样本进行训练和 ...

随机推荐

  1. 重温拉格朗日乘子法和KKT条件

    在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值:如果含有不等式 ...

  2. 分布式图片服务器FastDFS

    1. 什么是FastDFS FastDFS 是用 c 语言编写的一款开源的分布式文件系统.FastDFS 为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使 ...

  3. Django:RestFramework之-------视图

    10.视图 GenericAPIView封装一些方法,将这些方法返回值放在类变量位置上. 1.GenericAPIView视图示例:不怎么用 from api.utils.serializers.pa ...

  4. 美团点评CAT监控平台研究

    1. 美团点评CAT监控平台研究 1.1. 前言 此文根据我对官方文档阅读并记录整理所得,中间可能会穿插一些自己的思考和遇坑 1.2. 简介 CAT 是基于 Java 开发的实时应用监控平台,为美团点 ...

  5. Linux(Ubuntu)系统下使用crontab定期执行任务

    安装cron(Ubuntu系统自带) apt-get install cron 开启crontab日志 默认情况下的日志是没有开启的,我们需要找到 /etc/rsyslog.d/50-default. ...

  6. elasticsearch 分词后聚合

    es 对于text类型其实是分词存储的,但是有时候在聚合的时候,会发现这种情况下,会把字段分词后进行聚合.例如(1)A,B  (2)B,C   然后聚合后B就是2个,A和C各一个. 这需要看业务需求了 ...

  7. MongoDB分片,唯一索引与upsert

    前言 分片,唯一索引和upsert,表面上看似没有直接联系的几个东西,到底存在怎样的瓜葛呢? 分片 为了保持水平扩展的有效性,分片功能必须保证各个片之间没有直接关联,不需要与其他分片交互就可以独立做出 ...

  8. GitPython模块

    GitPython模块 安装: pip3 install gitpython Gitpython 操作 import os from git.repo import Repo import json ...

  9. 【OS_Windows】Win10应用商店闪退和点击Cortana搜索框闪退的解决方法

    Windows10用户遇到了打开应用商店时闪退和点击Cortana小娜搜索框闪退的问题,并且在微软社区求助,得到了一种可行的解决方法,那就是查看Network List Service(网络列表服务) ...

  10. git merge origin master git merge origin/master区别

    git merge origin master //将origin merge 到 master 上 git merge origin/master //将origin上的master分支 merge ...