天天看點

batch size設定技巧

1、什麼是BatchSize

Batch一般被翻譯為批量,設定batch_size的目的讓模型在訓練過程中每次選擇批量的資料來進行處理。Batch Size的直覺了解就是一次訓練所選取的樣本數。

Batch Size的大小影響模型的優化程度和速度。同時其直接影響到GPU記憶體的使用情況,假如你GPU記憶體不大,該數值最好設定小一點。

2、 為什麼需要 Batch_Size?

在沒有使用Batch Size之前,這意味着網絡在訓練時,是一次把所有的資料(整個資料庫)輸入網絡中,然後計算它們的梯度進行反向傳播,由于在計算梯度時使用了整個資料庫,是以計算得到的梯度方向更為準确。但在這情況下,計算得到不同梯度值差别巨大,難以使用一個全局的學習率,是以這時一般使用Rprop這種基于梯度符号的訓練算法,單獨進行梯度更新。

在小樣本數的資料庫中,不使用Batch Size是可行的,而且效果也很好。但是一旦是大型的資料庫,一次性把所有資料輸進網絡,肯定會引起記憶體的爆炸。是以就提出Batch Size的概念。

3、 如何設定Batch_Size 的值?

設定BatchSize要注意一下幾點:

     1)batch數太小,而類别又比較多的時候,真的可能會導緻loss函數震蕩而不收斂,尤其是在你的網絡比較複雜的時候。

     2)随着batchsize增大,處理相同的資料量的速度越快。

     3)随着batchsize增大,達到相同精度所需要的epoch數量越來越多。

     4)由于上述兩種因素的沖突, Batch_Size 增大到某個時候,達到時間上的最優。

     5)由于最終收斂精度會陷入不同的局部極值,是以 Batch_Size 增大到某些時候,達到最終收斂精度上的最優。

     6)過大的batchsize的結果是網絡很容易收斂到一些不好的局部最優點。同樣太小的batch也存在一些問題,比如訓練速度很慢,訓練不容易收斂等。

     7)具體的batch size的選取和訓練集的樣本數目相關。

16、32、64、128…時往往要比設定為整10、整100的倍數時表現更優

    我在設定BatchSize的時候,首先選擇大點的BatchSize把GPU占滿,觀察Loss收斂的情況,如果不收斂,或者收斂效果不好則降低BatchSize,一般常用16,32,64等。

4、在合理範圍内,增大Batch_Size有何好處?

記憶體使用率提高了,大矩陣乘法的并行化效率提高。

跑完一次 epoch(全資料集)所需的疊代次數減少,對于相同資料量的處理速度進一步加快。

在一定範圍内,一般來說 Batch_Size 越大,其确定的下降方向越準,引起訓練震蕩越小。

5、 盲目增大 Batch_Size 有何壞處?

記憶體使用率提高了,但是記憶體容量可能撐不住了。

跑完一次 epoch(全資料集)所需的疊代次數減少,要想達到相同的精度,其所花費的時間大大增加了,進而對參數的修正也就顯得更加緩慢。

Batch_Size 增大到一定程度,其确定的下降方向已經基本不再變化。

6、調節 Batch_Size 對訓練效果影響到底如何?

Batch_Size 太小,模型表現效果極其糟糕(error飙升)。

随着 Batch_Size 增大,處理相同資料量的速度越快。

随着 Batch_Size 增大,達到相同精度所需要的 epoch 數量越來越多。

由于上述兩種因素的沖突, Batch_Size 增大到某個時候,達到時間上的最優。

由于最終收斂精度會陷入不同的局部極值,是以 Batch_Size 增大到某些時候,達到最終收斂精度上的最優

batchsize過小:每次計算的梯度不穩定,引起訓練的震蕩比較大,很難收斂。

batchsize過大:

(1)提高了記憶體使用率,大矩陣乘法并行計算效率提高。

(2)計算的梯度方向比較準,引起的訓練的震蕩比較小。

(3)跑完一次epoch所需要的疊代次數變小,相同資料量的資料處理速度加快。

缺點:容易内容溢出,想要達到相同精度,epoch會越來越大,容易陷入局部最優,泛化性能差。

batchsize設定:通常10到100,一般設定為2的n次方。

原因:計算機的gpu和cpu的memory都是2進制方式存儲的,設定2的n次方可以加快計算速度。

深度學習中經常看到epoch、 iteration和batchsize這三個的差別:

(1)batchsize:批大小。在深度學習中,一般采用SGD訓練,即每次訓練在訓練集中取batchsize個樣本訓練;

(2)iteration:1個iteration等于使用batchsize個樣本訓練一次;

(3)epoch:1個epoch等于使用訓練集中的全部樣本訓練一次;

繼續閱讀