一文讓你完全搞懂BATCH_SIZE

1、名詞介紹算法

    Batch Size定義:一次訓練所選取的樣本數。
Batch Size的大小影響模型的優化程度和速度。網絡

2、如何理解優化

咱們知道,通常訓練神經網絡,會餵給神經網絡不少數據,通過反向傳播來更新權重。如今咱們假設,咱們要餵給神經網絡m個樣本,神經網絡是分層的,並且每一層的神經元個數各不相同,最後的輸出層有k個神經元。那麼對於一個樣本的神經網絡的loss,也就是吳恩達說的J(θ),它實際上是輸出層各個神經元的loss的和,那對於m個樣本,整個神經網絡的loss應該是m個樣本的loss的和。神經網絡

綜上,樣本有m個,神經網絡的輸出層有k個神經元,那麼這個神經網絡的loss=m個單樣本loss的和,單樣本loss=k個輸出層神經元loss的和。也就是說與loss有關的有兩個參數,樣本數m和輸出層神經元k。(固然和權重W和神經網絡的深度也有關係,這裏咱們只看m和k)數據

因此,對於訓練神經網絡來講,我是把m個樣本所有餵給神經網絡,它前向傳播一次後,算出loss,而後再反向傳播、梯度降低。若是m很大,那更新一次權重就會花費好久的時間。因此爲了提速,咱們能夠把m個樣本切分開來,造成一個一個的BATCH,先訓練這些BATCH。這些BATCH,有着較小的樣本數,樣本數小了,訓練的速度會快一些,可以有表明性的反應當前神經網絡的一些狀況。時間

batch是指從總樣本切分出來的樣本,batch_size是每一個 batch 中的樣本數,Epoch是總樣本的傳遞次數,batch_numbers使在完成一次Epoch要處理的batch的個數。oss

假設有一個包含200個樣本的數據集(總樣本),而且選擇的batch_size大小爲5和1,000個Epoch。這意味着數據集將分爲40個Batch,batch_numbers就是40,每一個Batch有5個樣本。每餵給神經網絡一個batch(5個樣本)後,權重將更新。這也意味着一個epoch將涉及40個Batch或40次更新。有1000個Epoch,將傳遞整個數據集1,000次。bat

3、設置要求參數

1.Batch_Size 過小,算法在 200 epoches 內不收斂。模型

2.隨着 Batch_Size 增大,處理相同數據量的速度越快。

3.隨着 Batch_Size 增大,達到相同精度所須要的 epoch 數量愈來愈多。

4.因爲上述兩種因素的矛盾, Batch_Size 增大到某個時候,達到時間上的最優。

5.因爲最終收斂精度會陷入不一樣的局部極值,所以 Batch_Size 增大到某些時候,達到最終收斂精度上的最優。

相關文章
相關標籤/搜索