RMSprop算法全称是root mean square prop算法,该算法可以加速梯度下降,回忆一下之前的例子,如果执行梯度下降,虽然横轴方向正在推进,但纵轴方向会有大幅度的摆动,假设纵轴代表参数b,横轴代表参数W,可能有
W
1
W_1
W1,
W
2
W_2
W2或者其它重要的参数,为了便于理解,称为b和W。所以如果想减缓b方向的学习,同时加快横轴方向的学习,RMSprop算法可以实现这一点。
在第t次迭代中,该算法会照常计算当下mini-batch的微分 d W dW dW和 d b db db。这里用新符号 S d w S_{dw} Sdw, S d w = β ∗ S d w + ( 1 − β ) ∗ ( d W ) 2 S_{dw}=\beta*S_{dw} +(1-\beta)*(dW)^2 Sdw=β∗Sdw+(1−β)∗(dW)2公式中平方的操作是针对这一整个符号的,这样做能够保留微分平方的加权平均数。同样有 S d b = β ∗ S d b + ( 1 − β ) ∗ ( d b ) 2 S_{db}=\beta * S_{db}+(1-\beta)*(db)^2 Sdb=β∗Sdb+(1−β)∗(db)2参数更新公式变为 W = W − α ∗ d W S d W W=W-\alpha * \frac{dW}{\sqrt{S_{dW}}} W=W−α∗SdWdW b = b − α ∗ d b S d b b=b-\alpha*\frac{db}{\sqrt{S_{db}}} b=b−α∗Sdbdb我们理解一下其中的原理,在横轴方向或者在例子中的W方向,我们希望学校速度快,而在垂直方向,也就是例子中的b方向,我们希望减缓纵轴上的摆动。所以有了 S d W S_{dW} SdW和 S d b S_{db} Sdb,我们希望 S d W S_{dW} SdW会相对较小,所以W参数更新要除以一个较小的数,而希望 S d b S_db Sdb较大,这样b更新会除以一个较大的数字,这样就可以减缓纵轴上的变化。
RMSprop的影响就是,纵轴方向上的摆动较小,而横轴方向继续推进。还有个影响就是,可以用更大学习率 α \alpha α加快学习。
在RMSprop中要确保算法不会除于0,如果 S d W S^{dW} SdW的平方根趋近于0怎么办?这样得到的答案非常大,为了确保数值稳定,在实际中操作的时候,要在分母加上一个很小很小的 ε \varepsilon ε, ε \varepsilon ε是多少没关系,KaTeX parse error: Expected 'EOF', got '&' at position 3: 10&̲{-8}是个不错的选择,这只是保证数值能够稳定一些。无论什么原因,都不会除以一个很小很小的数,所以RMSprop跟Momentum有很相似的一点,可以消除梯度下降中的摆动,并允许使用一个更大的学习率 a l p h a alpha alpha,从而加快算法学习速度。