RMSprop(均方根传播)
/ R-M-S-prop /
RMSprop 是一种优化器,它依据某个权重近来的梯度有多「湍急」,给每个权重配一个专属的步长。直觉是:如果某个方向一直在剧烈摆动,就在那里小步谨慎地走;如果它一直平静而稳定,你就可以放心走快些。这就像开车——遇到颠簸弯曲的路段就减速,到了平直的直道就加速。
从技术上说,RMSprop 为每个权重保留一份梯度平方的滑动平均——一个衡量近来幅度的量——再把每个权重的步子除以这个平均值的平方根(「均方根」之名由此而来)。梯度一向很大的方向被抑制;梯度很小的方向被放大。关键在于,这是一份「衰减」的平均,给近来的步子比给陈年的步子更高的权重,于是当训练走进地形的新区域时,步长会不断重新适应。
RMSprop 被提出(著名的是出现在一张讲课幻灯片里,而非一篇论文中),是为了修补其前身 AdaGrad 的一个缺陷:AdaGrad 的步长会单调地缩向零,可能让训练停滞。RMSprop 改用衰减平均,而非一个只增不减的累加和,从而在漫长的训练里让步长始终「活着」。它在带噪声、非平稳的问题以及循环网络上表现良好,而它的核心念头——那个梯度平方的分母——也活在了 Adam 之中,Adam 不过是在它之上又加了动量。
某个权重近来的梯度:8、−7、9、−8(又大又摆)。另一个的:0.2、0.3、0.2、0.3(又小又稳)。RMSprop 把每个步子都除以这些值的均方根,于是那个乱摆的权重得到一个小步子(除以约8),而那个平稳的权重得到相对更大的步子(除以约0.25)——自动把那个剧烈波动的方向安抚下来。
又大又跳的梯度得到小步子;平静的得到大步子。
RMSprop 本质上就是去掉了动量项的 Adam——或者说,Adam 就是 RMSprop 加上动量。理解了其中一个,你也就差不多理解了另一个。