李弘毅老師機器學習2021心得-5,強化Optimization的方式-2 Batch update and Momentum

Batch Update

之前有講過,如下,我們是一次取一batch來更新參數,之前也有講過其中一個好處是GPU不用一次拿這麼多資料。但現在我們來講講他的其他優缺點,以及是否真的有強化Optimization。

先來看一下當batch sisze大跟小的比較圖。

  1. 大Batch是一次看所有data,較長時間,但走很穩。
  2. 小Batch,是看很多次,每次較短時間,但noisy。

batch size in 時間方面

但考慮平行運算時,大Batch的更新時間不一定比較長,只要Batch沒有到超級無敵大,時間其實是差不多的。所以大Batch更新的劣勢,時間長,現在因為平行運算沒了。

GPU and batch size比較圖

所以事實上在一epoch,smaller batch花的時間會比較多,因為針對同一batch的運算時間因為平行運算差不多,所以剩下的就是batch的次數影響比較大了。

batch size in 準確度方面

但是,小Batch在training loss上,比較低。我們在同一Model上測試,所以不會是model bias的問題,所以是Optimization的問題。

可能的原因是,因為小Batch每一個Batch的曲線都不一樣,所以可能在一個batch卡在local minima,但在另外一個batch不是卡住,所以可以透過另外一個batch的gradient逃離local minima。

第二個重點,就是當training loss一樣時,small batch在testing data上的loss還是會比較低。這是因為overfitting的問題

同樣可能的原因,是因為有壞的local minima(窄峽谷)以及好的local minima(寬峽谷),而窄峽谷loss比較容易高(因為testing loss跟training loss的曲線差比較多),小batch比較不容易在窄峽谷

這個曲線為loss surface

直覺上,大的batch size容易走到峽谷,小的batch size容易走到平原

總結

batch size總結

batch size各有優缺點,而它變成一個hyperparameter問題。

Momentum,另外一個Optimization的優化

從物理我們想說,在做gradienr updata的時候,因為慣性的原因,不一定會卡在local minima。

所以這個Mometum就是透過加上上一次gradient變動了的向量,來代表這次更新的方向,簡單說就是這次更新的方向已經不只是gradient反方向,還加上,上次更新的gradient。

--

--

Kola (Yan-Hao Wang)
Kola (Yan-Hao Wang)

Written by Kola (Yan-Hao Wang)

在系統軟體跟資安領域學習的學生

No responses yet