【優化演算法】一文搞懂RMSProp優化演算法
在前面我們講了AdaGrad演算法,見下:
憶臻:Deep Learning 最優化方法之AdaGrad而本文要介紹的RMSProp優化演算法是AdaGrad演算法的一種改進。
首先給出AdaGrad演算法:
再拋出原始的RMSProp演算法:
可以看出RMSProp優化演算法和AdaGrad演算法唯一的不同,就在於累積平方梯度的求法不同。RMSProp演算法不是像AdaGrad演算法那樣暴力直接的累加平方梯度,而是加了一個衰減係數來控制歷史信息的獲取多少。見下:
至於為什麼加了一個係數 之後,作用相當於加了一個衰減係數來控制歷史信息的獲取多少,可以參考我下面這篇文章:
憶臻:通俗理解指數加權平均好,下面先給出結論【來自好友YBB的總結】:
1.AdaGrad演算法的改進。鑒於神經網路都是非凸條件下的,RMSProp在非凸條件下結果更好,改變梯度累積為指數衰減的移動平均以丟棄遙遠的過去歷史。
2.經驗上,RMSProp被證明有效且實用的深度學習網路優化演算法。
相比於AdaGrad的歷史梯度:
RMSProp增加了一個衰減係數來控制歷史信息的獲取多少:
直觀理解作用
簡單來講,設置全局學習率之後,每次通過,全局學習率逐參數的除以經過衰減係數控制的歷史梯度平方和的平方根,使得每個參數的學習率不同
那麼它起到的作用是什麼呢?
起到的效果是在參數空間更為平緩的方向,會取得更大的進步(因為平緩,所以歷史梯度平方和較小,對應學習下降的幅度較小),並且能夠使得陡峭的方向變得平緩,從而加快訓練速度。
下面通過例子講解一下:
假設我們現在採用的優化演算法是最普通的梯度下降法mini-batch。它的移動方向如下面藍色所示:
假設我們現在就只有兩個參數w,b,我們從圖中可以看到在b方向走的比較陡峭,這影響了優化速度。
而我們採取AdaGrad演算法之後,我們在演算法中使用了累積平方梯度:
從上圖可以看出在b方向上的梯度g要大於在w方向上的梯度。
那麼在下次計算更新的時候,r是作為分母出現的,越大的反而更新越小,越小的值反而更新越大,那麼後面的更新則會像下面綠色線更新一樣,明顯就會好於藍色更新曲線。
在參數空間更為平緩的方向,會取得更大的進步(因為平緩,所以歷史梯度平方和較小,對應學習下降的幅度較小),並且能夠使得陡峭的方向變得平緩,從而加快訓練速度。
這就是RMSProp優化演算法的直觀好處。
參考:
http://blog.csdn.net/bvl10101111/article/details/72616378吳恩達老師slides
推薦閱讀:
TAG:機器學習 | 深度學習DeepLearning | 優化 |