深度學習當中的三個概念:Epoch, Batch, Iteration

lalaland20發表於2020-11-20

名詞解釋:

在這裡插入圖片描述

Epoch(時期):

當一個完整的資料集通過了神經網路一次並且返回了一次,這個過程稱為一次>epoch。(也就是說,所有訓練樣本在神經網路中都 進行了一次正向傳播 和一次反向傳播 )
再通俗一點,一個Epoch就是將所有訓練樣本訓練一次的過程。
然而,當一個Epoch的樣本(也就是所有的訓練樣本)數量可能太過龐大(對於計算機而言),就需要把它分成多個小塊,也就是就是分成多個Batch 來進行訓練。**

Batch(批 / 一批樣本):

將整個訓練樣本分成若干個Batch。

Batch_Size(批大小):

每批樣本的大小。

Iteration(一次迭代):

訓練一個Batch就是一次Iteration(這個概念跟程式語言中的迭代器相似)。

問:為什麼要使用多於一個epoch?

在神經網路中傳遞完整的資料集一次是不夠的,而且我們需要將完整的資料集在同樣的神經網路中傳遞多次。但請記住,我們使用的是有限的資料集,並且我們使用一個迭代過程即梯度下降來優化學習過程。如下圖所示。因此僅僅更新一次或者說使用一個epoch是不夠的。

在這裡插入圖片描述
隨著epoch數量增加,神經網路中的權重的更新次數也在增加,曲線從欠擬合變得過擬合。

那麼,問題來了,幾個epoch才是合適的呢?

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

在這裡插入圖片描述
實際上,梯度下降的幾種方式的根本區別就在於上面公式中的 Batch_Size 不同。

在這裡插入圖片描述

相關文章