RMSprop

RMSprop 翻译成中文是“均方根传递”,它也能加速算法学习的速度。

仍然使用上篇文章中的图:

在此,我们假设 W 为水平方向的参数,b 为竖直方向的参数。从上图可以看出,更新 W 时的步伐过小,而更新 b 的步伐过大,这是 dW 过小和 db 过大造成的,如果我们可以增大 dW 和减小 db,就可以使上图蓝线更快地向右行进,而减少上下振动。下面就来实现这个目的。

回忆一下,在动量梯度下降算法中,算法描述如下:

第 t 次迭代:
        在当前的 mini-batch 上计算 dW, db
        vdW=β⋅vdW+(1−β)⋅dWv_{dW} = β · v_{dW} + (1 - β) · dWvdW=βvdW+(1β)dW
        vdb=β⋅vdb+(1−β)⋅dbv_{db} = β · v_{db} + (1 - β) · dbvdb=βvdb+(1β)db
        W:=W−α⋅vdWW := W - α · v_{dW}W:=WαvdW
        b:=b−α⋅vdbb := b - α · v_{db}b:=bαvdb

RMSprop 的算法描述与其十分相似:

第 t 次迭代:
        在当前的 mini-batch 上计算 dW, db
        sdW=β⋅sdW+(1−β)⋅dW2s_{dW} = β · s_{dW} + (1 - β) · dW^2sdW=βsdW+(1β)dW2
        sdb=β⋅sdb+(1−β)⋅db2s_{db} = β · s_{db} + (1 - β) · db^2sdb=βsdb+(1β)db2
        W:=W−α⋅dWsdWW := W - α · \cfrac{dW}{\sqrt{s_{dW}}}W:=WαsdWdW
        b:=b−α⋅dbsdbb := b - α · \cfrac{db}{\sqrt{s_{db}}}b:=bαsdbdb

Note: 为了区分清楚,RMSprop 中使用指数滑动平均时用的是 S 而不是 V。

从 RMSprop 的算法描述可以看到,计算滑动指数平均时,(1−β)(1 - \beta)(1β) 后面的项是 dW2dW^2dW2db2db^2db2,如此一来,假如 dW 本身较小(比如小于 1),平方后就会更小,sdWs_{dW}sdW 也会变小;如果 db 较大(比如大于 1),平方后就会更大,sdbs_{db}sdb 也会更大。即我们让小的更小,大的更大,这么做是为了更新权重时做准备。

观察更新 W 的式子,我们发现 dW 下面有一个 sdW\sqrt{s_{dW}}sdW,由于在前面的操作中,我们把 sdWs_{dW}sdW 变得很小,因此这里 dW 除以一个很小的数就会变大,相当于加大了更新 W 的步伐。对于 b,则相当于减小了在 b 方向上的步伐。最终的效果就是,水平方向前进更快,而竖直方向的振荡变小。

这便是 RMSprop 算法,当然在实践中我们不可能只有两个参数,但原理对于更多的参数也是一样的,即增大过小的导数,减小过大的导数。

顺便一提,RMSprop 翻译成中文是均方根传递。

现在我们介绍了动量梯度下降算法和 RMSprop,如果将二者结合起来会怎么样呢?下篇文章就来介绍一下 Adam 梯度下降算法。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值