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 加上動量。理解了其中一個,你也就差不多理解了另一個。