RMSprop

知道了动量(Momentum)可以加快梯度下降,还有一个叫做RMSprop的算法,全称是root mean square prop算法,它也可以加速梯度下降,来看看它是如何运作的。

回忆一下之前的例子,如果执行梯度下降,虽然横轴方向正在推进,但纵轴方向会有大幅度摆动,为了分析这个例子,假设纵轴代表参数\(b\),横轴代表参数\(W\),可能有\(W_{1}\),\(W_{2}\)或者其它重要的参数,为了便于理解,被称为\(b\)和\(W\)。

所以,想减缓\(b\)方向的学习,即纵轴方向,同时加快,至少不是减缓横轴方向的学习,RMSprop算法可以实现这一点。

在第\(t\)次迭代中,该算法会照常计算当下mini-batch的微分\(dW\),\(db\),所以会保留这个指数加权平均数,用到新符号\(S_{dW}\),而不是\(v_{dW}\),因此\(S_{dW}= \beta S_{dW} + (1 -\beta) {dW}^{2}\),澄清一下,这个平方的操作是针对这一整个符号的,这样做能够保留微分平方的加权平均数,同样\(S_{db}= \beta S_{db} + (1 - \beta){db}^{2}\),再说一次,平方是针对整个符号的操作。

接着RMSprop会这样更新参数值,\(W:= W -a\frac{dW}{\sqrt{S_{dW}}}\),\(b:=b -\alpha\frac{db}{\sqrt{S_{db}}}\),来理解一下其原理。记得在横轴方向或者在例子中的\(W\)方向,希望学习速度快,而在垂直方向,也就是例子中的\(b\)方向,希望减缓纵轴上的摆动,所以有了\(S_{dW}\)和\(S_{db}\),希望\(S_{dW}\)会相对较小,所以要除以一个较小的数,而希望\(S_{db}\)又较大,所以这里要除以较大的数字,这样就可以减缓纵轴上的变化。看这些微分,垂直方向的要比水平方向的大得多,所以斜率在\(b\)方向特别大,所以这些微分中,\(db\)较大,\(dW\)较小,因为函数的倾斜程度,在纵轴上,也就是b方向上要大于在横轴上,也就是\(W\)方向上。\(db\)的平方较大,所以\(S_{db}\)也会较大,而相比之下,\(dW\)会小一些,亦或\(dW\)平方会小一些,因此\(S_{dW}\)会小一些,结果就是纵轴上的更新要被一个较大的数相除,就能消除摆动,而水平方向的更新则被较小的数相除。

RMSprop的影响就是的更新最后会变成这样(绿色线),纵轴方向上摆动较小,而横轴方向继续推进。还有个影响就是,可以用一个更大学习率\(a\),然后加快学习,而无须在纵轴上垂直方向偏离。

要说明一点,一直把纵轴和横轴方向分别称为\(b\)和\(W\),只是为了方便展示而已。实际中,会处于参数的高维度空间,所以需要消除摆动的垂直维度,需要消除摆动,实际上是参数\(W_1\),\(W_2\)等的合集,水平维度可能\(W_3\),\(W_4\)等等,因此把\(W\)和\(b\)分开只是方便说明。实际中\(dW\)是一个高维度的参数向量,\(db\)也是一个高维度参数向量,但是的直觉是,在要消除摆动的维度中,最终要计算一个更大的和值,这个平方和微分的加权平均值,所以最后去掉了那些有摆动的方向。所以这就是RMSprop,全称是均方根,因为将微分进行平方,然后最后使用平方根。

最后再就这个算法说一些细节的东西,然后再继续。接下来,会将RMSpropMomentum结合起来,在Momentum中采用超参数\(\beta\),为了避免混淆,现在不用\(\beta\),而采用超参数\(\beta_{2}\)以保证在MomentumRMSprop中采用同一超参数。要确保的算法不会除以0,如果\(S_{dW}\)的平方根趋近于0怎么办?得到的答案就非常大,为了确保数值稳定,在实际操练的时候,要在分母上加上一个很小很小的\(\varepsilon\),\(\varepsilon\)是多少没关系,\(10^{-8}\)是个不错的选择,这只是保证数值能稳定一些,无论什么原因,都不会除以一个很小很小的数。所以RMSpropMomentum有很相似的一点,可以消除梯度下降中的摆动,包括mini-batch梯度下降,并允许使用一个更大的学习率\(a\),从而加快的算法学习速度。

所以学会了如何运用RMSprop,这是给学习算法加速的另一方法。关于RMSprop的一个有趣的事是,它首次提出并不是在学术研究论文中,而是在多年前Jeff HintonCoursera的课程上。想Coursera并不是故意打算成为一个传播新兴的学术研究的平台,但是却达到了意想不到的效果。就是从Coursera课程开始,RMSprop开始被人们广为熟知,并且发展迅猛。

讲过了Momentum,讲了RMSprop,如果二者结合起来,会得到一个更好的优化算法

神经网络优化篇:详解RMSprop的更多相关文章

  1. PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载   中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...

  2. 走向DBA[MSSQL篇] 详解游标

    原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...

  3. Scala进阶之路-Scala函数篇详解

    Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...

  4. CentOS 7 下编译安装lnmp之PHP篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.PHP下载 官网 http ...

  5. CentOS 7 下编译安装lnmp之MySQL篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.MySQL下载 MySQL ...

  6. CentOS 7 下编译安装lnmp之nginx篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:CentOS Linux release 7.5.1804 (Core),ip地址 192.168.1.168   ...

  7. Canal:同步mysql增量数据工具,一篇详解核心知识点

    老刘是一名即将找工作的研二学生,写博客一方面是总结大数据开发的知识点,一方面是希望能够帮助伙伴让自学从此不求人.由于老刘是自学大数据开发,博客中肯定会存在一些不足,还希望大家能够批评指正,让我们一起进 ...

  8. java提高篇-----详解java的四舍五入与保留位

    转载:http://blog.csdn.net/chenssy/article/details/12719811 四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么 ...

  9. 组件--Fragment(碎片)第二篇详解

    感觉之前看的还是不清楚,重新再研究了一次 Fragment常用的三个类: android.app.Fragment 主要用于定义Fragment android.app.FragmentManager ...

  10. JavaScript基础篇详解

    全部的数据类型: 基本数据类型: undefined Number Boolean null String 复杂数据类型: object ①Undefined: >>>声明但未初始化 ...

随机推荐

  1. Windows 11 + Samsung 980 踩坑:在 LocalDB 15.0 实例启动期间出错: 无法启动 SQL Server 进程(附赠 查询指定日期范围内的前1000条SQL执行记录)

    Windows 11 + Samsung 980 踩坑:在 LocalDB 实例启动期间出错: 无法启动 SQL Server 进程 起因 用 Microsoft Visual Studio 2022 ...

  2. Acwing4244牛的比赛

    Acwing4244.牛的比赛 题目部分 N 头奶牛,编号 1∼N,一起参加比赛. 奶牛的战斗力两两不同. 这些奶牛之间已经进行了 M轮两两对决. 在对决中,战斗力高的奶牛一定会战胜战斗力低的奶牛. ...

  3. 数据驱动决策,Datainside引领可视化报告新时代

    数据驱动决策已经成为当今社会中的重要趋势,而Datainside作为一家数据可视化报告平台,正引领着可视化报告的新时代.下面是关于Datainside平台的详细描述. 数据集成与连接 Datainsi ...

  4. Centos8.4自定义离线安装Nginx

    一.简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用. 目前使用最多的就是负载均衡,这篇文章主要介绍了centos8 安装 nginx. Nginx是一种开源的高性能HTTP和反向 ...

  5. 使用 PyTorch 完全分片数据并行技术加速大模型训练

    本文,我们将了解如何基于 PyTorch 最新的 完全分片数据并行 (Fully Sharded Data Parallel,FSDP) 功能用 Accelerate 库来训练大模型. 动机 随着机器 ...

  6. AtCoder_abc327

    T1 ab 循环从s[0] 到s[n-2] 判断有无ab相邻 T2 A^A 两层循环枚举就可以了 由于aa会增长的很快,所以当a=16时aa就已经大于\(10^{18}\)了,一定不会T 就这么点数打 ...

  7. [ABC278G] Generalized Subtraction Game

    Problem Statement This is an interactive task (where your program interacts with the judge's program ...

  8. CompletableFuture进阶

    CompletableFuture进阶 1.异步任务的交互 异步任务交互指将异步任务获取结果的速度相比较,按一定的规则( 先到先用 )进行下一步处理. 1.1 applyToEither applyT ...

  9. Linux配置成代理服务器

    简介: 代理服务器(Proxy Server)是一种位于计算机网络中的中间服务器,它充当了客户端和目标服务器之间的中介,用于转发客户端请求并获取目标服务器的响应.代理服务器的主要功能包括以下几点: 什 ...

  10. CAP 8.0 版本发布通告 - CAP 7岁生日快乐!

    前言 今天,我们很高兴宣布 CAP 发布 8.0 版本正式版,从 2016 年 12 月 14 日CAP立项到 2023 年 12 月14 日发布 8.0 版本刚好满 7 年,祝 CAP 7 岁生日快 ...