作者丨苏剑林

单位丨广州火焰信息科技有限公司

研究方向丨NLP,神经网络

个人主页丨kexue.fm

在从动力学角度看优化算法SGD:一些小启示一文中,我们提出 SGD 优化算法跟常微分方程(ODE)的数值解法其实是对应的,由此还可以很自然地分析 SGD 算法的收敛性质、动量加速的原理等等内容。

在这篇文章中,我们继续沿着这个思路,去理解优化算法中的自适应学习率算法。

RMSprop

首先,我们看一个非常经典的自适应学习率优化算法:RMSprop。RMSprop 虽然不是最早提出的自适应学习率的优化算法,但是它却是相当实用的一种,它是诸如 Adam 这样更综合的算法的基石,通过它我们可以观察自适应学习率的优化算法是怎么做的。

算法概览

一般的梯度下降是这样的:

很明显,这里的 γ 是一个超参数,便是学习率,它可能需要在不同阶段做不同的调整。而 RMSprop 则是:

算法分析

对比朴素的 SGD,可以发现 RMSprop 在对 θ 的更新中,将原来是标量的学习率 γ,换成了一个向量。

如果把这个向量也看成是学习率,那么 RMSprop 就是找到了一个方案,能够给参数的每个分量分配不同的学习率。

这个学习率的调节,是通过因子来实现的,而则是梯度平方的滑动平均。本质上来说,“滑动平均”平均只是让训练过程更加平稳一些,它不是起到调节作用的原因,起作用的主要部分是“梯度”,也就是说,可以用梯度大小来调节学习率。

自适应学习率

为什么用梯度大小可以来调节学习率呢?其实这个思想非常朴素。

极小值点和ODE

话不多说,简单起见,我们先从一个一维例子出发:假设我们要求 L(θ) 的一个极小值点,那么我们引入一个虚拟的时间参数 t,转化为 ODE:

不难判断,L(θ) 的一个极小值点就是这个方程的稳定的不动点,我们从任意的 θ0 出发,数值求解这个 ODE,可以期望它最终会收敛于这个不动点,从而也就得到了一个极小值点。

最简单的欧拉解法,就是用去近似,从而得到:

也就是:

这就是梯度下降法了,θt+γ 相当于 θn+1,而 θt 相当于 θn,也就是每步前进 γ 那么多。

变学习率思想

问题是,γ 选多少为好呢?当然,从“用去近似”这个角度来看,当然是 γ 越小越精确,但是 γ 越小,需要的迭代次数就越多,也就是说计算量就越大,所以越小越好是很理想,但是不现实。

所以,最恰当的方案是:每一步够用就好。可是我们怎么知道够用了没有?

因为我们是用去近似的,那么就必须分析近似程度:根据泰勒级数,我们有:

在我们这里有,那么我们有:

可以期望,当 γ 比较小的时候,误差项,也就是说,在一定条件下,γ∣L′(θt)∣ 本身就是误差项的度量,如果我们将 γ∣L′(θt)∣  控制在一定的范围内,那么误差也被控制住了。即:

其中 γ̃ 是一个常数,甚至只需要简单地 γ∣L′(θt)∣=γ̃(暂时忽略 L′(θt)=0 的可能性,先观察整体的核心思想),也就是:

这样我们就通过梯度来调节了学习率。

滑动平均处理

读者可能会诟病,把 γ=γ̃/∣L′(θt)∣ 代入原来的迭代结果,不就是:

整个梯度你只用了它的符号信息,这是不是太浪费了?过于平凡:也就是不管梯度大小如何,每次迭代 θ 都只是移动固定的长度。

注意,从解 ODE 的角度看,其实这并没有毛病,因为 ODE 的解是一条轨迹 (t,θ(t)),上面这样处理,虽然 θ 变得平凡了,但是 t 却变得不平凡了,也就是相当于 t,θ 的地位交换了,因此还是合理的。

只不过,如果关心的是优化问题,也就是求 L(θ) 的极小值点的话,那么上式确实有点平凡了,因为如果每次迭代 θ 都只是移动固定的长度,那就有点像网格搜索了,太低效。

所以,为了改善这种不平凡的情况,又为了保留用梯度调节学习率的特征,我们可以把梯度平均一下,结果就是:

这个 λ 是一个接近于 1 但是小于 1 的常数,这样的话 Gt 在一定范围内就比较稳定,同时在一定程度上保留了梯度 L′(θt) 本身的特性,所以用它来调节学习率算是一个比较“机智”的做法。为了避免 t+γ̃,t+γ 引起记号上的不适应,统一用 n,n+1 来表示下标,得到:

这就是开头说的 RMSprop 算法了。

高维情形分析

上面的讨论都是一维的情况,如果是多维情况,那怎么推广呢?

也许读者觉得很简单:把标量换成向量不就行了么?并没有这么简单,因为 (13) 推广到高维,至少有两种合理的选择:

或:

前者用梯度的总模长来累积,最终保持了学习率的标量性;后者将梯度的每个分量分别累积,这种情况下调节后的学习率就变成了一个向量,相当于给每个参数都分配不同的学习率。要是从严格理论分析的角度来,其实第一种做法更加严密,但是从实验效果来看,却是第二种更为有效。

我们平时所说的 RMSprop 算法,都是指后者 (15)。但是有很多喜欢纯 SGD 炼丹的朋友会诟病这种向量化的学习率实际上改变了梯度的方向,导致梯度不准,最终效果不够好。所以不喜欢向量化学习率的读者,不妨试验一下前者。

结论汇总

本文再次从 ODE 的角度分析了优化算法,这次是从误差控制的角度给出了一种自适应学习率算法(RMSprop)的理解。至于我们更常用的 Adam,则是 RMSprop 与动量加速的结合,这里就不赘述了。

将优化问题视为一个常微分方程的求解问题,这其实就是将优化问题变成了一个动力学问题,这样可以让我们从比较物理的视角去理解优化算法(哪怕只是直观而不严密的理解),甚至可以把一些 ODE 的理论结果拿过来用,后面笔者会试图再举一些这样的例子。

点击以下标题查看作者其他文章:

  • 变分自编码器VAE:原来是这么一回事 | 附开源代码

  • 再谈变分自编码器VAE:从贝叶斯观点出发

  • 变分自编码器VAE:这样做为什么能成?

  • 从变分编码、信息瓶颈到正态分布:论遗忘的重要性

  • 深度学习中的互信息:无监督提取特征

  • 全新视角:用变分推断统一理解生成模型

  • 细水长flow之NICE:流模型的基本概念与实现

  • 细水长flow之f-VAEs:Glow与VAEs的联姻

  • 深度学习中的Lipschitz约束:泛化与生成模型

#投 稿 通 道#

 让你的论文被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢? 答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

? 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site

• 所有文章配图,请单独在附件中发送

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

?

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

▽ 点击 | 阅读原文 | 查看作者博客

从动力学角度看优化算法:自适应学习率算法相关推荐

  1. 从动力学角度看优化算法:为什么学习率不宜过小?

    ©PaperWeekly 原创 · 作者|苏剑林 单位|追一科技 研究方向|NLP.神经网络 本文的主题是"为什么我们需要有限的学习率",所谓"有限",指的是不 ...

  2. 从动力学角度看优化算法:GAN的第三个阶段

    作者丨苏剑林 单位丨追一科技 研究方向丨NLP,神经网络 个人主页丨kexue.fm 在对 GAN 的学习和思考过程中,我发现我不仅学习到了一种有效的生成模型,而且它全面地促进了我对各种模型各方面的理 ...

  3. 从动力学角度看优化算法:一个更整体的视角

    作者丨苏剑林 单位丨广州火焰信息科技有限公司 研究方向丨NLP,神经网络 个人主页丨kexue.fm 最近把优化算法跟动力学结合起来思考得越来越起劲了,这是优化算法与动力学系列的第三篇,我有预感还会有 ...

  4. 从动力学角度看优化算法SGD:一些小启示

    作者丨苏剑林 单位丨广州火焰信息科技有限公司 研究方向丨NLP,神经网络 个人主页丨kexue.fm 在本文中,我们来关心优化算法 SGD(stochastic gradient descent,随机 ...

  5. 从动力学角度看优化算法:为什么SimSiam不退化?

    ©PaperWeekly 原创 · 作者|苏剑林 单位|追一科技 研究方向|NLP.神经网络 自 SimCLR [1] 以来,CV 中关于无监督特征学习的工作层出不穷,让人眼花缭乱.这些工作大多数都是 ...

  6. 【GAN优化】从动力学视角看GAN是一种什么感觉?

    今天讲述的内容是GAN与动力学,这是一个非常好玩.非常新鲜的视角.考虑到很多人微积分和线性代数等知识的涉猎不多,我将会对涉及的内容都做出基本说明,也并不会涉及过深入的东西,然后争取串成一个故事,扩展一 ...

  7. 自适应学习率算法.基于阿米霍步长准则的线性回溯搜索算法

    解决在梯度下降等算法中,学习率步长的问题. 二分精确搜索法把梯度转化为和学习率的函数,问题转化为找学习率的问题, 然后寻找梯度最低的时候的学习率是多少,在此过程中用了二分法查找学习率.是一种精确搜索方 ...

  8. 从梯度下降到 Adam!一文看懂各种神经网络优化算法

    来源丨量子位 编辑丨极市平台 导读 在调整模型更新权重和偏差参数的方式时,你是否考虑过哪种优化算法能使模型产生更好且更快的效果?应该用梯度下降,随机梯度下降,还是Adam方法?这篇文章介绍了不同优化算 ...

  9. 【深度学习】从梯度下降到 Adam!一文看懂各种神经网络优化算法

    王小新 编译自 Medium 量子位 出品 | 公众号 QbitAI,编辑:AI有道 在调整模型更新权重和偏差参数的方式时,你是否考虑过哪种优化算法能使模型产生更好且更快的效果?应该用梯度下降,随机梯 ...

最新文章

  1. python好学吗 老程序员-今天面试了一个34岁大龄程序员,有感而发
  2. JavaScript高级篇之Function对象
  3. Flink的滚动策略
  4. 互联网时代IT系统的变革-硬件系统定制化发展
  5. edge android apk下载地址,edge app下载-edge完整版v7.2.0 安卓版 - 极光下载站
  6. 判断double_深入解析单例模式之懒汉模式---Double-Check及volatile关键字
  7. 世界知名半导体ST、NXP、Microchip、TI、Renesas公司的MCU和MPU定位、性能及特点
  8. 思维导图的优缺点与绘制思维导图方法
  9. 三体归零者和盘龙鸿蒙,三体中的神级文明 归零者 到底是一种怎样的存在?
  10. [Oracle 11g r2(11.2.0.4.0)]集群守护进程gpnp介绍
  11. python爬取海量精美高清漂酿纯真可爱善良小姐姐壁纸(老司机福利)
  12. nrm 切换不同的源工具
  13. 自学方法测试【进行中】
  14. 2015百度竞价之如何增加有效点击率?
  15. cad能自学成才吗_我在6个月内成为一名自学成才的开发人员,所以你能
  16. 设计模式——单例模式(创建型模式)
  17. Unity开发VR——结合VRTK(二)
  18. 学习笔记 | mac下查看mysql的端口号
  19. matlab卡农解析
  20. 数学与哲学(张景中院士)

热门文章

  1. 常量、变量、数据类型
  2. [软件工程] 查找二维数组最大子数组的之和 郭莉莉李亚文
  3. Java中的参数传递 --Java
  4. 欢迎来怼---作业要求 20171015 beta冲刺贡献分分配规则
  5. 天气预报接口和城市代码
  6. 转载:SharePonit Host WCF 注意事项
  7. java定义dll文件位置,生成网站时如何设置固定的dll文件名?-Java架构师必看
  8. java swing点击按钮后输出结果展示_使用Eclipse编写第一个Java程序HelloWorld
  9. mvc if 显示html,asp.net mvc - 在MVC3 Razor中,如何在动作中获取渲染视图的html?
  10. python单例类命名_单例模式(java/python/c++)