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

一忘苛、概述

??本文記錄了自己探究batchSize, lr以及Performance之間關(guān)系這一問題時(shí)做的筆記,組織比較無序丙者。第二、三部分為當(dāng)時(shí)的問題和解答营密。第四部分為兩篇論文的筆記械媒。最后一部分給出了探究結(jié)果的其實(shí)——訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí)和batchSize以及l(fā)r相關(guān)的trick。

??順便說下,本文一些重要的參考文獻(xiàn)是Quora, reddit等國外高質(zhì)量論壇的帖子纷捞。如果你需要訪問痢虹,務(wù)必小心,因?yàn)橛幸欢◣茁式拥健吧米越⒅骼埽褂梅欠ǘㄐ诺肋M(jìn)行國際聯(lián)網(wǎng)”的通知~

二奖唯、問題陳列:

  1. batchSize越小,訓(xùn)練過程的隨機(jī)性(不確定性)越高缀辩,即訓(xùn)練過程中梯度包含的噪聲更多臭埋,或者說minibatch的梯度具有越高的方差,進(jìn)而得出結(jié)論臀玄,Small batchSize方法具有更好的“探索性”瓢阴。上述說法只是直覺層面,有無理論證明健无?
  2. 為什么batchSize越大荣恐,網(wǎng)絡(luò)收斂越慢?在一定范圍內(nèi)batchSize越大累贤,GPU的并行效率不是越高嗎叠穆?batchSize和學(xué)習(xí)率的關(guān)系?
  3. 為什么batchSize大到一定程度以后臼膏,validation performance大幅下降硼被?
  4. 應(yīng)該如何理解optimization過程中的minimizer?


三渗磅、答案:

【更新】:下面的答案有幾處不嚴(yán)格的地方:
參考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倍”。這個(gè)應(yīng)該是不對(duì)的始鱼。不過計(jì)算量確實(shí)是線性關(guān)系仔掸。見下面截圖:

    Update 1. Ian回答截圖 1

  2. 并不是訓(xùn)練時(shí)使用整個(gè)訓(xùn)練集(即batchSGD)就能獲得“clean gradient”。真實(shí)的梯度應(yīng)該是在所有可能的樣本點(diǎn)上計(jì)算出的梯度医清,在數(shù)據(jù)生成分布上的加權(quán)和起暮。使用整個(gè)訓(xùn)練集只是相當(dāng)于用一個(gè)很大的minibatch size。見下圖:


    Update 2. Ian回答截圖


嘗試解答:

  1. 答:【嚴(yán)格證明有待補(bǔ)充】我們?cè)谑褂胢ini-batch SGD訓(xùn)練NN時(shí)会烙,實(shí)際上做的事情负懦,是通過mini-batch上的梯度來估計(jì)整個(gè)訓(xùn)練集上的梯度。顯然柏腻,使用1個(gè)樣本(即SGD)相比使用100個(gè)樣本的batch密似,梯度的噪聲要大得多。也就是說葫盼,當(dāng)使用小batch SGD時(shí)残腌,我們并不總是沿著loss下降最快(即梯度方向)的方向移動(dòng)的。相反,如果使用整個(gè)數(shù)據(jù)集作為訓(xùn)練集(batch SGD)抛猫,那么我們訓(xùn)練時(shí)的梯度是非常"clean"的蟆盹,這樣會(huì)導(dǎo)致一個(gè)問題:優(yōu)化過程將卡在第一個(gè)local minima處。因?yàn)榇藭r(shí)梯度值為0闺金。
  1. 答:考慮我們有個(gè)包含100, 0000個(gè)訓(xùn)練樣本的數(shù)據(jù)集逾滥。我們考慮兩種方法:batchSize為100和10000的算法來訓(xùn)練神經(jīng)網(wǎng)絡(luò),假設(shè)使用相同的step size(即學(xué)習(xí)率)败匹。大體上寨昙,梯度計(jì)算的復(fù)雜度和batchSize成線性關(guān)系。故計(jì)算10000-batch的梯度的時(shí)間掀亩,大約為計(jì)算100-batch梯度時(shí)間的100倍舔哪。
    這意味著在10000-batch更新參數(shù)一步的時(shí)間(one step update),100-batch方法可以更新100步參數(shù)槽棍。由于mini-batch SGD算法參數(shù)更新不一定沿著梯度方向(即1中所答)捉蚤,這100個(gè)更新steps的“成效”肯定達(dá)不到10000-batch那一步更新的100倍。但是至少也能達(dá)到10倍以上的“成效”炼七。這就是為什么mini-batch SGD算法要比batch SGD節(jié)省大量時(shí)間缆巧。
    注意,剛才我們的假設(shè)是100-batch和10000-batch使用相同的學(xué)習(xí)率⊥阕荆現(xiàn)在我們考慮另一個(gè)問題:batchSize和學(xué)習(xí)率的關(guān)系陕悬。由于large-batch方法訓(xùn)練時(shí)梯度的方差更小,或者說由于loss下降的方向更嚴(yán)格地沿著梯度方向按傅,我們可以選擇更大的batchSize捉超。具體來說,100-batch和10000-batch相比逞敷,前者的梯度方差是后者的100倍。理論上這使得我們可以用100倍的學(xué)習(xí)率來訓(xùn)練灌侣,這樣的話推捐,理論上我們用10000-batch更新1步的速度其實(shí)和100-batch更新100步的速度相同。如果是這樣的話侧啼,那將是非常理想的牛柒。因?yàn)榇蟮腷atchSize會(huì)更大程度利用GPU的并行運(yùn)算能力,極大的提高訓(xùn)練效率痊乾。然而事實(shí)上皮壁,盡管我們可以對(duì)larger batch使用更大的學(xué)習(xí)率,但是這個(gè)學(xué)習(xí)率是有一個(gè)上限的哪审。"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. 答:因?yàn)?large-batch methods tend to converge to sharp minimizers of the training and testing functions蛾魄,而sharp minima lead to poorer generalization"。至于為什么sharp minima導(dǎo)致泛化更差?見Fig. 1滴须。

  2. 答:就是loss surface上不同的局部極小值點(diǎn)舌狗。有的極小值點(diǎn)附近比較陡,有的比較平坦扔水。參考論文: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

  • 現(xiàn)象:較大的batchSize(LB methods)會(huì)導(dǎo)致驗(yàn)證集表現(xiàn)和訓(xùn)練集表現(xiàn)出現(xiàn)明顯鴻溝(訓(xùn)練集表現(xiàn)沒有影響)。

  • 推測(cè):①LB導(dǎo)致模型過擬合②LB方法容易陷入鞍點(diǎn)③LB缺乏SB的“探索性質(zhì)”(即SB的引入的隨機(jī)性使得優(yōu)化過程有一定幾率跳過local minima)④SB和LB方法會(huì)收斂到具有不同泛華性質(zhì)的不同的minimizer魔市。
    本文可以證明主届,后兩個(gè)推斷是合理的。

  • 名詞解釋:
    minimizerminimaminimizer本質(zhì)是function待德,而minima是minimizer函數(shù)值最低點(diǎn)對(duì)應(yīng)的X(parameters)取值君丁。一個(gè)在鄰域內(nèi)變化很小的函數(shù)被稱為flat minimizer,反之則是sharp minimizer磅网。minimizer和minima這里應(yīng)該是相同的意思谈截,指局部極小值點(diǎn)。為什么minimizer sharp了泛化就差涧偷?解釋如下:
    解釋一:flat minimum只需要用比較低的精度就能描述簸喂;sharp minimu需要非常精確的描述。根據(jù)MDL(minimum description length)理論燎潮,states that statistical models that
    require fewer bits to describe (i.e., are of low complexity) generalize better
    喻鳄。或者更直觀地确封,精確的minimu會(huì)導(dǎo)致最優(yōu)點(diǎn)高度敏感除呵,見下圖:

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

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

  • 什么是SB方法的“探索性”秉剑?
    答:SB方法中泛豪,梯度中固有的噪聲會(huì)push參數(shù)更新過程,讓其遠(yuǎn)離sharp minimizers(這里不要把minimizer看成全局的侦鹏」钍铮可以理解為不同的局部有不同形狀的minimizer這里的minimizers應(yīng)該是說,在一個(gè)很大的function set(取決于model capacity)中略水,有一些function是sharp minimizers价卤,另一些是flat minimizers,然后模型最終的優(yōu)化只會(huì)選擇其中一個(gè)function渊涝∩麒担可以這樣理解嗎 這里的minimizers是指loss surface上不同的局部極小值點(diǎn))床嫌,并且傾向于陷入即使是噪聲也無法讓優(yōu)化過程跳出的,更平坦的局部極小值炸卑。因此既鞠,超過一個(gè)閾值之后,繼續(xù)增大BatchSize會(huì)導(dǎo)致梯度噪聲的減小盖文,這樣優(yōu)化過程就無法跳出那些原本可以跳出的嘱蛋,比較sharper的局部極小值

  • warm-start
    在上述分析的基礎(chǔ)上五续,作者設(shè)置了一個(gè)實(shí)驗(yàn):


    Fig. 2. warm-start實(shí)驗(yàn)的設(shè)計(jì)

注意:這個(gè)實(shí)驗(yàn)非常重要洒敏。作者用小batchSize (SB)和ADAM train了100個(gè)epoch,并且將每個(gè)100個(gè)的訓(xùn)練結(jié)果保存下來疙驾。然后使用每一個(gè)保存的斷點(diǎn)凶伙,換成大的batchSize繼續(xù)訓(xùn)練100個(gè)epoch,這樣得到100個(gè)warm-started LB solutions它碎。作者比較了這一百個(gè)結(jié)果函荣,發(fā)現(xiàn)如下的規(guī)律:

在繼承最開始的幾個(gè)epoch訓(xùn)練的LB模型未表現(xiàn)出泛化性能的提升。與此同時(shí)這些模型對(duì)應(yīng)的sharpness維持在較高的水準(zhǔn)扳肛。然而在經(jīng)過一定epoch數(shù)的warm-starting之后傻挂,LB模型的泛化性能顯著提高,同時(shí)sharpness下降挖息。也就是說:The SB method has ended its exploration phase and discovered a flat minimizer.

Fig. 3. warm-start: 先使用SB train 幾個(gè)epoch金拒,然后換成LB
  • 其他實(shí)驗(yàn):本文還做了一些其他實(shí)驗(yàn)試圖減小LB的sharpness,比如數(shù)據(jù)增強(qiáng)套腹,甚至一些對(duì)抗方法绪抛。然而這些方法,雖然一定程度上提高了泛化性能电禀,但是并沒有降低模型的sharpness幢码。故作者認(rèn)為這些方法并沒有解決問題。

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

??首先要強(qiáng)調(diào)一下尖飞,這篇文章症副,還有facebook那篇 Training ImageNet in 1 Hour面向的問題差不多,基本上是超過8個(gè)GPU葫松,分布式大規(guī)模計(jì)算的情景瓦糕,解決增大batchSize網(wǎng)絡(luò)模型變差這樣問題底洗。不過其中的場景和我們實(shí)驗(yàn)室的差別較大腋么,可能其中有很多有用的tricks,但是目前可能還用不上...這里就把兩篇論文中感興趣的points整理在一起:

    1. Linear Scaling Rule


      Fig. 6. Linear Scaling Rule

      ??然而知乎上有人提出了自己的實(shí)踐經(jīng)驗(yàn)亥揖,就是說對(duì)于異步SGD珊擂, 這個(gè)Linear Scaling Rule不太適用圣勒。


      Fig. 7. 知乎上有人提出的質(zhì)疑

??很多人說facebook這篇文章提出的tricks很實(shí)用,不過由于時(shí)間原因還沒仔細(xì)了解摧扇,因?yàn)槲矣X得可能當(dāng)前階段李沐的tricks學(xué)習(xí)優(yōu)先級(jí)更高一些圣贸。以后如果有幸能參與大規(guī)模集群開發(fā),再好好學(xué)一學(xué)facebook的expensive experiment tricks...

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

??由這個(gè)式子,作者認(rèn)為衰減學(xué)習(xí)率其實(shí)和增大BatchSize擁有相同的效果(在滿足N<<B的前提下)在张。作者在文章中使用不同的training schedule用含,比如只衰減學(xué)習(xí)率;只增大batchSize或者兩者混合進(jìn)行帮匾。最終的結(jié)果是得到了幾乎一致的訓(xùn)練曲線啄骇。故作者得出結(jié)論:與模型表現(xiàn)真正相關(guān)的不是學(xué)習(xí)率,而是noise scale瘟斜。因?yàn)檫@幾組實(shí)驗(yàn)真正在做的事情缸夹,是decay noise scale

    1. 模擬退火

??本文提出的一個(gè)重要概念:將神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程類比為物理科學(xué)中的模擬退火螺句,其中的“火”指的是溫度虽惭,而對(duì)應(yīng)到神經(jīng)網(wǎng)絡(luò)中則是噪聲幅度, 即 2 中的noise scale壹蔓。以下為詳細(xì)分析:

①本博客上面提到趟妥,LB方法具有一定探索性,因?yàn)槠涮荻仍肼曒^大佣蓉。而隨著訓(xùn)練過程接近optima披摄,我們必須逐漸減小學(xué)習(xí)率以抵消梯度的bounce。顯然這符合上面描述的逐漸減小noise的過程勇凭。注意這也正是我們常用的策略疚膊。因?yàn)槲覀兊腉PU資源有限,其實(shí)batchSize也增大不了多少虾标。
??另外一個(gè)非常有趣的事實(shí)是寓盗,研究者們?cè)絹碓讲粌A向于使用較溫和的學(xué)習(xí)率衰減策略,如平方根或者指數(shù)衰減璧函,而傾向于使用sharper的策略傀蚌,如cosine decay或者step-functions decay。作者認(rèn)為也可以使用物理科學(xué)中的模擬退火現(xiàn)象來類比:

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.

②另一個(gè)角度來說蘸吓,batchSize越大善炫,梯度噪聲越小。通過逐步增大batchSize達(dá)到模擬退火的效果库继。

③上面兩點(diǎn)本質(zhì)上都是在通過減小訓(xùn)練過程中的noise scale來實(shí)現(xiàn)模擬退火箩艺。訓(xùn)練初期使用較大的噪聲窜醉,允許模型在一個(gè)更大的參數(shù)空間中探索,而不會(huì)輕易卡在local minima艺谆;經(jīng)歷過這一階段之后榨惰,我們可以在一個(gè)局部的,更有前景的參數(shù)空間中減小noise静汤,并微調(diào)我們的參數(shù)琅催。 見原文中的論述:

Fig. 9. 原文中針對(duì)模擬退火的描述

注意,這個(gè)描述高度符合篇一中warm-start實(shí)驗(yàn)的做法虫给。

    1. 有效學(xué)習(xí)率恢暖,momentum系數(shù)與訓(xùn)練啟動(dòng)期

??這部分中比較有意思的是,作者通過推理給出了noise scale公式的momentum版本狰右。進(jìn)而提出了兩個(gè)概念:有效學(xué)習(xí)率和 N_{lost}杰捂。我們可以簡單看下推導(dǎo):

Fig. 10. 帶momentum的noise scale推導(dǎo)

??由于accumulate variable A被初始化為0,delta A在前幾個(gè)epoch一致很小棋蚌,從而導(dǎo)致參數(shù)更新幅度deltaW被抑制嫁佳。直到經(jīng)過一定數(shù)目epoch,才能進(jìn)入穩(wěn)定的訓(xùn)練階段谷暮。作者后面繼續(xù)推導(dǎo)蒿往,找到了這個(gè)訓(xùn)練初期的epoch數(shù)目N_{lost} = B/(N(1-m))湿弦。并給出了后續(xù)結(jié)論:

momentum系數(shù)的增大會(huì)使得訓(xùn)練初期需要更多epoch數(shù)目來啟動(dòng)瓤漏。如果這個(gè)數(shù)目相比整個(gè)訓(xùn)練過程的epoch數(shù)不可以忽略,就需要我們?cè)黾宇~外的epoch數(shù)目來補(bǔ)償颊埃。

Fig. 11. 結(jié)論:momentum系數(shù)的增大會(huì)使得訓(xùn)練初期需要更多epoch數(shù)目來啟動(dòng)

??這里的ε/(1-m)即有效學(xué)習(xí)率(effective learning rate)蔬充。不過作者好像用這個(gè)測(cè)度是為了進(jìn)一步縮小訓(xùn)練的步數(shù)。具體有什么重要意義班利,沒有深入了解饥漫。

??

總結(jié):如何提高神經(jīng)網(wǎng)絡(luò)性能?

  1. 使用warm-start


    Fig. 4. 使用warm-start

【待續(xù)】

參考:

Cross Validated

Quora

論文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末罗标,一起剝皮案震驚了整個(gè)濱河市庸队,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闯割,老刑警劉巖彻消,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宙拉,居然都是意外死亡宾尚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門鼓黔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來央勒,“玉大人,你說我怎么就攤上這事澳化〈薏剑” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵缎谷,是天一觀的道長井濒。 經(jīng)常有香客問我,道長列林,這世上最難降的妖魔是什么瑞你? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮希痴,結(jié)果婚禮上者甲,老公的妹妹穿的比我還像新娘。我一直安慰自己砌创,他們只是感情好虏缸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嫩实,像睡著了一般刽辙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上甲献,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天宰缤,我揣著相機(jī)與錄音,去河邊找鬼晃洒。 笑死慨灭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的球及。 我是一名探鬼主播缘挑,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼桶略!你這毒婦竟也來了语淘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤际歼,失蹤者是張志新(化名)和其女友劉穎惶翻,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹅心,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吕粗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旭愧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颅筋。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宙暇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出议泵,到底是詐尸還是另有隱情占贫,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布先口,位于F島的核電站型奥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏碉京。R本人自食惡果不足惜厢汹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谐宙。 院中可真熱鬧烫葬,春花似錦、人聲如沸凡蜻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咽瓷。三九已至设凹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茅姜,已是汗流浹背闪朱。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钻洒,地道東北人奋姿。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像素标,于是被迫代替她去往敵國和親称诗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354