訓練輪次 是什麼?
Epoch:訓練輪次 的完整解釋
Epoch(訓練輪次)是模型完整遍歷一次訓練資料集的過程;訓練輪次數量影響模型效果,過多會造成過擬合,過少會導致欠擬合。
容易混淆
Epoch vs Iteration Epoch 是把整份資料看完一次,Iteration 是處理一個批次的更新步驟。
Epoch vs Batch Size Batch size 是一次餵多少資料,Epoch 是整份資料被看過幾輪。
Epoch vs Step Step 常常和 iteration 類似,指一次參數更新,不是完整看完資料集。
最關鍵的區別: Epoch 看「整體看了幾輪」,Iteration 和 Step 看「中間更新了幾次」。
記住這句就好
一輪是全資料看完一次,不是只跑一個批次。
實際案例
案例一:影像分類訓練 你把貓狗照片訓練 20 個 epoch,前幾輪準確率快速上升,後面開始變慢,這很正常。
案例二:早停法判斷 訓練到第 15 個 epoch 時,訓練集還在變好,但驗證集開始下滑,這通常是過擬合的訊號,應該考慮早停。
算法與應用
Epoch 數不是越大越好。太少,模型還沒學夠,容易欠擬合。太多,模型可能把訓練資料背太熟,開始過擬合。實務上常搭配驗證集、早停法和學習率調整,一起決定要訓練幾輪。
Epoch、Batch Size、Iteration 三者的關係
這三個詞常被搞混,其實關係是固定的算式:
每個 epoch 的 iteration 數 = 訓練樣本數 ÷ batch sizeEpoch(訓練輪次):整份訓練資料完整跑過一次。 Batch size(批次大小):一次餵給模型幾筆資料。 Iteration(迭代):更新一次模型權重,也就是跑完一個 batch。
舉例,訓練資料 10,000 筆、batch size 設 100:
| 項目 | 數量 |
|---|---|
| 1 個 epoch 的 iteration 數 | 100 |
| 跑 20 個 epoch 的總 iteration 數 | 2,000 |
| 權重被更新的總次數 | 2,000 |
所以「訓練 20 個 epoch」跟「訓練 2,000 步」在這個設定下講的是同一件事。論文寫 step 或 iteration、框架的進度條寫 epoch,換算就是上面這條式子。
該設幾個 epoch
沒有通用答案,因為它取決於資料量、模型大小與學習率。但判斷方法是固定的:看驗證集的誤差曲線。
驗證誤差還在往下掉,代表 epoch 不夠。驗證誤差開始往上翹而訓練誤差還在掉,代表已經開始過擬合,那個轉折點就是該停的地方。
實務上不用手動猜,直接開提早停止(early stopping):設一個耐心值,例如驗證誤差連續 5 個 epoch 沒有改善就停下來,並且回存表現最好的那一版權重。
微調(fine-tuning)預訓練模型時 epoch 通常很少,1 到 3 個就足夠,因為模型本來就已經學會大部分東西,跑太多輪反而會把原本的能力洗掉。
情境判斷
Q1(直覺題): 如果你把 10 萬筆資料切成 100 個批次,模型把這 100 個批次都跑完一次,這算幾個 Epoch?
→ 1 個 Epoch,因為整份資料已經完整看過一輪。
Q2(判斷題): 訓練集越跑越好,驗證集卻先升後降,這時候還要一直增加 Epoch 嗎?
→ 通常不要。這種情況多半是過擬合,應該考慮早停、正則化或調整資料與模型設定。
相關術語
常見問題
如果模型在幾個 Epoch 後就達到很高的準確率,還需要繼續訓練嗎?
不一定,要看驗證集表現。如果驗證集還在變好,可以繼續;如果驗證集開始變差,就沒必要硬撐。
如何選擇合適的 Epoch 數量?
最穩的做法是看驗證損失和驗證準確率,搭配早停法,不要只靠經驗亂猜。
訓練輪次和世代(Generation)有什麼關係?
沒有直接關係。Epoch 是訓練資料被掃過的次數,Generation 通常是生成模型輸出內容時用的詞,意思不同。