Stochastic Gradient Descent收斂判斷及收斂速度的控制


  要判斷Stochastic Gradient Descent是否收斂,可以像Batch Gradient Descent一樣打印出iteration的次數和Cost的函數關系圖,然后判斷曲線是否呈現下降且區域某一個下限值的狀態。由於訓練樣本m值很大,而對於每個樣本,都會更新一次θ向量(權重向量),因此可以在每次更新θ向量前,計算當時狀況下的cost值,然后每1000次迭代后,計算一次average cost的值。然后打印出iteration和cost之間的關系。

1、不同曲線圖代表的含義及應對策略

可能會看到的曲線圖有如下幾種:

情況1

這樣的曲線說明算法已經收斂。

如果我們使用小一點的學習率α,那么可能最終會訓練到比較好的θ向量(紅色線)

但是小的學習率也意味着更長的訓練時間。

情況2

如果我們不是1000次迭代計算並打印一次,而是5000次迭代后才計算並打印一次。那么曲線可能會更加平滑一些(綠色線)。

情況3

如果我們得到的曲線(1000次迭代並打印)是波動很劇烈,並且沒有顯示任何下降趨勢,如下圖:

那么有兩種可能,一噪聲太劇烈而無法看出算法收斂的趨勢;二算法沒有收斂。

這種情況下,我們可以調整打印的步長(比如5000次迭代才計算並打印一次),那么可能會得到兩種不同的曲線(如下兩幅圖所示)。

如果得到得是類似這條紅色的曲線,那么說明算法已經收斂或已經表現出收斂的趨勢了。如果得到的是如下圖所示的綠色的線,說明算法沒有收斂。

情況4

還有一種情況,就是曲線不但沒有呈現下降的趨勢,反而出現了上升的趨勢,如下圖:

這說明學習率α設置得過大,需要調小學習率。

 

2、學習率的設置

當學習率比較小的時候,可以訓練出更優的權重向量。但是較小的學習率也意味着更長的訓練時間,而且如果是非凸問題則還有可能會陷入局部解中。那么,如果使用動態遞減的學習率(即在學習開始之初,學習率較大,然后根據迭代次數的增加,學習率逐漸減小)也許會好一些。這樣我們可以用一個式子來按照迭代次數調整學習率,例如:

常量1和常量2的目的是為了保證學習率在一個正常的范圍內(不至於當循環次數很高或很低時,學習率會變得過大或過小)。

通過調整學習率(手工或如上式自動調整),就可以控制算法收斂的速度。

 

Reference:

Andrew Ng Stochastic Gradient Descent Convergence (12 min)


免責聲明!

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



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