人生逆境时,切记忍耐;人生顺境时,切记收敛;人生得意时,切记看谈;人生失意时,切记随缘;心情不好时,当需涵养;心情愉悦时,当需沉潜。
全文字数:1777字
阅读时间:8分钟
前言
本文首先找出普通梯度下降法中可能会出现的伪最优解,这些伪最优解虽然不是全局最优解,但是梯度值却为0,使得参数得不到更新而导致迭代算法停止。为了跳出这些伪最优点,引入物理中的动量,提出动量梯度下降法。
a
伪 最 优 解
momentum n. 势头;[物] 动量;动力;冲力 复数momentums或momenta
momentum有冲量、动量的意思。那么我们在什么情况下使用动量呢?将动量引入梯度下降法能够使模型在training_data上得到更好的结果。
▲三种不好的情况
我们选取损失函数,使用梯度下降算法来搜索使得损失函数最小的参数值。但是由于损失函数有时候会非常复杂,所以在很多时候我们求解到的并不是global minima(全局最小值)。
在上图的三个位置它们并不是全局最小值,但是它们的梯度值为0,梯度值为0在应用梯度下降法的时候其中的参数得不到更新操作,也就是会陷在这些不是全局最优解的地方,这显然不是我们想要的结果。
三个地方代表的三种伪最优解分别是:
。由下面的指数函数图像可以看出,你的neural越大,你的参数就越大,出现local minimal的概率就越低。所以local minimal在一个很大的neural里面并没有那么多local minimal。那走走你觉的是local minimal卡住的时候,他八成是global minimal或者很接近global minimal的。
▲指数函数的图像
b
动 量 梯 度 下 降 法
那有没有什么方法能够解决这种问题呢(通过现实生活中得到灵感)?
▲实际情况下
上面是一种物理现象,我们可以想象把一个小球放在这种现实的轨道上,这个小球并不会在上面提到的三个伪最优解(梯度为0)的地方停下来。因为在现实中事物都是有惯性的,也就是动量。如果我们想要解决上面的问题,很自然的就会想能不能也给我们的梯度下降法加上一个动量呢?让它在这些伪最优解的地方能够像现实生活中的小球那样冲出去。
接下来看一看普通的梯度下降法以及加了动量的梯度下降法的具体迭代路径:
▲common gradient descent
▲gradient descent with momentum
通过两个路径曲线的对比,很直观的感觉使用动量的路径曲线:
接下来再感受一下动量梯度下降法的其它优点:
▲momentum有可能跳出local minima
当然不是说使用了动量就一定可以达到最优解。下面说明几个点(红色代表梯度下降的方向,虚线绿色代表动量的方向,蓝色代表实际移动的方向):
,所以初始时并没有动量的作用,所以此时实际移动的方向就是梯度下降的方向。
当然这只是动量的其中一个好处:可以很轻松的跳出伪最优解。下面还有一个好处,使用动量梯度下降法(gradient descent with momentum),其速度会比传统的梯度下降算法快的多。我们不论是使用批梯度下降法还是使用小批量梯度下降法,寻找最优解的道路通常都是曲折的,也就是下面这种情况。
▲寻找最优解
我们期望让寻找最优解的曲线能够不那么振荡、波动,希望让他能够更加的平滑,在水平方向的速度更快。那怎么去做呢?可以借鉴优化算法之指数移动加权平均。
使用能够使曲线不那么振荡技术,也就是指数移动加权平均。这就是我们动量技术的原理所在。下面正式的给出动量的公式:
上面说过使用动量好处是可以很轻松的跳出伪最优解,对于在速度上的解释,完全可以通过移动加权平均来进行解释。详细的可以看优化算法之指数移动加权平均。
首发: 1. 触摸壹缕阳光~知乎