RMSProp 和 Momentum 的区别?

数据挖掘 机器学习 深度学习 优化 梯度下降
2021-09-23 09:53:21

有人可以告诉我 RMSProp 和 Gradient Descent with Momentum 的方法之间的明显区别吗?两者都试图达到同样的效果。我读过的一篇博客将区别描述为:“RMSProp 和 Momentum 采用了对比方法。虽然动量加速了我们在最小值方向上的搜索,但 RMSProp 阻碍了我们在振荡方向上的搜索。”

我不明白这个说法。有人可以详细说明两者之间的区别吗?

2个回答

优化器在前一个的基础上进行了小的修复/改进。因此,如果您按顺序阅读,您将有更好的理解。在这种情况下,RMSProp 是对 Adagrad 的修复,是对 Momentum 的改进。


让我们看看这个像山谷一样的损失表面(想象一条河)

图片来源 - http://d2l.ai/
图片来源 - http://d2l.ai/

动量 -
让我们从红圈点开始。我们在 X2 方向有一个非常大的梯度,而在 X1 方向的梯度非常小,全局最小值朝向 X1。
在 Momentum 中,我们累积了结果梯度,这显然会更指向 X2。
结果,我们将非常快地向河的另一边移动,而向 X1 移动的速度非常慢。当我们过河并开始向上移动时,X2 的反向梯度将开始最小化聚合。请记住,这是泄漏聚合,即最近的聚合有更多发言权在某一时刻,它会停止并反转。
整个过程中,我们X1有一点点运动,X2有很多振荡,
这是作者的观点之一


AdaGrad 所做的-
-分别管理每个坐标的梯度
-在分母中添加了一个比例因子,该因子将起到制动的作用。这种缩放是基于过去梯度的平方。
现在 X2 会有一个大刹车,所以它不会有过河的动力那么快。由于 X1 有一个非常小的梯度,它的缩放将是正的(如果 < 1)或几乎恒定的(如果 ~ 1)。因此,X1 中的移动将相同或更快。
这就是为什么作者说:“RMSProp 阻碍了我们在振荡方向上的搜索”Adagrad 的

问题是它为缩放因子聚合了所有过去的梯度,即使它没有达到全局最优,在任何情况下,在经过大量迭代后,它都会导致刹车变大。
假设,如果 Gradient 小 0.5,那么在 10 次迭代后它也将开始除以 2.5。如果它很大,例如 10,那么它将在 10 次迭代后开始除以 1000。即使是这个大梯度,在后续的迭代中也会变小。


RMSProp 发生了什么变化- 它使聚合泄漏,即最近的聚合将被考虑更多(就像 Momentum 对 Gradient 所做的那样)。通过这种变化,聚合将几乎保持不变,或者至少不会像 Adagrad 那样快速消亡。

RMSProp
图片来源 - http://d2l.ai/

RmsProp 是一种自适应学习算法,而具有动量的 SGD 使用恒定的学习率。具有动量的 SGD 就像一个滚下山坡的球。如果梯度方向指向与先前相同的方向,则将采取较大的步骤。但是如果方向改变就会减速。但它不会在训练期间改变它的学习率。但是 Rmsprop 是一种自适应学习算法。这意味着它使用梯度平方值的移动平均值来调整学习率。随着移动平均值的增加,学习率变得越来越小,从而使算法收敛。

RMSProp:

g=1m1mL(y^,y)

r=δr+(1δ)gg

Δθ=ϵr+δg

θ=θ+δθ

这里 m 是 minibatch 大小,r 是移动平均值,g 是梯度,theta 是参数。

动量新元:

g=1m1mL(y^,y)

v=αvϵg

θ=θ+v

这里 v 是动量的速度。

(改编自 GoodFellow 的深度学习)