How does mini-batch size affect the performance of SGD?

一、概述

??本文記錄了自己探究batchSize, lr以及Performance之間關系這一問題時做的筆記,組織比較無序。第二、三部分為當時的問題和解答。第四部分為兩篇論文的筆記。最后一部分給出了探究結果的其實——訓練神經網絡時和batchSize以及lr相關的trick。

??順便說下,本文一些重要的參考文獻是Quora, reddit等國外高質量論壇的帖子。如果你需要訪問,務必小心,因為有一定幾率接到“擅自建立,使用非法定信道進行國際聯網”的通知~

二、問題陳列:

  1. batchSize越小,訓練過程的隨機性(不確定性)越高,即訓練過程中梯度包含的噪聲更多,或者說minibatch的梯度具有越高的方差,進而得出結論,Small batchSize方法具有更好的“探索性”。上述說法只是直覺層面,有無理論證明?
  2. 為什么batchSize越大,網絡收斂越慢?在一定范圍內batchSize越大,GPU的并行效率不是越高嗎?batchSize和學習率的關系?
  3. 為什么batchSize大到一定程度以后,validation performance大幅下降?
  4. 應該如何理解optimization過程中的minimizer?


三、答案:

【更新】:下面的答案有幾處不嚴格的地方:
參考Ian本人的答案:
https://www.quora.com/In-deep-learning-why-dont-we-use-the-whole-training-set-to-compute-the-gradient

  1. 答案2中說:“100-batch和10000-batch相比,前者的梯度方差是后者的100倍”。這個應該是不對的。不過計算量確實是線性關系。見下面截圖:

    Update 1. Ian回答截圖 1

  2. 并不是訓練時使用整個訓練集(即batchSGD)就能獲得“clean gradient”。真實的梯度應該是在所有可能的樣本點上計算出的梯度,在數據生成分布上的加權和。使用整個訓練集只是相當于用一個很大的minibatch size。見下圖:


    Update 2. Ian回答截圖


嘗試解答:

  1. 答:【嚴格證明有待補充】我們在使用mini-batch SGD訓練NN時,實際上做的事情,是通過mini-batch上的梯度來估計整個訓練集上的梯度。顯然,使用1個樣本(即SGD)相比使用100個樣本的batch,梯度的噪聲要大得多。也就是說,當使用小batch SGD時,我們并不總是沿著loss下降最快(即梯度方向)的方向移動的。相反,如果使用整個數據集作為訓練集(batch SGD),那么我們訓練時的梯度是非常"clean"的,這樣會導致一個問題:優化過程將卡在第一個local minima處。因為此時梯度值為0
  1. 答:考慮我們有個包含100, 0000個訓練樣本的數據集。我們考慮兩種方法:batchSize為100和10000的算法來訓練神經網絡,假設使用相同的step size(即學習率)。大體上,梯度計算的復雜度和batchSize成線性關系。故計算10000-batch的梯度的時間,大約為計算100-batch梯度時間的100倍。
    這意味著在10000-batch更新參數一步的時間(one step update),100-batch方法可以更新100步參數。由于mini-batch SGD算法參數更新不一定沿著梯度方向(即1中所答),這100個更新steps的“成效”肯定達不到10000-batch那一步更新的100倍。但是至少也能達到10倍以上的“成效”。這就是為什么mini-batch SGD算法要比batch SGD節省大量時間。
    注意,剛才我們的假設是100-batch和10000-batch使用相同的學習率。現在我們考慮另一個問題:batchSize和學習率的關系。由于large-batch方法訓練時梯度的方差更小,或者說由于loss下降的方向更嚴格地沿著梯度方向,我們可以選擇更大的batchSize。具體來說,100-batch和10000-batch相比,前者的梯度方差是后者的100倍。理論上這使得我們可以用100倍的學習率來訓練,這樣的話,理論上我們用10000-batch更新1步的速度其實和100-batch更新100步的速度相同。如果是這樣的話,那將是非常理想的。因為大的batchSize會更大程度利用GPU的并行運算能力,極大的提高訓練效率。然而事實上,盡管我們可以對larger batch使用更大的學習率,但是這個學習率是有一個上限的。"the step-size cannot exceed an algorithmic, problem-dependent upper bound which depends on the smoothness of the objective function (typically 1/L, where L is the Lipschitz constant of the "full" gradients)"
  1. 答:因為"large-batch methods tend to converge to sharp minimizers of the training and testing functions,而sharp minima lead to poorer generalization"。至于為什么sharp minima導致泛化更差?見Fig. 1。

  2. 答:就是loss surface上不同的局部極小值點。有的極小值點附近比較陡,有的比較平坦。參考論文:Visualizing the Loss Landscape of Nural Network中摘要第一句話:
    Neural network training relies on our ability to find “good” minimizers of highly non-convex loss functions.

四、論文筆記

篇1:On Large-Batch Training for DL——Gerneralization Gap and Sharp Minima

  • 現象:較大的batchSize(LB methods)會導致驗證集表現和訓練集表現出現明顯鴻溝(訓練集表現沒有影響)。

  • 推測:①LB導致模型過擬合②LB方法容易陷入鞍點③LB缺乏SB的“探索性質”(即SB的引入的隨機性使得優化過程有一定幾率跳過local minima)④SB和LB方法會收斂到具有不同泛華性質的不同的minimizer。
    本文可以證明,后兩個推斷是合理的。

  • 名詞解釋:
    minimizerminimaminimizer本質是function,而minima是minimizer函數值最低點對應的X(parameters)取值。一個在鄰域內變化很小的函數被稱為flat minimizer,反之則是sharp minimizerminimizer和minima這里應該是相同的意思,指局部極小值點。為什么minimizer sharp了泛化就差?解釋如下:
    解釋一:flat minimum只需要用比較低的精度就能描述;sharp minimu需要非常精確的描述。根據MDL(minimum description length)理論,states that statistical models that
    require fewer bits to describe (i.e., are of low complexity) generalize better
    。或者更直觀地,精確的minimu會導致最優點高度敏感,見下圖:

    Fig. 1. flat and sharp minimizer的不同泛化能力

    sharpness:直觀的解釋見上圖。作者也選擇了一個客觀指標來衡量sharpness:理論上最好的指標是" 目標函數f的海森矩陣的模"。然而海森矩陣計算量太大。故選取了一個近似指標:目標函數f在某個小鄰域范圍中可以取得的最大的函數值。

  • 什么是SB方法的“探索性”?
    答:SB方法中,梯度中固有的噪聲會push參數更新過程,讓其遠離sharp minimizers(這里不要把minimizer看成全局的。可以理解為不同的局部有不同形狀的minimizer這里的minimizers應該是說,在一個很大的function set(取決于model capacity)中,有一些function是sharp minimizers,另一些是flat minimizers,然后模型最終的優化只會選擇其中一個function。可以這樣理解嗎 這里的minimizers是指loss surface上不同的局部極小值點),并且傾向于陷入即使是噪聲也無法讓優化過程跳出的,更平坦的局部極小值。因此,超過一個閾值之后,繼續增大BatchSize會導致梯度噪聲的減小,這樣優化過程就無法跳出那些原本可以跳出的,比較sharper的局部極小值

  • warm-start
    在上述分析的基礎上,作者設置了一個實驗:


    Fig. 2. warm-start實驗的設計

注意:這個實驗非常重要。作者用小batchSize (SB)和ADAM train了100個epoch,并且將每個100個的訓練結果保存下來。然后使用每一個保存的斷點,換成大的batchSize繼續訓練100個epoch,這樣得到100個warm-started LB solutions。作者比較了這一百個結果,發現如下的規律:

在繼承最開始的幾個epoch訓練的LB模型未表現出泛化性能的提升。與此同時這些模型對應的sharpness維持在較高的水準。然而在經過一定epoch數的warm-starting之后,LB模型的泛化性能顯著提高,同時sharpness下降。也就是說:The SB method has ended its exploration phase and discovered a flat minimizer.

Fig. 3. warm-start: 先使用SB train 幾個epoch,然后換成LB
  • 其他實驗:本文還做了一些其他實驗試圖減小LB的sharpness,比如數據增強,甚至一些對抗方法。然而這些方法,雖然一定程度上提高了泛化性能,但是并沒有降低模型的sharpness。故作者認為這些方法并沒有解決問題。

篇2 DON’T DECAY THE LEARNING RATE, INCREASE THE BATCH SIZE

??首先要強調一下,這篇文章,還有facebook那篇 Training ImageNet in 1 Hour面向的問題差不多,基本上是超過8個GPU,分布式大規模計算的情景,解決增大batchSize網絡模型變差這樣問題。不過其中的場景和我們實驗室的差別較大,可能其中有很多有用的tricks,但是目前可能還用不上...這里就把兩篇論文中感興趣的points整理在一起:

    1. Linear Scaling Rule


      Fig. 6. Linear Scaling Rule

      ??然而知乎上有人提出了自己的實踐經驗,就是說對于異步SGD, 這個Linear Scaling Rule不太適用。


      Fig. 7. 知乎上有人提出的質疑

??很多人說facebook這篇文章提出的tricks很實用,不過由于時間原因還沒仔細了解,因為我覺得可能當前階段李沐的tricks學習優先級更高一些。以后如果有幸能參與大規模集群開發,再好好學一學facebook的expensive experiment tricks...

    1. noise scale
      ??Google這篇文章中大量使用了Smith & Le論文(看了下,原來是自己的文章...)中提出的一個概念:noise scale。即下圖的公式:
Fig. 8. noise scale

??由這個式子,作者認為衰減學習率其實和增大BatchSize擁有相同的效果(在滿足N<<B的前提下)。作者在文章中使用不同的training schedule,比如只衰減學習率;只增大batchSize或者兩者混合進行。最終的結果是得到了幾乎一致的訓練曲線。故作者得出結論:與模型表現真正相關的不是學習率,而是noise scale。因為這幾組實驗真正在做的事情,是decay noise scale

    1. 模擬退火

??本文提出的一個重要概念:將神經網絡訓練過程類比為物理科學中的模擬退火,其中的“火”指的是溫度,而對應到神經網絡中則是噪聲幅度, 即 2 中的noise scale。以下為詳細分析:

①本博客上面提到,LB方法具有一定探索性,因為其梯度噪聲較大。而隨著訓練過程接近optima,我們必須逐漸減小學習率以抵消梯度的bounce。顯然這符合上面描述的逐漸減小noise的過程。注意這也正是我們常用的策略。因為我們的GPU資源有限,其實batchSize也增大不了多少。
??另外一個非常有趣的事實是,研究者們越來越不傾向于使用較溫和的學習率衰減策略,如平方根或者指數衰減,而傾向于使用sharper的策略,如cosine decay或者step-functions decay。作者認為也可以使用物理科學中的模擬退火現象來類比:

To interpret this shift, we note that it is well known in the physical sciences that slowly annealing the temperature (noise scale) helps the system to converge to the global minimum, which may be sharp. Meanwhile annealing the temperature in a series of discrete steps can trap the system in a “robust” minimum whose cost may be higher but whose curvature is lower. We suspect a similar intuition may hold in deep learning.

②另一個角度來說,batchSize越大,梯度噪聲越小。通過逐步增大batchSize達到模擬退火的效果。

③上面兩點本質上都是在通過減小訓練過程中的noise scale來實現模擬退火。訓練初期使用較大的噪聲,允許模型在一個更大的參數空間中探索,而不會輕易卡在local minima;經歷過這一階段之后,我們可以在一個局部的,更有前景的參數空間中減小noise,并微調我們的參數。 見原文中的論述:

Fig. 9. 原文中針對模擬退火的描述

注意,這個描述高度符合篇一中warm-start實驗的做法。

    1. 有效學習率,momentum系數與訓練啟動期

??這部分中比較有意思的是,作者通過推理給出了noise scale公式的momentum版本。進而提出了兩個概念:有效學習率和 N_{lost}。我們可以簡單看下推導:

Fig. 10. 帶momentum的noise scale推導

??由于accumulate variable A被初始化為0,delta A在前幾個epoch一致很小,從而導致參數更新幅度deltaW被抑制。直到經過一定數目epoch,才能進入穩定的訓練階段。作者后面繼續推導,找到了這個訓練初期的epoch數目N_{lost} = B/(N(1-m))。并給出了后續結論:

momentum系數的增大會使得訓練初期需要更多epoch數目來啟動。如果這個數目相比整個訓練過程的epoch數不可以忽略,就需要我們增加額外的epoch數目來補償。

Fig. 11. 結論:momentum系數的增大會使得訓練初期需要更多epoch數目來啟動

??這里的ε/(1-m)即有效學習率(effective learning rate)。不過作者好像用這個測度是為了進一步縮小訓練的步數。具體有什么重要意義,沒有深入了解。

??

總結:如何提高神經網絡性能?

  1. 使用warm-start


    Fig. 4. 使用warm-start

【待續】

參考:

Cross Validated

Quora

論文

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,156評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,401評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,069評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,873評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,635評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,128評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,203評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,365評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,881評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,733評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,935評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,475評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,172評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,582評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,821評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,595評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,908評論 2 372