機器學習中的世代、迭代和批大小

yangbobor發表於2020-11-14

翻譯來源:https://medium.com/@ewuramaminka/epoch-iterations-batch-size-11fbbd4f0771

機器學習(ML)中的一些術語很容易被誤解或混淆。

為什麼呢

我的觀察是:大部分ML書籍或教程都沒有花時間在解釋這些名詞上面,而是更多的篇幅在他們討論的主題上,這樣會讓大部分人混淆。

在這篇短文裡面,我會花時間簡單講解一下ML中的Epoch和Iteration的主要區別。這裡已經假設各位讀者有人工神經網路的基礎,而且並不針對某一種特殊的ML種類。在我解釋之前,我們用一個非常相似的場景來作類比,希望這能幫助你理清頭緒!

假設有一個很好聽的音樂,有歌詞並且由6個小節組成。在第一次唱完一首歌(即1個Epoch),你也同時唱了了6個小節(即6個Iteration)。但是這不能保證你已經能不看歌詞重新唱這首歌了,因此你需要重複練習全曲(即Multiple Epochs)直到你會唱這首歌或者有自信你已經能獨自唱好這首歌的每個小節(即High learning acuracy)。

說回神經網路,在訓練一個神經網路之前我們有一個訓練資料集和一個用於擬合fit這個資料集的cost function(成本函式)。依據訓練集的特徵數(列)的多少,我們可以選擇低次或高次的多項式作為成本函式去擬合。之後我們可以通過計算梯度下降去優化我們的cost function。這是一種學習率為alpa的迭代優化演算法,用於使學習演算法的代價(cost)最小。在每個完整的訓練週期後,我們嘗試最小化梯度下降,直到我們達到可能的最低梯度下降(全域性最小或學習曲線的最小值)。

在全域性最小值下,我們可以確信,學習演算法已經達到了一個高水平的準確性,並足以對測試或其他未知資料進行預測。

如果我們的訓練資料集有1000條記錄,我們可以決定將它分成10個批(每批100條記錄——Batch Size為100)。因此,完成一個學習週期需要10個小節。另外,如果我們決定將1000個訓練集分成100批,那麼每個學習週期需要100個小節(每批次10條記錄——Batch Size為10)。

大家也都清楚了,這10或100個小節即Interation,在第10次或第100次小節訓練完之後,我們可以說完成了1次Epoch,也就是完成了一次訓練週期。每次Epoch結束之後,學習演算法就會比較和評估真實輸出和訓練集結果的差距,並優化學習引數,進行下一次訓練週期。由於不能保證梯度下降在第一個優化週期(Epoch)結束時會全域性優化或達到最佳優化,因此要達到理想的或較高的模型精度,往往需要幾個Epoch,而且Epoch的次數在不同的學習演算法中也不是固定的。

僅僅一個Epoch會導致欠擬合。但是,在達到全域性最小值後,如果Epoch次數太多,則會導致學習模型過擬合。理想情況下,正確的Epoch數量是學習模型達到最高準確度的時候。

分割Batch Size計算效率高,特別是在處理大量資料集時

雖然Epoch的概念仍然是優化學習演算法的基本概念,但它在學習模型(如人工神經網路或強化學習)中的具體應用可能因模型如何在每個週期後被修改以表現得更好而有所不同。

最後總結一下,Epoch是一個神經模型學習的整個訓練資料的完整週期。訓練資料可以分割成批,以增強計算能力。給定1000個資料集,它可以分為10批,即建立10次iterations。每批將包含100個資料集。因此,每個迭代的batch size 將是100。

相關文章