目录

  • 1、优化算法到底是个啥
  • 2、几种经典的优化算法
    • 2.1 梯度下降(GD)
      • 2.1.1 批量梯度下降(BGD)
      • 2.1.2 随机梯度下降(SGD)
      • 2.1.3 小批量梯度下降(SBGD)
    • 2.2 动量(momentum)
    • 2.3 Nesterov动量(NAG)
    • 2.4 AdaGrad
    • 2.5 RMSprop
  • 3、文章贡献
  • 4、Adam优点
  • 5、Adam算法
  • 6、Adam更新规则
  • 7、初始化偏差修正
  • 8、收敛性分析
  • 9、实验分析
  • 10、扩展:Adamax
  • 11、总结

第一次阅读英文文献,可能解读的不太到位。前些天看了一位作者写的“学生为什么要写博客”感触很深,于是想重新开始记录学习的点滴,如有理解不当的地方,欢迎各位大佬批评指正。

1、优化算法到底是个啥

可以说是通过不断地训练来最小化或最大化目标函数,在前向传播的时候去得到损失函数,然后在反向传播的时候找到合适的参数来使我们的损失函数达到最小。

一般来说优化算法可分为两类:

一阶优化算法:
采用一阶导数进行优化,比如最经典的梯度下降

二阶优化算法:
采用二阶导数进行优化,但由于二阶导计算量较大,用的比较少

2、几种经典的优化算法

2.1 梯度下降(GD)

曾经对梯度下降一个直观的理解是关于一个人下山的例子,然而山上雾太大,他只好朝当前位置最陡峭的地方往底下走,但很多时候这座山不一定都是凸的,就容易陷入局部最优。

在梯度下降这个家族中有以下三种方法,分别是BGD、SGD和SBGD

2.1.1 批量梯度下降(BGD)

每次训练采取的是数据集中的全部数据
优点: 对全局参数求偏导,得到的是全局最优解
缺点: 当数据量很大的时候,训练耗时长

2.1.2 随机梯度下降(SGD)

于是出现了一个较为极端的方法进行改进

每次训练采取的是数据集中的一个样本
优点: 计算量少,有效解决速度和内存问题
缺点: 容易受噪声影响;仅考虑单个样本的梯度,易陷入局部最优;易振荡不稳定,学习率难选择

2.1.3 小批量梯度下降(SBGD)

BGD和SGD方法的一种折中,结合了前两者的优点

每次训练采取的数据量在1和全部数据之间
关于如何选batch_size有这么个原则:
1、当数据量<2000,则可用BGD
2、当数据量>2000,则SBGD的batch_size可选用2的次方(考虑电脑内存运行更快)

2.2 动量(momentum)

后来为了抑制SGD左右的振荡,加速收敛,出现了动量的概念进行改进。
动量的作用可以理解为从山顶滚一小球,在向山底的过程中由于受到重力的作用小球会越滚越快,从而能减少左右的振荡,加速收敛。

动量的原理其实是对梯度进行指数加权移动平均,不仅考虑了当前位置的梯度,还综合考虑前面时刻的梯度。其中通式中的β是指数衰减率,一般取0.9,将通式展开即每一项实际值前面的系数会随着时间的远近呈指数衰减。

2.3 Nesterov动量(NAG)

还是前面那个小球,在快要滚到山底的时候由于仍有较快的速度,不会停在最低点,反而会滚向另一个山坡,为了解决这一问题,Nesterov就提出了NAG算法,即快要到山底的时候先做一个预演,利用之前的梯度方向获得未来的更新参数,从而在加速的同时增加稳定性。

2.4 AdaGrad

上述的梯度下降法在更新参数的时候使用的是固定的学习率,然而对于模型中不同性质的参数来说显得不太合适,于是就出现了自适应学习率的方法进行改进,可以根据情况不同而自动调节。

AdaGrad 在处理稀疏问题上表现很好,原因是它更新参数的时候分母用的是梯度平方的累加和,当梯度较稀疏时分母的累加和较小,倒数可以进行调解,但缺点是越到后期分母的梯度累加和越来越大,容易出现梯度消失的问题。

2.5 RMSprop

关于 AdaGrad 在后期易出现梯度消失的问题上 RMSprop 有所改进,因为它更新参数时分母只跟当前时间的动量有关,有效避免了这一问题。然而 RMSprop 并没有进行偏差修正,尤其在稀疏梯度的时候,易导致训练不稳定。

当然还有其他一些优化方法,在这里就先不介绍了,以下进入文章正题

3、文章贡献

这篇文章主要在以往几种经典算法的基础上提出了一种基于低阶矩自适应估计的随机目标函数优化算法Adam,它结合了两种经典的算法:AdaGrad中处理稀疏梯度的优势以及RMSprop中处理非平稳目标的优势,广泛适用于机器学习中的非凸优化问题。

4、Adam优点

摘要中有提到Adam有以下优点:易于实现、计算效率高、内存需求少、参数更新大小不随梯度的对角缩放而变化、适合解决数据或参数较大的问题、适合非平稳目标和包含噪声或稀疏梯度的问题、超参数有直观解释通常无需调整等等。

5、Adam算法

Adam综合考虑了一阶矩估计和二阶矩估计,且进行了偏差修正。其中作者给出最后三行的替换式,可通过改变计算顺序来提高效率(二者在算式上是等同的)。

算法中对一阶和二阶矩估计都进行了一个偏差修正,文章后节会进行原因推导,主要是因为m0和v0都是初始化为0的,在最初几个时间步算出来的矩估计比实际梯度值会偏小,所以要进行修正。而到了后期t越来越大的时候,因β都是小于1的,1减去β的t次就会趋向于1,所以偏差修正对于后期是没有太大作用的。

最后在更新参数时分母多了一项epsilon是为了防止分母为0,epsilon通常取10的-8次

6、Adam更新规则

一个重要的属性是谨慎选择步长

7、初始化偏差修正

上述算法中简要说明了初始化偏差修正的原因,主要是初始化为0,下面对一阶矩估计和二阶矩估计进行一个实际的推导。

8、收敛性分析

论文中使用了一种在线学习框架来分析Adam的收敛性能,给定任意未知序列凸成本函数 f1(θ),f2(θ),……fT(θ),目标是预测参数 θt 和评估未知的成本函数 ft,由于事先对未知序列的属性是未知的,采用 regret 算法进行评估,表达式如下:

论文中给出了以下定理和推论,并且附录中有好几页关于该收敛性的证明

9、实验分析

论文中采取了不同的机器学习模型,包括逻辑回归、多层全连接神经网络和深层卷积神经网络,使用大规模数据集和相同的参数初始化来对比不同的优化算法。

1、逻辑回归:使用MNIST数据集,对28*28维图像进行分类,其中minibatch大小选用128,并进行了学习率衰减。

  • 左图中Adam 收敛速度与带动量的SGD相似,都比AdaGrad快。
  • 右图中使用IMDB影评数据集来分析稀疏特征,结果发现Adam 和AdaGrad在处理稀疏问题上收敛速度比带动量的SGD更快。

2、多层神经网络:使用两个全连接隐藏层(神经元各1000)和RELU激活函数,并将Adam与在多层神经网络上表现较好的SFO拟牛顿法进行对比.

  • 图中Adam在处理非凸问题上表现更好。

3、卷积神经网络:使用三个交替的5x5卷积滤波器和步长为2的3x3最大池化以及最后包含1000个隐藏神经元的全连接层。

  • 左图早期前3次迭代中Adam下降较快,加了动量的SGD在早期收敛的比较慢
  • 右图训练后期Adagrad收敛速度明显慢下去,Adam和加了动量的SGD收敛都较优

4、训练一个含有500个隐藏单元的单隐藏层和50维球形高斯潜变量的变分自编码器VAE,通过改变衰减率β对比有偏差修正的 Adam 和没有偏差修正的 RMSprop 收敛性能。

  • 图中绿色无偏差修正会导致训练不稳定。

10、扩展:Adamax

Adamax 是 Adam 的一种变体,是将 Adam 中权重基于L2范数的更新规则扩展到基于Lp范数的更新规则中,算法流程如下:

11、总结

Adam 结合了以往经典算法的优势,可用于处理稀疏梯度、非平稳目标以及非凸优化问题等,然而论文中并没有给出Adam 算法的局限,比如像Adam 这些自适应学习率的算法在训练早期是会有较大的方差的,导致易收敛到局部最优,移步下一篇看对 Adam 自适应学习率方差项进行修正的 RAdam 算法。

论文解读1——Adam: A Method For Stochastic Optimization相关推荐

  1. Adam算法_Tensorflow实现——论文解析:ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION

    目录 Adam优化器 论文解析:ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION 摘要 背景 算法介绍 偏差修正 收敛性理论证明 相关算法 实验 ADAMAX 结论 ...

  2. Paper:《Adam: A Method for Stochastic Optimization》的翻译与解读

    Paper:<Adam: A Method for Stochastic Optimization>的翻译与解读 目录 Adam: A Method for Stochastic Opti ...

  3. ADAM A METHOD FOR STOCHASTIC OPTIMIZATION

    ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION 1 INTRODUCTION 基于随机梯度的优化方法在许多科学和工程领域都具有重要的实际意义.这些领域中的许多问题 ...

  4. ADAM : A METHOD FOR STOCHASTIC OPTIMIZATION

    文章目录 概 主要内容 算法 选择合适的参数 一些别的优化算法 AdaMax 理论 代码 Kingma D P, Ba J. Adam: A Method for Stochastic Optimiz ...

  5. ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION

    Adam: a method for stochastic optimization_一种随机优化的方法[Paper] 目录 核心 介绍 Algorithm Initialization bias c ...

  6. 【论文解读】医学AI论文解读 | 超声心动图在临床中的自动化检测 | Circulation | 2018 | 中英双语...

    参考目录: 0 论文 1 概述 2 pipeline 3 技术细节 3.1 预处理 3.2 卷积网络 3.3 VGG分类网络结构 3.4 图像分割 4 遇到的问题 0 论文 论文是2018年的,发表在 ...

  7. 医学AI论文解读 |Circulation|2018| 超声心动图的全自动检测在临床上的应用

    文章来自微信公众号:机器学习炼丹术.号主炼丹兄WX:cyx645016617.文章有问题或者想交流的话欢迎- 参考目录: 文章目录 0 论文 1 概述 2 pipeline 3 技术细节 3.1 预处 ...

  8. Paper:论文解读《Adaptive Gradient Methods With Dynamic Bound Of Learning Rate》中国本科生提出AdaBound的神经网络优化算法

    Paper:论文解读-<Adaptive Gradient Methods With Dynamic Bound Of Learning Rate>中国本科生(学霸)提出AdaBound的 ...

  9. CVPR2020论文分方向整理之检测篇(代码/论文解读/136篇打包下载)

    z CVPR2020论文分方向整理之检测篇(代码/论文解读/136篇打包下载) 极市平台(微信公众号ID:extrememart):专注计算机视觉前沿资讯和技术干货.本文由极市平台首发,转载需获授权. ...

最新文章

  1. 使用代码生成建立可扩展序列化器(上)
  2. javascript之基本概念
  3. css图片过大,CSS解决图片过大撑破DIV的方法
  4. JAVA判断各种类型数据是否为空(亲测)
  5. 脱了马甲我也认识你: 聊聊 Android 中类的真实形态
  6. 浏览器 CSS Hack 收集
  7. hive 两个没有null指定的表左关联的结果有null_Hive企业级调优表的优化
  8. 系统学习数字图像处理之彩色图像处理
  9. python图像几何变换_python-opencv 图像几何变换--缩放、平移、旋转
  10. 过椭圆外一点引两条切线方程_S16-2 二次曲线和圆方程
  11. Python科学计算
  12. c语言所有的数学函数,C语言函数—数学函数,全在这里!
  13. POI合并单元格,赋值
  14. 什么是球缺?球缺体积如何计算?计算公式?球缺应用:一半径为R的球沉入水中,球面顶部正好与水面相切,球的密度为1,求将球从水中取出所做的功?
  15. ctf MISC disordered_zip
  16. 【LeetCode】799.香槟塔
  17. linux网卡连接失败设备无法激活
  18. 什么样的游戏最适合GameFi?
  19. MySQL必知必会二:MySQL简介
  20. 让独居的父母,时刻受到保护,老人远程无线监护解决方案

热门文章

  1. nginx 关闭某个请求的日志记录
  2. 关于vb2_buffer_done
  3. 商业竞技场上的奥运会
  4. 动态语言和静态语言两者的区别
  5. 安卓市场和安智市场_安卓应用如何快速上架应用市场?
  6. 我爱抽奖盒子小程序源码V4.1.3
  7. 签三方、试用期 注意事项
  8. JQuery checkedBox全选和全部选
  9. 计算机中画快捷键,Win10画图中快捷键有哪些丨Win10画图中快捷键图解
  10. 冬季养胃的几个好习惯