【零基礎】神經網絡優化之動量梯度下降


一、序言

  動量梯度下降也是一種神經網絡的優化方法,我們知道在梯度下降的過程中,雖然損失的整體趨勢是越來越接近0,但過程往往是非常曲折的,如下圖所示:

 

   特別是在使用mini-batch后,由於單次參與訓練的圖片少了,這種“曲折”被放大了好幾倍。前面我們介紹過L2和dropout,它們要解決的也是“曲折”的問題,不過這種曲折指的是求得的W和b過於擬合訓練數據,導致求解曲線很曲折。動量梯度下降所解決的曲折指的是求得的dw、db偏離正常值導致成本時高時低,求得最優W和b的過程變慢。

二、指數加權平均

  動量梯度下降是相較於普通的梯度下降而言,這里所謂的動量其實說的是動量效應,最早是在經濟學領域提出的:

  “指股票的收益率有延續原來的運動方向的趨勢”

  其實換個名字叫“慣性效應”更好理解,即事物的發展趨勢是有慣性的。

  那應用到神經網絡的優化中,就是在計算dw、db時參考下之前的計算結果,具體操作起來的方法就叫“指數加權平均”,示例如下:

  dw0 = 1

  dw1 = 1.2,指數加權平均后:dw1 = 0.9*dw0 + 0.1*dw1 = 1.05

  dw2 = 1.5,指數加權平均后:dw2 = 0.9*dw1 + 0.1*dw2 = 1.095

  dw3 = 1.8,指數加權平均后:dw3 = 0.9*dw2 + 0.1*dw3 = 1.1655

  上面的示例就是指數加權平均,看起來似乎只是將dw變化的幅度減小了,下面我們模擬一次曲折

  dw4 = -1,指數加權平均后:dw4 = 0.9*dw3 + 0.1*dw4 = 0.94895

  在dw4的優化中,原本w應該是減去1的,但現在是加上了0.94895,即w還是沿着前面dw0至3的路徑在優化,有效地降低了dw4的影響。這種使用指數加權平均計算dw並更新w的方式就是動量梯度下降。

三、動量梯度下降的實現

  我們可以用一個公式來描述指數加權平均:

  vDW1 = beta*vDW0 + (1-beta)*dw1

  vDb1 = beta*vDb0 + (1-beta)*db1

  我們使用vDW和vDb來記錄指數加權平均值,beta值由我們設定,一般是0.9(這個數值代表了歷史數據對當前值的影響,可以自己調整看看效果不一定就一定要0.9)。計算出指數加權平均值后,我們再將這個值應用到梯度下降中即是所謂的“動量梯度下降”了。

  W = W - learning_rate*vDw

  b = b - learning_rate*vDb

四、回顧

  本節就簡單說了下動量梯度下降,可以對比看下應用前和應用后的效果:

應用前

應用后:

  可以看到使用動量梯度下降后,損失是有一點收窄的效果,雖然最終預測准確率不一定就邊得更好了。具體實現代碼請關注公眾號“零基礎愛學習”回復AI12獲取。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM