一文讀懂神經網絡訓練中的Batch Size,Epoch,Iteration
作為在各種神經網絡訓練時都無法避免的幾個名詞,本文將全面解析他們的含義和關系。
1. Batch Size
釋義:批大小,即單次訓練使用的樣本數
為什么需要有 Batch_Size :batch size 的正確選擇是為了在內存效率和內存容量之間尋找最佳平衡。
Batch size調參經驗總結:
-
相對於正常數據集,如果Batch_Size過小,訓練數據就會非常難收斂,從而導致underfitting。
-
增大Batch_Size,相對處理速度加快。
-
增大Batch_Size,所需內存容量增加(epoch的次數需要增加以達到最好結果)。
-
這里我們發現上面兩個矛盾的問題,因為當epoch增加以后同樣也會導致耗時增加從而速度下降。
2. Epoch
1個epoch表示過了1遍訓練集中的所有樣本,即表示所有訓練樣本的一次forward+一次
backward。
3. Iteration
Iteration在有的網絡中也叫training step,中文或稱之為“迭代”,具體來說:一次迭代 = 一次forward + 一次backward。換句話說,就是“取若干數據,通過網絡推理得到結果,調整網絡權值”這樣整體的過程稱為一次迭代。(多說一句,這里所取的若干數據,就是batch size所決定的)
迭代是重復反饋的動作,神經網絡中我們希望通過迭代進行多次的訓練以到達所需的目標或結果。
每次迭代后將更新1次網絡結構的參數,每一次迭代得到的結果都會被作為下一次迭代的初始值。
4. Batch size,Epoch, Iteration的小結
總結:
- 一次epoch=所有訓練數據forward+backward后更新參數的過程。
- 一次iteration= batch size個訓練數據的forward+backward后更新參數過程。
這里舉一個小栗子。假設有一個數據集含200000個樣本,取1000次迭代為1個epoch,那么每次迭代的batch-size需要設為200。這樣1個epoch相當於過了200000個訓練樣本。