---
title: "訓練輪次（Epoch）"
slug: epoch
language: zh-TW
source: https://aiterms.tw/terms/epoch
updated_at: 2026-07-29
tags: [模型訓練, 深度學習]
ipas_term: false
---

# 訓練輪次（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 size`
>
> **Epoch（訓練輪次）**：整份訓練資料完整跑過一次。
> **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 嗎？
>
> → 通常不要。這種情況多半是過擬合，應該考慮早停、正則化或調整資料與模型設定。

### 常見問題
> **Q：如果模型在幾個 Epoch 後就達到很高的準確率，還需要繼續訓練嗎？**
> 不一定，要看驗證集表現。如果驗證集還在變好，可以繼續；如果驗證集開始變差，就沒必要硬撐。
>
> **Q：如何選擇合適的 Epoch 數量？**
> 最穩的做法是看驗證損失和驗證準確率，搭配早停法，不要只靠經驗亂猜。
>
> **Q：訓練輪次和世代（Generation）有什麼關係？**
> 沒有直接關係。Epoch 是訓練資料被掃過的次數，Generation 通常是生成模型輸出內容時用的詞，意思不同。

### 相關術語
> - **批次大小**：讀完這個再看它，可以理解每次更新吃多少資料
> - **學習率**：跟 Epoch 一起決定訓練走多快
> - **梯度下降**：Epoch 裡每次更新參數都會用到它
> - **過擬合**：Epoch 開太多時最常見的風險
> - **欠擬合**：Epoch 太少時最容易出現的問題

---

來源：https://aiterms.tw/terms/epoch
快查頁：https://aiterms.tw/terms/epoch
最後更新：2026/07/29
深度解說：https://aiterms.tw/learning/what-is-epoch