2-6 RMSprop

RMSprop

知道了动量( Momentum)可以加快梯度下降,还有一个叫做 RMSprop 的算法,全称是 root mean square prop 算法,它也可以加速梯度下降:

如果你执行梯度下降,虽然横轴方向正在推进,但纵轴方向会有大幅度摆动,为了分析这个例子,假设纵轴代表参数b,横轴代表参数W,可能有${W_1}$,${W_2}$或者其它重要的参数,为了便于理解,被称为b和W。

所以,你想减缓b方向的学习,即纵轴方向,同时加快,至少不是减缓横轴方向的学习,RMSprop 算法可以实现这一点。

$Sdw = \beta Sdw{\rm{ + (1 - }}\beta {\rm{)d}}{{\rm{W}}^{\rm{2}}}$

$Sdb = \beta Sdb{\rm{ + (1 - }}\beta {\rm{)d}}{{\rm{b}}^{\rm{2}}}$

这里的平方的操作是针对整个符号的。

接着 RMSprop 会这样更新参数值:

$W: = W - \alpha \frac{{{\rm{dW}}}}{{\sqrt {Sdw} }}$

$b: = b - \alpha \frac{{{\rm{db}}}}{{\sqrt {Sdb} }}$

我们来理解一下其原理:

记得在横轴方向或者在例子中的W方向,我们希望学习速度快,而在垂直方向,也就是例子中的b方向,我们希望减缓纵轴上的摆动,所以有了$Sdw$,$Sdb$,我们希望$Sdw$会相对较小,所以我们要除以一个较小的数,而希望$Sdb$又较大,所以这里我们要除以较大的数字,这样就可以减缓纵轴上的变化。

从图中可以看出这些微分,垂直方向的要比水平方向的大得多,所以斜率在b方向特别大,所以这些微分中db较大,db的平方较大,所以$Sdb$也会较大,而相比之下,dW会小一些,亦或dW方会小一些,因此$Sdw$会小一些,结果就是纵轴上的更新要被一个较大的数相除,就能消除摆动,而水平方向的更新则被较小的数相除。

使用RMSprop 的影响就是你的更新最后会变成这样(绿色线),纵轴方向上摆动较小,而横轴方向继续推进。还有个影响就是,你可以用一个更大学习率a,然后加快学习,而无须在纵轴上垂直方向偏离。

要说明一点,我一直把纵轴和横轴方向分别称为b和W,只是为了方便展示而已。实际中,你会处于参数的高维度空间,所以需要消除摆动的垂直维度,你需要消除摆动,实际上是参数${W_1}$,${W_2}$等的合集,水平维度可能${W_3}$,${W_4}$等等,因此把b和W分开只是方便说明。实际中$dW$也是一个高维度参数向量,但是你的直觉是,在你要消除摆动的维度中,最终你要计算一个更大的和值,这个平方和微分的加权平均值,所以你最后去掉了那些有摆动的方向。所以这就是 RMSprop,全称是均方根,因为你将微分进行平方,然后最后使用平方根。

posted @ 2018-09-16 16:11  刘-皇叔  阅读(2028)  评论(0编辑  收藏  举报