GOOD POST
https://towardsdatascience.com/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9
Epoch
當一個完整的數據集通過了神經網絡一次並且返回了一次,這個過程稱為一次Epoch。所有訓練樣本在神經網絡中都進行了一次正向傳播和一次反向傳播。一個Epoch就是講所有訓練樣本訓練一次的過程。
一個Epoch訓練樣本數量可能太過龐大,就需要把它分成多個小塊,也就是就是分成多個Batch 來進行訓練。
一個epoch指代所有的數據送入網絡中完成一次前向計算及反向傳播的過程。由於一個epoch常常太大,計算機無法負荷,我們會將它分成幾個較小的batches。那么,為什么我們需要多個epoch呢?我們都知道,在訓練時,將所有數據迭代訓練一次是不夠的,需要反復多次才能擬合收斂。在實際訓練時,我們將所有數據分成幾個batch,每次送入一部分數據,梯度下降本身就是一個迭代過程,所以單個epoch更新權重是不夠的。
下圖展示了使用不同個數epoch訓練導致的結果。

可見,隨着epoch數量的增加,神經網絡中權重更新迭代的次數增多,曲線從最開始的不擬合狀態(右側圖),慢慢進入優化擬合狀態(中間圖),最終進入過擬合(左側圖)。
因此,epoch的個數是非常重要的。那么究竟設置為多少才合適呢?恐怕沒有一個確切的答案。對於不同的數據集來說,epoch數量是不同的。但是,epoch大小與數據集的多樣化程度有關,多樣化程度越強,epoch應該越大。
例如,訓練數據集總共有1000個樣本。若batch_size=10,那么訓練完全體樣本集需要100次迭代,1次epoch。
例如:訓練樣本10000條,batchsize設置為20,將所有的訓練樣本在同一個模型中訓練5遍,則epoch=5,batchsize=20, iteration=10000/20=500
Batch Size
所謂Batch就是每次送入網絡中訓練的一部分數據,而Batch Size就是每個batch中訓練樣本的數量。上文提及,每次送入訓練的不是所有數據而是一小部分數據,另外,batch size 和batch numbers不是同一個概念。
Batch size大小的選擇也至關重要。為了在內存效率和內存容量之間尋求最佳平衡,batch size應該精心設置,從而最優化網絡模型的性能及速度。
batchsize太大或者太小都不好,如果該值太小,假設batchsize=1,每次用一個數據進行訓練,如果數據總量很多時(假設有十萬條數據),就需要向模型投十萬次數據,完整訓練完一遍數據需要很長的時間,訓練效率很低;如果該值太大,假設batchsize=100000,一次將十萬條數據扔進模型,很可能會造成內存溢出,而無法正常進行訓練。
所以,我們需要設置一個合適的batchsize值,在訓練速度和內存容量之間尋找到最佳的平衡點。
幾點經驗:
相對於正常數據集,如果Batch_Size過小,訓練數據就會非常難收斂,從而導致欠擬合。增大Batch_Size,相對處理速度會變快,同時所需內存容量增加。為了達到更好的訓練效果,一般在Batchsize增加的同時,我們需要對所有樣本的訓練次數(也就是后面要講的epoch)增加,以達到最好的結果。增加Batchsize的同時,一般會讓所有樣本的訓練次數增加,這同樣會導致耗時增加,因此需要尋找一個合適的Batchsize值,在模型總體效率和內存容量之間做到最好的平衡。
Iterations
所謂 iterations 就是完成一次epoch所需的batch個數。
剛剛提到的,batch numbers 就是iterations。
簡單一句話說就是,我們有2000個數據,分成4個batch,那么batch size就是500。運行所有的數據進行訓練,完成1個epoch,需要進行4次iterations。
用mnist 數據集舉例:
mnist 數據集有60000張圖片作為訓練數據,假設現在選擇 Batch_Size = 100對模型進行訓練。
-
每個 Epoch 要訓練的圖片數量:60000 (訓練集上的所有圖像)
-
訓練集具有的 Batch 個數:60000/100=600
-
每個 Epoch 需要完成的 Batch 個數:600
-
每個 Epoch 具有的 Iteration 個數:600(完成一個Batch訓練,相當於參數迭代一次)
-
每個 Epoch 中發生模型權重更新的次數:600
-
訓練 10 個Epoch后,模型權重更新的次數:600*10=6000
-
不同Epoch的訓練,其實用的是同一個訓練集的數據。第1個Epoch和第10個Epoch雖然用的都是訓練集的圖片,但是對模型的權重更新值卻是完全不同的。因為不同Epoch的模型處於代價函數空間上的不同位置,模型的訓練代越靠后,越接近谷底,其代價越小。
鏈接:
https://baijiahao.baidu.com/s?id=1637024752671211788&wfr=spider&for=pc