RMSprop、動量梯度下降法與Adam優化 [Andrew Ng 深度學習筆記]

如圖:

對於藍色的情況,由於梯度下降時來回擺動,導致收斂很慢

若增大學習率,結果可能偏離函數的範圍,如紫色的情況。爲了避免擺動過大,就必須使用較小的學習率,進一步降低了收斂速度

我們希望的是在縱軸上減緩學習,在橫軸上加快學習,如紅色的情況。有多種方法可以實現

動量梯度下降法(Momentum

此處用了指數加權平均的更新方法

因爲縱軸有許多擺動,在求平均的時候都可以被抵消,最後幾乎等於0,所以縱軸的學習被減緩了

在橫軸,所有微分都指向一個方向,所以求平均之後幾乎沒有變化

所以動量梯度下降法就可以解決上述問題

RMSprop

on iteration t :
      compute  dw, db on current Mini-patch  (和動量梯度下降法一樣,每次先算出dw、db)

      Sdw=\beta _{2}Sdw+(1-\beta_{2})dw^{2}

     Sdb=\beta _{2}Sdb+(1-\beta_{2})db^{2}

     w=w-\alpha \frac{dw}{\sqrt{Sdw+\varepsilon }}

     b=b-\alpha \frac{db}{\sqrt{Sdb+\varepsilon }}

當dw很大時,Sdw就會很大,所以更新時dw就會除以同樣很大的 \sqrt{Sdw+\varepsilon } ,會有抑制作用

當dw很小時,更新時它就會除以同樣很小的 \sqrt{Sdw+\varepsilon } ,會有加速作用

所以RMSprop也可以解決上述問題

Adam優化算法

把上述兩個方法結合起來,就是Adam優化算法。公式爲:

on iteration t :
      compute  dw, db on current Mini-patch

      Vdw=\beta _{1}Vdw+(1-\beta_{1})dw\: ,\: Vdb=\beta _{1}Vdb+(1-\beta_{1})db

      Sdw=\beta _{2}Sdw+(1-\beta_{2})dw^{2}\: ,\: Sdb=\beta _{2}Sdb+(1-\beta_{2})db^{2}

      V_{dw}^{corrected}=\frac{V_{dw}}{1-\beta^{t}_{1}}\: ,\:V_{db}^{corrected}=\frac{V_{db}}{1-\beta^{t}_{1}}

      S_{dw}^{corrected}=\frac{S_{dw}}{1-\beta^{t}_{2}}\: ,\:S_{db}^{corrected}=\frac{S_{db}}{1-\beta^{t}_{2}}

      w=w-\alpha \frac{V_{dw}^{corrected}}{\sqrt{S_{dw}^{corrected}+\varepsilon }}

      b=b-\alpha \frac{V_{db}^{corrected}}{\sqrt{S_{db}^{corrected}+\varepsilon }}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章