1. 程式人生 > >優化演算法:動量梯度下降+RMSprop+Adam演算法+學習率衰減

優化演算法:動量梯度下降+RMSprop+Adam演算法+學習率衰減

原作:http://www.cnblogs.com/cloud-ken/p/7728427.html

動量梯度下降法(Momentum)

  • 另一種成本函式優化演算法,優化速度一般快於標準的梯度下降演算法.
  • 基本思想:計算梯度的指數加權平均數並利用該梯度更新你的權重

  • 假設圖中是你的成本函式,你需要優化你的成本函式函式形象如圖所示.其中紅點所示就是你的最低點.使用常規的梯度下降方法會有擺動這種波動減緩了你訓練模型的速度,不利於使用較大的學習率,如果學習率使用過大則可能會偏離函式的範圍.為了避免擺動過大,你需要選擇較小的學習率.

2017-10-24_153618

  • 而是用Momentum梯度下降法,我們可以在縱向減小擺動的幅度在橫向上加快訓練的步長.

基本公式


2.7 RMSprop(均方根)

RMSprop (root mean square prop),也可以加速梯度下降.

1

  • 對於梯度下降,橫軸方向正在前進,但是縱軸會有大幅度的波動.我們現將橫軸代表引數W,縱軸代表引數b.橫軸也可以代表W[1],W[2],W[3]...W[n],但是為了便於理解,我們將其稱之為b和W


  •   w的在橫軸上變化變化率很小,所以dw的值十分小,所以Sdw也小,而b在縱軸上波動很大,所以斜率在b方向上特別大.所以這些微分中,db較大,dw較小.這樣W除數是一個較小的數,總體來說,W的變化很大.而b的除數是一個較大的數,這樣b的更新就會被減緩.縱向的變化相對平緩.
  • 注意:這裡的W和b標記只是為了方便展示,在實際中這是一個高維的空間,很有可能垂直方向上是W1,W2,W5..的合集而水平方向上是W3,W4,W6...的合集.
  • 實際使用中公式建議為:

    為了保證實際使用過程中分母不會為0.

  • 主要目的是為了減緩引數下降時的擺動,並允許你使用一個更大的學習率α,從而加快你的演算法速率.

2.8 Adam演算法

Adam 演算法基本原理是將Momentum和RMSprop結合在一起.

演算法原理

IMG_20171025_110513

超引數取值


2.9 學習率衰減(learning rate decay)

  • 加快學習演算法的一個辦法就是隨時間慢慢減少學習率,我們將之稱為學習率衰減(learning rate decay)

概括

  • 假設你要使用mini-batch梯度下降法,mini-batch數量不大,大概64或者128個樣本,但是在迭代過程中會有噪音,下降朝向這裡的最小值,但是不會精確的收斂,所以你的演算法最後在附近擺動.,並不會真正的收斂.因為你使用的是固定的α
    ,在不同的mini-batch中有雜音,致使其不能精確的收斂.

2017-10-25_125505

  • 但如果能慢慢減少學習率α的話,在初期的時候,你的學習率還比較大,能夠學習的很快,但是隨著α變小,你的步伐也會變慢變小.所以最後的曲線在最小值附近的一小塊區域裡擺動.所以慢慢減少α的本質在於在學習初期,你能承受較大的步伐, 但當開始收斂的時候,小一些的學習率能讓你的步伐小一些.

2017-10-25_125903

細節

IMG_20171025_131549

其他學習率衰減公式

指數衰減