动量的优点
虽然随机梯度下降仍然是非常受欢迎的优化方法,但其学习过程有时会很慢。动量方法 (Polyak, 1964) 旨在加速学习,特别是处理高曲率、小但一致的梯度,或是带噪声的梯度。 动量算法积累了之前梯度指数级衰减的移动平均,并且继续沿该方向移动。 动量的效果如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/d9731ec612ea76b82dbe07bba5efd2fb.png)
动量的主要目的是解决两个问题: Hessian 矩阵的病态条件和随机梯度的方差。我们通过此图说明动量如何克服这两个问题的第一个。等高线描绘了一个二次损失函数(具有病态条件的 Hessian 矩阵)。横跨轮廓的红色路径表示动量学习规则所遵循的路径,它使该函数最小化。我们在该路径的每个步骤画一个箭头,表示梯度下降将在该点采取的步骤。我们可以看到,一个病态条件的二次目标函数看起来像一个长而窄的山谷或具有陡峭边的峡谷。 动量正确地纵向穿过峡谷,而普通的梯度步骤则会浪费时间在峡谷的窄轴上来回移动。
从形式上看, 动量算法引入了变量 v 充当速度角色——它代表参数在参数空间移动的方向和速率。速度被设为负梯度的指数衰减平均。名称 动量(momentum)来自物理类比,根据牛顿运动定律,负梯度是移动参数空间中粒子的力。 动量在物理学上定义为质量乘以速度。在动量学习算法中,我们假设是单位质量,因此速度向量 v 也可以看作是粒子的动量。 超参数
α
α
∈
∈
[0; 1) 决定了之前梯度的贡献衰减得有多快。更新规则如下:
![](https://i-blog.csdnimg.cn/blog_migrate/37d892b373a52601981ecd2b64243bf0.png)
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/c9099298f72a1a0a69c355879964f799.png)
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/f4c382eb231d01983028d840b67aef8d.png)
牛顿动量
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/7a342227e29381336439179c76d516b4.png)