有谁能告诉我,RMSProp方法和带有动量的梯度下降方法有什么明显的区别吗?两人都试图达到同样的效果。我读过的博客中有一篇指出了不同之处:"RMSProp和动量采用对比的方法。虽然动量加速了我们的搜索方向,但RMSProp阻碍了我们在振荡方向上的搜索。“
我不明白这句话。有人能详细说明两者之间的区别吗?
发布于 2020-06-22 06:33:17
优化器是随着小的修复/改进而发展起来的。所以,如果你按顺序阅读,你会有一个更好的理解。在这种情况下,RMSProp是对Adagrad的修正,也是对动量的改进。
让我们看看这个损失的表面,它就像一个山谷(想象一条河)

\hspace{5cm}图像源- http://d2l.ai/
动量-
让我们从红圈点开始。我们在X2方向上有一个很大的梯度,而在X1方向很少,全局极小值是朝向X1的。
在动量中,我们积累了明显指向X2的结式梯度。
因此,我们将以非常快的速度向河的另一边移动,而很少向X1移动。当我们过河并开始向上移动时,X2的反梯度将开始最小化聚集。记住,它是漏聚合的,最近的聚合有更多的发言权。在某一时刻,它会停止并逆转。
在整个过程中,我们在X1中有一个小的运动,在X2中有很多的振荡。
这是提交人的观点之一。
AdaGrad做了什么-
现在X2将有一个巨大的刹车,所以它不会以如此快的速度与动量过河。由于X1的梯度很小,它的尺度将是正的(如果< 1)或几乎不变的(if~ 1)。因此,在X1中的移动将是相同的,甚至更快。
这就是为什么作者说:"RMSProp阻碍了我们寻找振荡的方向。“
Adagrad的问题是,它聚集了所有过去梯度的缩放因子,这导致刹车变得更大的任何情况下,经过大量的迭代,即使它没有达到全局最优。
比方说,如果梯度很小,0.5,那么经过10次迭代,它也将开始除以2.5。如果它很大,例如10,那么经过10次迭代,它将开始除以1000。即使是这样大的梯度也会在随后的迭代中变小。
RMSProp改变了什么-它使聚合泄漏,即最近的一个将被考虑更多(就像动量对梯度的作用)。通过这种变化,聚合几乎是恒定的,或者至少不会像在Adagrad中那样快地死去。

\hspace{5cm}图像源- http://d2l.ai/
发布于 2020-06-21 16:23:29
RmsProp是一种自适应学习算法,而具有动量的SGD采用恒定的学习速率。有动量的SGD就像一个滚落在山上的球。如果梯度方向指向与前一个方向相同的方向,它将迈出很大的一步。但如果方向发生变化就会放慢速度。但它并没有改变它在训练中的学习速度。但Rmsprop是一种自适应学习算法。这意味着它使用梯度平方值的移动平均值来调整它的学习速度。随着移动平均值的增加,学习速度变得越来越小,使得算法能够收敛。
这里m是小批大小,r是移动平均值,g是梯度,θ是参数。
具有动量的
这里v是动量的速度。
(GoodFellow改编自深度学习)
https://datascience.stackexchange.com/questions/76408
复制相似问题