RMSprop 翻译成中文是“均方根传递”,它也能加速算法学习的速度。
仍然使用上篇文章中的图:
在此,我们假设 W 为水平方向的参数,b 为竖直方向的参数。从上图可以看出,更新 W 时的步伐过小,而更新 b 的步伐过大,这是 dW 过小和 db 过大造成的,如果我们可以增大 dW 和减小 db,就可以使上图蓝线更快地向右行进,而减少上下振动。下面就来实现这个目的。
回忆一下,在动量梯度下降算法中,算法描述如下:
第 t 次迭代:
在当前的 mini-batch 上计算 dW, db
RMSprop 的算法描述与其十分相似:
第 t 次迭代:
在当前的 mini-batch 上计算 dW, db
Note: 为了区分清楚,RMSprop 中使用指数滑动平均时用的是 S 而不是 V。
从 RMSprop 的算法描述可以看到,计算滑动指数平均时, 后面的项是 和 ,如此一来,假如 dW 本身较小(比如小于 1),平方后就会更小, 也会变小;如果 db 较大(比如大于 1),平方后就会更大, 也会更大。即我们让小的更小,大的更大,这么做是为了更新权重时做准备。
观察更新 W 的式子,我们发现 dW 下面有一个 ,由于在前面的操作中,我们把 变得很小,因此这里 dW 除以一个很小的数就会变大,相当于加大了更新 W 的步伐。对于 b,则相当于减小了在 b 方向上的步伐。最终的效果就是,水平方向前进更快,而竖直方向的振荡变小。
这便是 RMSprop 算法,当然在实践中我们不可能只有两个参数,但原理对于更多的参数也是一样的,即增大过小的导数,减小过大的导数。
顺便一提,RMSprop 翻译成中文是均方根传递。
现在我们介绍了动量梯度下降算法和 RMSprop,如果将二者结合起来会怎么样呢?下篇文章就来介绍一下 Adam 梯度下降算法。