原文链接:动手学深度学习pytorch版:7.6 RMSProp算法
github:https://github.com/ShusenTang/Dive-into-DL-PyTorch

原论文:
[1] Tieleman, T., & Hinton, G. (2012). Lecture 6.5-rmsprop: Divide the gradient by a running average of its recent magnitude. COURSERA: Neural networks for machine learning, 4(2), 26-31.

RMSProp算法

针对 AdaGrad 算法每个元素的学习率在迭代过程中一直在降低(或不变),在迭代后期由于学习率过小,可能较难找到一个有用的解。为解决这一问题,RMSProp 算法对 AdaGrad 算法做了一点小小的修改。

算法

不同于AdaGrad算法里状态变量 sts_tst​ 是截至时间步tt所有小批量随机梯度 gtg_tgt​ 按元素平方和,RMSProp算法将这些梯度按元素平方做指数加权移动平均。具体来说,给定超参数 0≤γ<10≤γ<10≤γ<1,RMSProp 算法在时间步 t>0t>0t>0 计算

st←γst−1+(1−γ)gt⊙gt{{\text{s}}_{t}}\leftarrow \gamma {{s}_{t-1}}+(1-\gamma ){{g}_{t}}\odot {{g}_{t}} st​←γst−1​+(1−γ)gt​⊙gt​

和AdaGrad算法一样,RMSProp算法将目标函数自变量中每个元素的学习率通过按元素运算重新调整,然后更新自变量

xt←xt−1−ηst+ε⊙gt{{x}_{t}}\leftarrow {{x}_{t-1}}-\frac{\eta }{\sqrt{{{s}_{t}}+\varepsilon }}\odot {{g}_{t}} xt​←xt−1​−st​+ε​η​⊙gt​

其中 ηηη 是学习率,ε\varepsilonε 是为了维持数值稳定性而添加的常数,如 10−610^{-6}10−6。因为 RMSProp 算法的状态变量 sts_tst​ 是对平方项 gt⊙gt{{g}_{t}}\odot {{g}_{t}}gt​⊙gt​ 的质数加权移动平均,所以可以看作是最近 1/(1−γ)1/(1-\gamma)1/(1−γ) 个时间步的小批量随机梯度平方项的加权平均。如此一来,自变量每个元素的学习率在迭代过程中就不再一直降低(或不变)。

例子

让我们先观察RMSProp算法对目标函数 f(x)=0.1x12+2x22f(x)=0.1x^2_1+2x^2_2f(x)=0.1x12​+2x22​ 中自变量的迭代轨迹。回忆在7.5节(AdaGrad算法)使用的学习率为0.4的AdaGrad算法,自变量在迭代后期的移动幅度较小。但在同样的学习率下,RMSProp算法可以更快逼近最优解。

%matplotlib inline
import math
import torch
import sys
sys.path.append("..")
import d2lzh_pytorch as d2l
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"def rmsprop_2d(x1, x2, s1, s2):g1, g2, eps = 0.2 * x1, 4 * x2, 1e-6s1 = gamma * s1 + (1 - gamma) * g1 ** 2s2 = gamma * s2 + (1 - gamma) * g2 ** 2x1 -= eta / math.sqrt(s1 + eps) * g1x2 -= eta / math.sqrt(s2 + eps) * g2return x1, x2, s1, s2def f_2d(x1, x2):return 0.1 * x1 ** 2 + 2 * x2 ** 2eta, gamma = 0.4, 0.9
d2l.show_trace_2d(f_2d, d2l.train_2d(rmsprop_2d))

输出:

epoch 20, x1 -0.010599, x2 0.000000

深度学习优化算法:RMSProp算法相关推荐

  1. 重磅 | 2017年深度学习优化算法研究亮点最新综述火热出炉

    翻译 | AI科技大本营(微信ID:rgznai100) 梯度下降算法是机器学习中使用非常广泛的优化算法,也是众多机器学习算法中最常用的优化方法.几乎当前每一个先进的(state-of-the-art ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. git_修改git历史提交记录
  2. UDP_CORK,TCP_CORK以及TCP_NODELAY
  3. MapReduce执行过程
  4. [雪峰磁针石博客]计算机视觉opcencv工具深度学习快速实战1人脸识别
  5. FreeMarker 一二事 - 静态模板的使用与生成
  6. boost::math模块非有限环回的基本测试
  7. Java网络编程二:Socket详解
  8. Redis凭啥这么快?只能做缓存?架构师道出了真相(颠覆你的认知)
  9. linux sed 写文件,使用sed对文件进行操作
  10. 我最喜欢的IntelliJ IDEA功能
  11. UNION,EXISTS,IN等在SQL语句中的灵活应用和场境的选择。
  12. python loop until_python3-asyncio 学习笔记 3 -- run_until_complete
  13. 测试面试题集-MySQL数据库灵魂拷问加强版
  14. c语言实现shellcode转换工具
  15. hadoop/hbase/hive单机扩增slave
  16. memcached 与 redis 的区别和具体应用场景
  17. 【毕业设计】基于单片机的指纹识别考勤系统 - 物联网 stm32
  18. 音视频系列--MediaProjection录屏生成H264和H265文件
  19. 坚果pro android版本号,锤子手机/坚果U3-Pro-SE/坚果Pro2特别版-LOS-安卓9.0.0-稳定版Stable3.0-来去电归属-农历等-本地化增强...
  20. 拉姆达表达式启动一个线程

热门文章

  1. css3中使用calc()计算宽高
  2. [啄木鸟]第20次CPUG会课
  3. Linux内核编译流程
  4. 这五件事发生的那一刻,即是ICO泡沫破裂的那一天
  5. 一篇文章带你搞定 Java 日志框架 slf4j
  6. 有关金书中正练九阴真经和逆练九阴真经的感悟
  7. 关于公司薪酬绩效管理体系的发展
  8. java取网页数据_Java抓取网页数据(原来的页面+Javascript返回数据)
  9. Java多线程(详细了解java多线程机制)
  10. 微信小程序上传图片组件,多选+单选+预览+删除