導航:首頁 > 數據處理 > 數據集越大batch如何設置

數據集越大batch如何設置

發布時間:2022-12-15 08:06:08

『壹』 Batch詳解

相關衍生概念

Batch_size = n 時,模型狀態如下:

Batch的選擇,首先決定的是 梯度下降的方向 ,如果 數據集比較小 ,完全可以採用 全數據集(Full Batch Learning) 的形式,這樣做有 2 個好處

在一定范圍內, 增加batch_size有助於收斂的穩定性 ,但是隨著batch_size的增加,模型的性能會下降

ICLR 2017

1 表明大的batchsize會收斂到sharp minimum,而小的batchsize會收斂到flat minimum,後者具有更好的泛化能力。 兩者的區別就在於變化的趨勢,一個快一個慢,如下圖,造成這個現象的主要原因是小的batchsize帶來的雜訊有助於逃離sharp minimum。

『貳』 3060顯卡batchsize設置多少

1。
當數據量足夠大的時候可以適當的減小batch_size,由於數據量太大,內存不夠。但盲目減少會導致無法收斂,batch_size=1時為在線學習,也是標準的SGD,這樣學習,如果數據量不大,noise數據存在時,模型容易被noise帶偏,如果數據量足夠大,noise的影響會被「沖淡」,對模型幾乎不影響。batch的選擇,首先決定的是下降方向,如果數據集比較小,則完全可以採用全數據集的形式。

『叄』 tensorflow怎麼調整batch size

原文如下:
在剛開始學習使用TF的過程中,我不是很理解什麼是「batch」。也經常有人問,到底minibatch是干什麼的?
然而這是一個在TF中,或者說很多DL的框架中很常見的詞。

這個解釋我覺得比較貼切也比較容易理解。引用如下:

深度學習的優化演算法,說白了就是梯度下降。每次的參數更新有兩種方式。
第一種,遍歷全部數據集算一次損失函數,然後算函數對各個參數的梯度,更新梯度。這種方法每更新一次參數都要把數據集里的所有樣本都看一遍,計算量開銷大,計算速度慢,不支持在線學習,這稱為Batch gradient descent,批梯度下降。
另一種,每看一個數據就算一下損失函數,然後求梯度更新參數,這個稱為隨機梯度下降,stochastic gradient descent。這個方法速度比較快,但是收斂性能不太好,可能在最優點附近晃來晃去,hit不到最優點。兩次參數的更新也有可能互相抵消掉,造成目標函數震盪的比較劇烈。
為了克服兩種方法的缺點,現在一般採用的是一種折中手段,mini-batch gradient decent,小批的梯度下降,這種方法把數據分為若干個批,按批來更新參數,這樣,一個批中的一組數據共同決定了本次梯度的方向,下降起來就不容易跑偏,減少了隨機性。另一方面因為批的樣本數與整個數據集相比小了很多,計算量也不是很大。

Michael Nielsen在這一章節也有解釋,mini-batch是什麼,為什麼有這個東西。
Deep Learning的這一章節的5.9小節也有解釋,還給出了batch的典型值。
結合上面給出的中文解釋,再看這兩個小節,應該會對batch有所理解。

『肆』 為什麼batchsize和iters設的很大,但很快就退出了

batchsize越大,訓練速度則越快,內存佔用更大,但收斂變慢。
Batch的選擇,首先決定的是下降的方向。那麼越准確的數據量,決定的梯度下降的方向就越准確,對於小的數據集來說,batchsize可以選擇全部數據集大小。
batch的size設置的不能太大也不能太小,因此實際工程中最常用的就是mini-batch,一般size設置為幾十或者幾百。

『伍』 設置BatchSize

BatchSize是非常重要的超參數,它不僅影響訓練速度,也影響模型精度。本篇來討論如何選擇BatchSize。

BatchSize是否越大越好?

BatchSize一般指同時代入訓練模型的實例個數,最直接的經驗是如果GPU顯存不大,又設置較大的BatchSize時直接報錯「cuda runtime error(2): out of memory」。

是不是只要機器性能允許,就要設置盡可能大的Batch size呢?同時訓練多個實例比逐個代入單個實例訓練速度又能提高多少?

下圖為使用不同的batchSize,在LeNet上訓練mnist數據的效果,使用的框架為Theano。

可以看到,使用較大的batchSize的確可以提速,但是batchSize大到一定程度後,效果並不十分明顯。

從圖中可以看到如果將所有數據全部代入一次迭代(左圖),則在訓練集上的代價函數下降比較平滑,如果切分成多個Batch,代價函數不一定是下降的。這是由於每一個Batch中數據的難度不同,造成了代價函數忽大忽小。

如何選擇batch大小?

兩種極端的情況是BatchSize大小為1,每次只訓練一個實例,或者BatchSize大小等於所有訓練集數據大小,即每次訓練所有數據。但更多的時候BatchSize設置在二者之間。

batchSize較小時,抖動大,訓練過程有很大運氣的成份,可能某個實例將模型帶偏了,防止被模型被帶偏的方法是使用較小的學習率,這樣即非並行處理,又使用較小的學習率,使得收斂變慢。

batchSize較大時,任務並行執行,訓練速度快, 且大Batch正負樣本更均衡可以有效更新BN層參數精度更高。代價函數也能相對比較穩定,平滑地下降。但是如果代入了所有數據後再調參,可能會使很多梯度相互抵消,調參也比較粗糙。如果不進行特殊處理,過大的BatchSize一將會損失模型精度。另外,較大的batchSize會使模型的泛化能力下降(generalization gap)。

如果遇到較大的數據集,一般需要切分成batch分批訓練,對於較少的數據,也可以使用全部數據訓練。當有足夠算力時,選取BatchSize為32,64,128或更小一些的batch_size。算力不夠時,在效率和泛化性之間做權衡,選擇更小的batchSize。

在訓練過程中,可以將batch_size作為超參數做多次嘗試。另一方面,也可以在前期使用較大的學習率和較越BatchSize粗調,後期(比如論文實驗/比賽最後)將BatchSize變小精調,並使用SGD優化方法,慢慢把Error磨低。

BatchSize是否只與速度有關?

BatchSize不僅與速度相關,如果模型中使用了Batch Normalization(BN)歸一化方法,那麼太小的BatchSize會影響模型效果,如果受演算法或性能限制只能使用小的BatchSize,則建議在fine-tune時鎖住BN歸一化層,或者使用其它歸一化方法(如Group Normalization)。

另外,BN歸一化時的統計值針對每一Batch計算,而非對整個訓練集計算,從而引入了雜訊,當雜訊在合理范圍以內時,它能實現類似Dropout的效果,使模型更加健壯;BatchSize太小雜訊太大,則使模型效果變差;如果BatchSize太大,統計值能有效地表示整體訓練數據的統計數據,則無法產生類似Dropout的正則化效果。

BatchSize與Learning rate的關系

Krizhevsky提出,如果BatchSize加大,可以加大學習率,當BatchSize加大k倍,則學習也加大k的開根號位數,後來發現使用線性變換調節二者關系效果更好。用這種方法將AlexNet的BatchSize從128加大到1024精度只損失1%。但是太大的學習率又會在一開始使模型訓練不穩定,解決該問題的方法是學習率warm-up。

閱讀全文

與數據集越大batch如何設置相關的資料

熱點內容
山東工程職業技術大學校服多少錢 瀏覽:217
村民如何查詢被征地信息 瀏覽:614
微信上的小程序如何徹底刪除 瀏覽:474
廣東過禮娶親要走什麼程序 瀏覽:761
交易中的心魔怎麼克服 瀏覽:639
童裝代理什麼品牌好 瀏覽:774
研發轉技術文檔怎麼樣 瀏覽:702
商業銀行的市場准入有哪些內容 瀏覽:355
政府引導市場運作是什麼意思 瀏覽:39
為什麼qq經常正在更新數據 瀏覽:180
內存是如何存數據的 瀏覽:55
信道狀態指示包括以下哪些信息 瀏覽:305
什麼是現代市場體系 瀏覽:891
加盟代理商如何注冊 瀏覽:249
g工程和數字媒體技術哪個前景好 瀏覽:372
信息化系統如何運維 瀏覽:415
濟南特色早餐技術培訓哪裡好 瀏覽:292
什麼是貨幣交易所的充值與提幣 瀏覽:951
信息提取題考查什麼 瀏覽:388
老外技術到底怎麼樣 瀏覽:745