Deep Learning 優化方法總結


Stochastic Gradient Descent (SGD)

SGD的參數

在使用隨機梯度下降(SGD)的學習方法時,一般來說有以下幾個可供調節的參數:

  • Learning Rate 學習率
  • Weight Decay 權值衰減
  • Momentum 動量
  • Learning Rate Decay 學習率衰減

再此之中只有第一的參數(Learning Rate)是必須的,其余部分都是為了提高自適應性的參數,也就是說后3個參數不需要時可以設為0。

Learning Rate

學習率決定了權值更新的速度,設置得太大會使結果越過最優值,太小會使下降速度過慢。僅靠人為干預調整參數需要不斷修改學習率,因此后面3種參數都是基於自適應的思路提出的解決方案。

wiwiηEwi

 

Weight decay

在實際運用中,為了避免模型的over-fitting,需要對cost function加入規范項,在SGD中我們加入ηλwi這一項來對cost function進行規范化。

wiwiηEwiηλwi


這個公式的基本思路是減小不重要的參數對結果的影響,而有用的權重則不會受到Weight decay的影響,這種思路與Dropout的思路原理上十分相似。

 

Link 1
Link 2

Learning Rate Decay

一種提高SGD尋優能力的方法,具體做法是每次迭代減小學習率的大小。

  • initial learning rate η=η0
  • learning rate decay ηd
  • At each iteration s:

 

η(s)=η01+sηd


在許多論文中,另一種比較常見的方法是迭代30-50次左右直接對學習率進行操作(η0.5η)

 

Momentum

靈感來自於牛頓第一定律,基本思路是為尋優加入了“慣性”的影響,這樣一來,當誤差曲面中存在平坦區SGD可以一更快的速度學習。

wimwiηEwi


注意:這里的表示方法並沒有統一的規定,這里只是其中一種

 

Link 1
Link 2
Link 3
Link 4

SGD優缺點

  • 實現簡單,當訓練樣本足夠多時優化速度非常快
  • 需要人為調整很多參數,比如學習率,收斂准則等

Averaged Stochastic Gradient Descent (ASGD)

在SGD的基礎上計算了權值的平均值。
$$\bar{w}t=\frac{1}{t-t_0}\sum^t{i=t_0+1} w_t$$

ASGD的參數

在SGD的基礎上增加參數t0

  • 學習率 η
  • 參數 t0

ASGD優缺點

  • 運算花費和second order stochastic gradient descent (2SGD)一樣小。
  • 比SGD的訓練速度更為緩慢。
  • t0的設置十分困難

Link 1

3. Conjugate Gradient(共軛梯度法)

介於最速下降法與牛頓法之間的一個方法,它僅僅需要利用一階導數的信息,克服了GD方法收斂慢的特點。

Link 1

Limited-memory Broyden-Fletcher-Goldfarb-Shanno (LBFGS) (一種擬牛頓算法)

L-BFGS算法比較適合在大規模的數值計算中,具備牛頓法收斂速度快的特點,但不需要牛頓法那樣存儲Hesse矩陣,因此節省了大量的空間以及計算資源。

Link 1
Link 2
Link 3

應用分析

不同的優化算法有不同的優缺點,適合不同的場合:

  • LBFGS算法在參數的維度比較低(一般指小於10000維)時的效果要比SGD(隨機梯度下降)和CG(共軛梯度下降)效果好,特別是帶有convolution的模型。
  • 針對高維的參數問題,CG的效果要比另2種好。也就是說一般情況下,SGD的效果要差一些,這種情況在使用GPU加速時情況一樣,即在GPU上使用LBFGS和CG時,優化速度明顯加快,而SGD算法優化速度提高很小。
  • 在單核處理器上,LBFGS的優勢主要是利用參數之間的2階近視特性來加速優化,而CG則得得益於參數之間的共軛信息,需要計算器Hessian矩陣。

Link 1


免責聲明!

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



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