Momentum
SGD方法中的高方差振荡使得网络很难稳定收敛,所以有研究者提出了一种称为动量(Momentum)的技术,通过优化相关方向的训练和弱化无关方向的振荡,来加速SGD训练。换句话说,这种新方法将上个步骤中更新向量的分量’γ’添加到当前更新向量。

V(t)=γV(t−1)+η∇(θ).J(θ)

通过θ=θ−V(t)来更新参数。

动量项γ通常设定为0.9,或相近的某个值。

这里的动量与经典物理学中的动量是一致的,就像从山上投出一个球,在下落过程中收集动量,小球的速度不断增加。

在参数更新过程中,其原理类似:

  1. 使网络能更优和更稳定的收敛;

  2. 减少振荡过程,加速收敛。

Adagrad方法

Adagrad方法是通过参数来调整合适的学习率η,对稀疏参数进行大幅更新和对频繁参数进行小幅更新。因此,Adagrad方法非常适合处理稀疏数据。

在时间步长中,Adagrad方法基于每个参数计算的过往梯度,为不同参数θ设置不同的学习率。

先前,每个参数θ(i)使用相同的学习率,每次会对所有参数θ进行更新。在每个时间步t中,Adagrad方法为每个参数θ选取不同的学习率,更新对应参数,然后进行向量化。为了简单起见,我们把在t时刻参数θ(i)的损失函数梯度设为g(t,i)。

G是之前该参数的梯度平方的和

Adagrad方法是在每个时间步中,根据过往已计算的参数梯度,来为每个参数θ(i)修改对应的学习率η。

Adagrad方法的主要好处是,不需要手工来调整学习率。大多数参数使用了默认值0.01,且保持不变。

Adagrad方法的主要缺点是,学习率η总是在降低和衰减。

因为每个附加项都是正的,在分母中累积了多个平方梯度值,故累积的总和在训练期间保持增长。这反过来又导致学习率下降,变为很小数量级的数字,该模型完全停止学习,停止获取新的额外知识。

因为随着学习速度的越来越小,模型的学习能力迅速降低,而且收敛速度非常慢,需要很长的训练和学习,即学习速度降低。

另一个叫做Adadelta的算法改善了这个学习率不断衰减的问题。

RMSProp方法
这是一个AdaGrad的延伸方法,它倾向于解决其学习率衰减的问题。RMSProp不是累积所有之前的平方梯度,而是将累积之前梯度的窗口限制到某个固定大小w。

与之前无效地存储w先前的平方梯度不同,梯度的和被递归地定义为所有先前平方梯度的衰减平均值。作为与动量项相似的分数γ,在t时刻的滑动平均值Eg²仅仅取决于先前的平均值和当前梯度值。

Eg²=γ.Eg²+(1−γ).g²(t),其中γ设置为与动量项相近的值,约为0.9。

θ=θ−∇(θ)

还可以做什么改进?

在之前的方法中计算了每个参数的对应学习率,但是为什么不计算每个参数的对应动量变化并独立存储呢?这就是Adam算法提出的改良点。

Adam算法

Adam算法即自适应时刻估计方法(Adaptive Moment Estimation),本质上是带有动量项的RMSprop。

1.类似于Momentum算法,综合考虑之前时间步的梯度动量。β1 系数为指数衰减率,控制权重分配(动量与当前梯度),通常取接近于1的值。默认为0.9

2,计算梯度平方的指数移动平均数,v0初始化为0。β2 系数为指数衰减率,控制之前的梯度平方的影响情况.类似于RMSProp算法,对梯度平方进行加权均值。默认为0.999

3.由于m0初始化为0,会导致mt偏向于0,尤其在训练初期阶段。所以,此处需要对梯度均值mt进行偏差纠正,降低偏差对训练初期的影响。

4.与m0 类似,因为v0初始化为0导致训练初始阶段vt偏向0,对其进行纠正。

初始的学习率α乘以梯度均值与梯度方差的平方根之比。其中默认学习率α=0.001,ε=10^-8,避免除数变为0。

参考链接:
https://www.jianshu.com/p/aebcaf8af76e

momentum、Adagrad、RMSProp、Adam梯度下降总结相关推荐

  1. 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

    深度学习笔记(一):logistic分类  深度学习笔记(二):简单神经网络,后向传播算法及实现  深度学习笔记(三):激活函数和损失函数  深度学习笔记:优化方法总结  深度学习笔记(四):循环神经 ...

  2. 优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

    本文介绍常见的一阶数值优化算法,这些方法在现代神经网络框架(tensorflow, caffe, torch)中已经是标准配置. 问题 设系统参数为ω.对于样本i,其代价函数为Qi(ω).在n个样本组 ...

  3. 深度学习入门-ANN神经网络参数最优化问题(SGD,Momentum,AdaGrad,RMSprop,Adam)

    这里写目录标题 1. 参数优化 1.1 随机梯度下降法(SGD) 1.2 Momentum 动量法 1.3 AdaGrad 1.4 RMSprop 1.5 Adam 1. 参数优化 本文总结一下ANN ...

  4. 花书+吴恩达深度学习(七)优化方法之基本算法(Momentum, Nesterov, AdaGrad, RMSProp, Adam)

    目录 0. 前言 1. 指数加权平均(exponentially weighted averages) 2. Momentum 动量 3. Nesterov 动量 4. AdaGrad 5. RMSP ...

  5. 深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结

    深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结 1. 引言 在深度学习中我们定义了损失函数以后,会采取各种各样的方法来降低损失函数的数值,从而使模 ...

  6. “随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam”

    "随机梯度下降.牛顿法.动量法.Nesterov.AdaGrad.RMSprop.Adam" 随机梯度下降法 牛顿法 动量法 Nesterov 学习率应该慢慢减小的. AdaGra ...

  7. 几种优化算法的读书笔记——梯度下降、牛顿法、拟牛顿法、随机梯度下降、AdaGrad、RMSProp、Adam及选择优化算法的建议

    文章目录 1 梯度下降 1.1 特点 1.2 思想 1.3 数学基础 1.4 具体算法 2 牛顿法和拟牛顿法 2.1 特点 2.2 牛顿法 2.2.1 数学基础 2.2.2 思想 2.2.3 具体算法 ...

  8. 【机器学习】P17 梯度下降 与 梯度下降优化算法(BGD 等 与 Adam Optimizer、AdaGrad、RMSProp)

    梯度下降与梯度下降算法 梯度下降 梯度下降算法 基础优化算法 批量梯度下降 BGD 随机梯度下降 SGD 小批量梯度下降 MBGD 动量梯度下降 MGD 基础优化算法上的改进和优化的算法 自适应梯度算 ...

  9. 优化算法、梯度下降、SGD、Momentum、Adagrad、Adam

    优化算法.梯度下降.随机梯度下降(SGD).动量法(Momentum).自适应法(Adagrad).动量自适应(Adam) 概述: 在机器学习算法实践中,优化总是重头戏,也是最考验功底的地方.深度学习 ...

  10. 深度学习梯度下降优化算法(AdaGrad、RMSProp、AdaDelta、Adam)(MXNet)

    在深度学习优化算法之动量法[公式推导](MXNet)中,动量法因为使用了指数加权移动平均,解决了自变量更新方向不一致的问题.动量法由于每个元素都使用了相同的学习率来做迭代,这也导致另外一个问题:如果x ...

最新文章

  1. MindSpore 高阶优化器
  2. Python基础学习!容器:列表,元组,字典与集合!(1)
  3. 世界坐标系空间,页面空间,设备空间,物理设备空间
  4. git idea 本地历史版本回滚_如何为IDEA项目创建GitHub存储库和本地Git存储库
  5. 使用单例模式加载properties文件
  6. (1-1)line-height的定义和行内框盒子模型
  7. Spring-Boot (四) 集成Spring Security
  8. 不得不赞! CV算法工程师的高效利器
  9. IoC容器Autofac(2) - 一个简单示例(附demo源码)
  10. go 是常驻内存吗_图解 Go 内存分配器
  11. vue项目中更新element-ui版本
  12. 租车信息系统数据库设计(2)
  13. 用AS3编写的具有将多段视频连起来播放的 flash视频播放器---003
  14. LeetCode 739. 每日温度
  15. vue读取服务器文件,vue读取txt文件
  16. Halcon学习笔记:3D_coordinates(3D标定)
  17. 电脑清空企业微信聊天记录
  18. 【积跬步以至千里】Markdownpad2报错: Html Rendering Error:An error occurred with the HTML rendering component。
  19. xshell 免费版
  20. H5 页面适配所有 iPhone 和安卓机型的六个技巧

热门文章

  1. IDL实现遥感影像融合(批量)TASK(三)
  2. PHP数据库统计时间戳按天分组输出数据
  3. android ui自动化 mock,移动端自动化多机并行测试-数据 mock 篇
  4. NLP学习02--卷积神经网络CNN
  5. python操作redis集群是连接池么_python使用连接池操作redis数据库
  6. php curl 返回cookie_分享新浪图床上传接口PHP源码
  7. 八十年代的计算机游戏,儿时小霸王的记忆 八十年代最伟大的二十款游戏
  8. svm分类代码_数据挖掘入门系列教程(九)之基于sklearn的SVM使用
  9. 服务器接收不到信号,信号(SIGTERM)不被Windows上的subprocess接收
  10. 网络推手团队_辛8工作室,被列入经营异常名单!工作室发声明解释!二子爷喊话辛8:你能强大过马云吗?达少太忙没有时间玩!团队断水断粮式野外生存!...