分类目录:《机器学习中的数学》总目录
相关文章:
· 梯度下降法(Gradient Descent)
· 随机梯度下降(Stochastic Gradient Descent, SGD)
· 牛顿迭代法(Newton‘s Method)
· 拟牛顿法(Quasi-Newton Methods)
· Momentum(Gradient Descent with Momentum, GDM)
· Nesterov Momentum
· AdaGrad
· RMSProp
· Adam(Adaptive Moments)
· 共轭梯度法(Conjugate Gradient)
· 遗传算法(Genetic Algorithm)
· 粒子群算法
\qquad· 基础知识
\qquad· 带惯性权重的粒子群算法
\qquad· 改进的粒子群算法
· 模拟退火算法(Simulated Annealing,SA)


虽然随机梯度下降仍然是非常受欢迎的优化方法,但其学习过程有时会很慢。Momentum旨在加速学习,特别是处理高曲率、小但一致的梯度,或是带噪声的梯度。Momentum 积累了之前梯度指数级衰减的移动平均,并且继续沿该方向移动。Momentum的效果如下图所示所示:

Momentum的主要目的是解决两个问题:Hessian矩阵的病态条件和随机梯度的方差。我们通过此图说明Momentum如何克服这两个问题的第一个。等高线描绘了一个二次损失函数(具有病态条件的Hessian矩阵)。横跨轮廓的红色路径表示Momentum学习规则所遵循的路径,它使该函数最小化。在该路径的每个步骤画一个箭头,表示梯度下降将在该点采取的步骤。可以看到,一个病态条件的二次目标函数看起来像一个长而窄的山谷或具有陡峭边的峡谷。Momentum正确地纵向穿过峡谷,而普通的梯度步骤则会浪费时间在峡谷的窄轴上来回移动。

从形式上看,Momentum引入了变量vvv充当速度角色——它代表参数在参数空间移动的方向和速率。速度被设为负梯度的指数衰减平均。名称Momentum来自物理类比,根据牛顿运动定律,负梯度是移动参数空间中粒子的力。动量在物理学上定义为质量乘以速度。在Momentum中,我们假设是单位质量,因此速度向量vvv也可以看作粒子的动量。超参数α∈[0,1)\alpha\in[0,1)α∈[0,1)决定了之前梯度的贡献衰减得有多快。更新规则如下:
v=αv−ϵ∇θ(1m∑i=1mL(f(xi)))θ=θ+vv = \alpha v-\epsilon\nabla_\theta(\frac{1}{m}\sum_{i=1}^mL(f(x^{i})))\\ \theta=\theta+vv=αv−ϵ∇θ​(m1​i=1∑m​L(f(xi)))θ=θ+v

速度vvv累积了梯度元素∇θ(1m∑i=1mL(f(xi)))\nabla_\theta(\frac{1}{m}\sum_{i=1}^mL(f(x^{i})))∇θ​(m1​∑i=1m​L(f(xi)))。相对于ϵ\epsilonϵ, α\alphaα越大,之前梯度对现在方向的影响也越大。

Momentum(Gradient Descent with Momentum, GDM)第kkk次迭代
输入:学习率ϵ\epsilonϵ;初始化参数θ0\theta_0θ0​或第k−1k-1k−1次输出参数θk−1\theta_{k-1}θk−1​;动量参数α\alphaα;第k−1k-1k−1次输出速度vk−1v_{k-1}vk−1​
输出:第kkk次迭代后的参数θk\theta_kθk​
(1) while停止准则未满足\quad\text{停止准则未满足}停止准则未满足
(2) \quad从训练集中采包含mmm个样本{x(1),x(2),⋯,x(m)}\{x^{(1)}, x^{(2)}, \cdots, x^{(m)}\}{x(1),x(2),⋯,x(m)}的小批量,其中x(i)x^{(i)}x(i)对应目标为y(i)y^{(i)}y(i)
(3) \quad计算梯度估计:gk=1m∇θ∑iL(f(x(i);θ),y(i))g_k = \frac{1}{m}\nabla_\theta\sum_iL(f(x^{(i)}; \theta), y^{(i)})gk​=m1​∇θ​∑i​L(f(x(i);θ),y(i))
(4) vk=αvk−1−ϵgk\quad v_k = \alpha v_{k-1} - \epsilon g_kvk​=αvk−1​−ϵgk​
(5) θk=θk−1+v\quad\theta_k = \theta_{k-1}+ vθk​=θk−1​+v
(6) k=k+1\quad k = k + 1k=k+1
(7) return θk\theta_kθk​

之前,步长只是梯度范数乘以学习率。现在,步长取决于梯度序列的大小和排列。当许多连续的梯度指向相同的方向时,步长最大。如果Momentum总是观测到梯度ggg,那么它会在方向−g-g−g上不停加速,直到达到最终速度,其中步长大小为:
ϵ∣∣g∣∣1−α\frac{\epsilon||g||}{1-\alpha}1−αϵ∣∣g∣∣​

因此将Momentum的超参数视为11−α\frac{1}{1-\alpha}1−α1​有助于理解。例如,α=0.9\alpha=0.9α=0.9对应着最大速度10倍于梯度下降算法。在实践中,α\alphaα的一般取值为0.5、0.9和0.99。和学习率一样,α\alphaα也会随着时间不断调整。一般初始值是一个较小的值,随后会慢慢变大。随着时间推移调整α\alphaα没有收缩ϵ\epsilonϵ重要。根据上面所述,我们就可以看到,在梯度下降的过程中,来回震荡的方向就会由于历史梯度而被抵消,真正需要迅速下降的方向就会被加强

我们可以将Momentum视为模拟连续时间下牛顿动力学下的粒子。这种物理类比有助于直觉上理解Momentum和梯度下降算法是如何表现的。粒子在任意时间点的位置由θ(t)\theta(t)θ(t)给定。粒子会受到净力f(t)f(t)f(t)。该力会导致粒子加速:
f(t)=∂2∂t2θf(t)=\frac{\partial^2}{\partial t^2}\thetaf(t)=∂t2∂2​θ

与其将其视为位置的二阶微分方程,我们不如引入表示粒子在时间t处速度的变量v(t)v(t)v(t),将牛顿动力学重写为一阶微分方程:
v(t)=∂∂tθ(t)f(t)=∂∂tv(t)v(t)=\frac{\partial}{\partial t}\theta(t)\\ \quad\\ f(t)=\frac{\partial}{\partial t}v(t)v(t)=∂t∂​θ(t)f(t)=∂t∂​v(t)

由此,Momentum包括通过数值模拟求解微分方程。求解微分方程的一个简单数值方法是欧拉方法,通过在每个梯度方向上小且有限的步来简单模拟该等式定义的动力学。这解释了动量更新的基本形式。力正比于代价函数的负梯度−∇θJ(θ)-\nabla_\theta J(\theta)−∇θ​J(θ)。该力推动粒子沿着代价函数表面下坡的方向移动。梯度下降算法基于每个梯度简单地更新一步,而使用Momentum的牛顿方案则使用该力改变粒子的速度。我们可以将粒子视作在冰面上滑行的冰球。每当它沿着表面最陡的部分下降时,它会累积继续在该方向上滑行的速度,直到其开始向上滑动为止。另一个力也是必要的。如果代价函数的梯度是唯一的力,那么粒子可能永远不会停下来。想象一下,假设理想情况下冰面没有摩擦,一个冰球从山谷的一端下滑,上升到另一端,永远来回振荡。要解决这个问题,我们添加另一个正比于−v(t)-v(t)−v(t)的力。在物理术语中,此力对应于黏性阻力,就像粒子必须通过一个抵抗介质,如糖浆。这会导致粒子随着时间推移逐渐失去能量,最终收敛到局部极小点。

因为−v(t)-v(t)−v(t)在数学上的便利——速度的整数幂很容易处理。然而,其他物理系统具有基于速度的其他整数幂的其他类型的阻力。例如,颗粒通过空气时会受到正比于速度平方的湍流阻力,而颗粒沿着地面移动时会受到恒定大小的摩擦力。这些选择都不合适。湍流阻力正比于速度的平方,在速度很小时会很弱,不够强到使粒子停下来。非零值初始速度的粒子仅受到湍流阻力,会从初始位置永远地移动下去,和初始位置的距离大概正比于O(log⁡t)O(\log t)O(logt),因此我们必须使用速度较低幂次的力。如果幂次为零,相当于干摩擦,那么力太强了。当代价函数的梯度表示的力很小但非零时,由于摩擦导致的恒力会使得粒子在达到局部极小点之前就停下来。黏性阻力避免了这两个问题——它足够弱,可以使梯度引起的运动直到达到最小,但又足够强,使得坡度不够时可以阻止运动。

机器学习中的数学——Momentum(Gradient Descent with Momentum, GDM)相关推荐

  1. 机器学习中的数学——共轭梯度法(Conjugate Gradient)

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  2. 机器学习中的数学——拟牛顿法(Quasi-Newton Methods)

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  3. 机器学习中的数学——Adam(Adaptive Moments)

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  4. 机器学习中的数学——粒子群算法(Particle Swarm Optimization, PSO)(三):改进的粒子群算法

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  5. 机器学习中的数学——牛顿迭代法(Newton‘s Method)

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  6. 机器学习中的数学——模拟退火算法(Simulated Annealing,SA)

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  7. 机器学习中的数学——遗传算法(Genetic Algorithm)

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  8. 机器学习中的数学——RMSProp

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  9. 机器学习中的数学(二)--梯度下降法

    写在前面 <机器学习中的数学>系列主要列举了在机器学习中用到的较多的数学知识,包括微积分,线性代数,概率统计,信息论以及凸优化等等.本系列重在描述基本概念,并不在应用的方面的做深入的探讨, ...

  10. 机器学习中的数学原理——随机梯度下降法

    这个专栏主要是用来分享一下我在机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言!这一篇就更新一下<白话机器学习中的数学--随机梯度下降法>! ...

最新文章

  1. 大脑如何编码视觉信息?动态电极到图像(DETI) 映射技术也许有助于我们揭示其原理...
  2. linux mysql 客户端编码设置_mac和linux下mysql字符集设置问题
  3. java 之 模板模式(大话设计模式)
  4. CSS 使用@import url()与link href 的区别
  5. 关于保存状态的Fragment,setRetainInstance(true)
  6. Spring MVC 源码-初始化阶段
  7. Spring Boot中@ConfigurationProperties与@PropertySource的基本使用(读取指定的properties文件)
  8. 使用apt-get autoremove造成的系统无法开机
  9. 在Window10下基于Anaconda安装Tensorflow以及Keras并基于Spyder进行验证
  10. 人生真是圆的,从BASIC开始的程序人生,又回到了BASIC,难道。。。。。
  11. error: <class ‘xmlrpclib.Fault‘>, <Fault 92: “CANT_REREAD: The directory named as part of the path /
  12. 2021年茶艺师(中级)免费试题及茶艺师(中级)模拟试题
  13. C# C++ 互操作:C++向C#输出不定长数组或指针的实现
  14. cad打印本计算机未配置,CAD点打印为什么会警告提示无法使用此绘图仪配置
  15. Mac 格式化TF卡,获取原来的容量大小。
  16. 服务器系统的功能,操作系统服务器主要功能
  17. apache的ab压力测试介绍
  18. 729. 我的日程安排表 I
  19. MySQL日志双一配置分析实战
  20. 关系型数据库管理系统跟Hadoop比较

热门文章

  1. ffmpeg 分割和合并
  2. 【python教程入门学习】拒绝反爬虫 教你爬虫验证码
  3. pyd文件逆向(二)
  4. 02网络爬虫-使用 Beautiful Soup 解析网页
  5. Java千百问_01基本概念(015)_阻塞、非阻塞有什么区别
  6. 大数据的“多维度”与“时效性”
  7. Spring Cloud Eureka 全解 (1) - 总览篇
  8. [博弈论]JZOJ 3339 wyl8899和法法塔的游戏
  9. sql:mysql:数据库优化
  10. Linux内核之——等待队列wait queue