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