动量(Momentum)算法

动量(Momentum)的引入可以解决“峡谷”和“鞍点”问题的同时可以加速SGD

在高曲率、小幅但是方向一致的梯度的情况下,原始的 SGD 在下降过程中会发生来回震荡;或者在鞍点处因为质量小速度很快减为 0,导致无法越过平地。动量方法使轨迹更加稳定;同时因为在鞍点处由于动量的作用,更容易越过平地。

SDG

加入动量

参数更新公式

其中,动量算法的变量 v 速度,相关的超参数 α(0.9)。原始 SGD 每次更新的步长只是梯度乘以学习率;加入动量的SDG的步长也和历史梯度序列的大小和排列,即使存在许多连续的梯度指向相同的方向时,步长会被不断增大;

动量算法描述

动量算法会在负梯度方向上不断加速,直到达到最终速度。在实践中, α 的一般取 0.5, 0.9, 0.99,分别对应最大2 倍、10 倍、100 倍的步长,和学习率一样,α 也可以使用某种策略在训练时进行自适应调整;一般初始值是一个较小的值,随后会慢慢变大。自适应学习率的优化方法NAG 算法(Nesterov 动量)

NAG 把梯度计算放在对参数施加当前速度之后。这个“提前量”的设计让算法有了对前方环境“预判”的能力。Nesterov 动量可以解释为往标准动量方法中添加了一个修正因子。NAG 算法描述

自适应学习率的优化算法

AdaGrad

该算法的思想是独立地适应模型的每个参数:具有较大偏导的参数相应有一个较大的学习率,而具有小偏导的参数则对应一个较小的学习率具体来说,每个参数的学习率会缩放各参数反比于其历史梯度平方值总和的平方根AdaGrad 算法描述

全局学习率 并没有更新,而是每次应用时被缩放学习率是单调递减的,训练后期学习率过小会导致训练困难,甚至提前结束需要设置一个全局的初始学习率RMSProp

RMSProp 主要是为了解决 AdaGrad 方法中学习率过度衰减的问题:根据平方梯度的整个历史来收缩学习率,可能使得学习率在达到局部最小值之前就变得太小而难以继续训练;RMSProp 使用指数衰减平均(递归定义),使其能够在找到某个“凸”结构后快速收敛;此外,RMSProp 还加入了一个超参数 ρ 用于控制衰减速率。RMSProp 建议的初始值:全局学习率 =1e-3,衰减速率 ρ=0.9

RMSProp 算法描述

带 Nesterov 动量的 RMSProp

RMSProp 已被证明是一种有效且实用的深度神经网络优化算法。RMSProp 依然需要设置一个全局学习率,同时又多了一个超参数(推荐了默认值)。Adam

Adam 在 RMSProp 方法的基础上更进一步:除了加入历史梯度平方的指数衰减平均(r)外,还保留了历史梯度的指数衰减平均(s),相当于动量。Adam 行为就像一个带有摩擦力的小球,在误差面上倾向于平坦的极小值。Adam 算法描述

其中,s 和 r 初始化为 0;且 ρ1 和 ρ2 推荐的初始值都很接近 1(0.9 和 0.999)。这将导致在训练初期 s 和 r 都很小(偏向于 0),从而训练缓慢。Adam 可通过修正偏差来抵消这个倾向。

深度学习优化算法总结相关推荐

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

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

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

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

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

    2017年深度学习优化算法最新进展:如何改进SGD和Adam方法? 深度学习的基本目标,就是寻找一个泛化能力强的最小值,模型的快速性和可靠性也是一个加分点. 随机梯度下降(SGD)方法是1951年由R ...

  4. Pytorch框架的深度学习优化算法集(优化中的挑战)

    个人简介:CSDN百万访问量博主,普普通通男大学生,深度学习算法.医学图像处理专攻,偶尔也搞全栈开发,没事就写文章,you feel me? 博客地址:lixiang.blog.csdn.net Py ...

  5. 深度学习优化算法实现(Momentum, Adam)

    目录 Momentum 初始化 更新参数 Adam 初始化 更新参数 除了常见的梯度下降法外,还有几种比较通用的优化算法:表现都优于梯度下降法.本文只记录完成吴恩达深度学习作业时遇到的Momentum ...

  6. 深度学习优化算法的总结与梳理(从 SGD 到 AdamW 原理和代码解读)

    作者丨科技猛兽 转自丨极市平台 本文思想来自下面这篇大佬的文章: Juliuszh:一个框架看懂优化算法之异同 SGD/AdaGrad/Adam https://zhuanlan.zhihu.com/ ...

  7. 大梳理!深度学习优化算法:从 SGD 到 AdamW 原理和代码解读

    ‍ 作者丨知乎 科技猛兽  极市平台 编辑 https://zhuanlan.zhihu.com/p/391947979 本文思想来自下面这篇大佬的文章: Juliuszh:一个框架看懂优化算法之异同 ...

  8. 深度学习优化算法,Adam优缺点分析

    优化算法 首先我们来回顾一下各类优化算法. 深度学习优化算法经历了 SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -& ...

  9. 深度学习优化算法之动量法[公式推导](MXNet)

    我们在前面的文章中熟悉了梯度下降的各种形态,深度学习优化算法之(小批量)随机梯度下降(MXNet),也了解了梯度下降的原理,由每次的迭代,梯度下降都根据自变量的当前位置来更新自变量,做自我迭代.但是如 ...

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

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者|Juliuszh,https://zhuanlan.zhih ...

最新文章

  1. nginx的location配置root、alias用法和区别
  2. 【Socket网络编程】5.单播、多播(组播)、广播
  3. [Linux] nginx的try_files指令实现隐藏index.php的重写
  4. 递归;杨辉三角;正则表达式
  5. 主流的新闻APP 用的 推送SDK 记录
  6. idea+java+selenium自动化测试环境搭建
  7. github windows系统监控_windows快速制作U盘启动工具Rufus
  8. html语言怎么插入视频,如何在HTML5网页中插入 Video(视频)
  9. 拼图技巧,一家人的健康码行程码拼图怎么拼
  10. 内存溢出常见原因及解决方法
  11. win10计算机怎么新增用户,win10 如何添加管理员账户_win10 添加管理员账户方法-win7之家...
  12. 七大OSINT操作系统(开源网络情报)
  13. INT303 Big Data 个人笔记
  14. 如何使用轻量应用服务器搭建高颜值的YesPlayMusic网易云播放器
  15. Server-Sent Events 一种轻量级的Push方式
  16. [ABAP] VL09交货单过账冲销BAPI:WS_REVERSE_GOODS_ISSUE的BUG解决
  17. 学Linux云计算,怎么选择合适的机构?
  18. MATLAB轻松解决优化问题——线性规划、0-1整数规划、匈牙利算法
  19. [论文阅读]《Discovering Graph Functional Dependencies》阅读笔记
  20. 物理单位对应(如:电阻与电容相乘)

热门文章

  1. boost::weak_ptr相关的测试程序
  2. boost::phoenix模块使用 istreambuf_iterator 测试 lambda 函数对象
  3. boost::intrusive::derivation_value_traits用法的测试程序
  4. boost::function_types::is_nonmember_callable_builtin用法的测试程序
  5. boost::fibers模块实现multiple streams的测试程序
  6. GDCM:gdcm::ByteValue的测试程序
  7. 宏BOOST_TEST_TRAIT_TRUE的用法实例
  8. boost::container模块实现节点句柄的测试程序
  9. boost:验证Boost的BOOST_CLASS_REQUIRE宏
  10. boost::contract模块实现虚拟可选结果的测试程序