前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >优化算法之Gradient descent with momentum

优化算法之Gradient descent with momentum

作者头像
触摸壹缕阳光
发布2020-02-26 16:50:34
8670
发布2020-02-26 16:50:34
举报

人生逆境时,切记忍耐;人生顺境时,切记收敛;人生得意时,切记看谈;人生失意时,切记随缘;心情不好时,当需涵养;心情愉悦时,当需沉潜。

全文字数:1777字

阅读时间:8分钟

前言

本文首先找出普通梯度下降法中可能会出现的伪最优解,这些伪最优解虽然不是全局最优解,但是梯度值却为0,使得参数得不到更新而导致迭代算法停止。为了跳出这些伪最优点,引入物理中的动量,提出动量梯度下降法。

a

伪 最 优 解

momentum n. 势头;[物] 动量;动力;冲力 复数momentums或momenta

momentum有冲量、动量的意思。那么我们在什么情况下使用动量呢?将动量引入梯度下降法能够使模型在training_data上得到更好的结果。

▲三种不好的情况

我们选取损失函数,使用梯度下降算法来搜索使得损失函数最小的参数值。但是由于损失函数有时候会非常复杂,所以在很多时候我们求解到的并不是global minima(全局最小值)。

在上图的三个位置它们并不是全局最小值,但是它们的梯度值为0,梯度值为0在应用梯度下降法的时候其中的参数得不到更新操作,也就是会陷在这些不是全局最优解的地方,这显然不是我们想要的结果。

三个地方代表的三种伪最优解分别是:

  1. plateau(稳定的水平);
  2. saddle point(鞍点);
  3. local minima(局部最小点);但是不用太担心local minimal的问题,其实在复杂的神经网络上没有太多的local minimal,因为你要有一个local minimal都要是一个山谷的形状,我们假设出现谷底的概率是p,那因为我们的neural有非常非常多的参数,所以假设有1000参数,假设你每一个参数都是山谷的谷底,那么就是

。由下面的指数函数图像可以看出,你的neural越大,你的参数就越大,出现local minimal的概率就越低。所以local minimal在一个很大的neural里面并没有那么多local minimal。那走走你觉的是local minimal卡住的时候,他八成是global minimal或者很接近global minimal的。

▲指数函数的图像

b

动 量 梯 度 下 降 法

那有没有什么方法能够解决这种问题呢(通过现实生活中得到灵感)?

▲实际情况下

上面是一种物理现象,我们可以想象把一个小球放在这种现实的轨道上,这个小球并不会在上面提到的三个伪最优解(梯度为0)的地方停下来。因为在现实中事物都是有惯性的,也就是动量。如果我们想要解决上面的问题,很自然的就会想能不能也给我们的梯度下降法加上一个动量呢?让它在这些伪最优解的地方能够像现实生活中的小球那样冲出去。

接下来看一看普通的梯度下降法以及加了动量的梯度下降法的具体迭代路径:

▲common gradient descent

▲gradient descent with momentum

通过两个路径曲线的对比,很直观的感觉使用动量的路径曲线:

  1. 振荡的幅度变小了;
  2. 而且到达一定地点的时间变短了;

接下来再感受一下动量梯度下降法的其它优点:

▲momentum有可能跳出local minima

当然不是说使用了动量就一定可以达到最优解。下面说明几个点(红色代表梯度下降的方向,虚线绿色代表动量的方向,蓝色代表实际移动的方向):

  1. 对于第一个点来说。梯度下降的方向是往右的,但是由于我们设置的

,所以初始时并没有动量的作用,所以此时实际移动的方向就是梯度下降的方向。

  1. 对于第二个点来说。梯度下降的方向是向右的,但是此时球现在还有一个向右的动量,这个动量会使小球继续往右移动。
  2. 对于第三个点来说。由于此时是local minima,所以此时的梯度值为0。如果对于普通的梯度下降来说,他就会卡在这个地方。但是我们还有向右的一个动量值,所以使用动量的话,实际是会向右边继续走。
  3. 对于第四个点来说。此时我们的梯度下降的方向是向左的,我们可以假设如果此处的动量值 > 梯度的值。此时计算,在此处小球就会朝着动量的方向继续走,他甚至可以冲出山峰,跳出local minima。

当然这只是动量的其中一个好处:可以很轻松的跳出伪最优解。下面还有一个好处,使用动量梯度下降法(gradient descent with momentum),其速度会比传统的梯度下降算法快的多。我们不论是使用批梯度下降法还是使用小批量梯度下降法,寻找最优解的道路通常都是曲折的,也就是下面这种情况。

▲寻找最优解

我们期望让寻找最优解的曲线能够不那么振荡、波动,希望让他能够更加的平滑,在水平方向的速度更快。那怎么去做呢?可以借鉴优化算法之指数移动加权平均

使用能够使曲线不那么振荡技术,也就是指数移动加权平均。这就是我们动量技术的原理所在。下面正式的给出动量的公式:

上面说过使用动量好处是可以很轻松的跳出伪最优解,对于在速度上的解释,完全可以通过移动加权平均来进行解释。详细的可以看优化算法之指数移动加权平均

首发: 1. 触摸壹缕阳光~知乎

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI机器学习与深度学习算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档