神經網絡訓練中,Epoch、Batch Size和迭代傻傻分不清?

今天讓我們來總結下訓練神經網絡中最最基礎的三個概念:Epoch, Batch, Iteration。

1. 名詞解釋

 

2. 換算關係

實際上,梯度下降的幾種方式的根本區別就在於上面公式中的 Batch Size不同。

  *注:上表中 Mini-Batch 的 Batch 個數爲 N / B + 1 是針對未整除的情況。整除則是 N / B。

補充:

爲什麼要使用多於一個 epoch?

我知道這剛開始聽起來會很奇怪,在神經網絡中傳遞完整的數據集一次是不夠的,而且我們需要將完整的數據集在同樣的神經網絡中傳遞多次。但是請記住,我們使用的是有限的數據集,並且我們使用一個迭代過程即梯度下降,優化學習過程和圖示。因此僅僅更新權重一次或者說使用一個 epoch 是不夠的。

 

隨着 epoch 數量增加,神經網絡中的權重的更新次數也增加,曲線從欠擬合變得過擬合。

那麼,幾個 epoch 纔是合適的呢?

不幸的是,這個問題並沒有正確的答案。對於不同的數據集,答案是不一樣的。但是數據的多樣性會影響合適的 epoch 的數量。比如,只有黑色的貓的數據集,以及有各種顏色的貓的數據集。

3. 示例

CIFAR10 數據集有 50000 張訓練圖片,10000 張測試圖片。現在選擇 Batch Size = 256 對模型進行訓練。

  • 每個 Epoch 要訓練的圖片數量:50000
  • 訓練集具有的 Batch 個數:50000/256=195+1
    • 每個 Epoch 需要完成的 Batch 個數:196
    • 每個 Epoch 具有的 Iteration (迭代)個數:196
    • 每個 Epoch 中發生模型權重更新的次數:196
    • 訓練 10 代後,模型權重更新的次數:196*10=1960
    • 不同代的訓練,其實用的是同一個訓練集的數據。第 1 代和第 10 代雖然用的都是訓練集的五萬張圖片,但是對模型的權重更新值卻是完全不同的。因爲不同代的模型處於代價函數空間上的不同位置,模型的訓練代越靠後,越接近谷底,其代價越小。

參考1:https://zhuanlan.zhihu.com/p/29409502 

參考2:https://towardsdatascience.com/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章