Epoch
Epoch把所有数据过一遍
Epoch(训练轮次)是机器学习训练中的基本计量单位,指模型对整个训练数据集完成一次完整遍历——包含正向传播与反向传播。选择合适的 epoch 数,是在「训练不足」与「过度拟合」之间寻找最优平衡的核心决策。
概述
Epoch 是神经网络训练循环的外层计数单位,决定模型「看」同一份数据多少遍。
- 完整遍历:训练集按 mini-batch 切分后,所有批次全部处理完一轮即构成一个 epoch
- 参数更新次数:同一 epoch 内的 step 数 = 训练样本总数 ÷ batch size
- 反复遍历:训练 N 个 epoch,意味着每条样本被用来更新参数 N 次
- 历史地位:1986 年反向传播算法普及后,epoch 逐渐成为几乎所有训练脚本的标准外层循环单位
工作原理
每个 epoch 开始时,训练框架通常对数据执行随机打乱(shuffle),然后依次处理各批次。
- Shuffle:避免批次顺序引入系统性偏差,使梯度估计更无偏
- 验证评估:epoch 结束时在验证集上计算损失与指标,观察泛化趋势
- 学习率调度:许多调度策略(如 StepLR、CosineAnnealing)以 epoch 为粒度执行衰减
- 检查点保存:通常在每个 epoch 结束后保存模型权重,便于回滚至最优版本
与相邻概念的区别
Epoch、step、iteration 三词经常混用,含义却不同。
- Epoch vs Step:一个 step 对应处理一个 mini-batch 的一次参数更新;一个 epoch 包含多个 step
- Epoch vs Iteration:iteration 在不同文献中有时指单步更新,有时指 epoch 本身,需结合上下文判断
- Epoch vs Token 数:大语言模型预训练更常以「训练 token 数」衡量进度,因数据量极大,往往不足一个 epoch 模型已充分收敛
- Epoch vs FLOPs:跨实验比较时,FLOPs(浮点运算次数)比 epoch 更公平,因 batch size 不同会导致同等 epoch 下计算量相差悬殊
局限与误区
epoch 数量本身不能代表训练质量,存在几个常见陷阱。
- 过拟合风险:epoch 过多会导致验证损失反弹,模型开始「死记」训练集答案而丧失泛化能力
- 欠拟合风险:epoch 过少则模型尚未充分学习,验证集表现也偏差
- 需配合 Early Stopping:应监控验证指标,在最佳 checkpoint 处提前终止,而非跑满固定 epoch 数
- 大模型场景弱化:预训练数据量极大时,epoch 概念退居次要,step 数与 token 数成为主要进度指标
- 误用比较:不同 batch size 的实验若只用 epoch 数横向对比,会产生误导,应同时报告 step 数或等效计算量
应用场景
epoch 在不同规模与任务类型的训练中扮演不同角色。
- 小/中规模监督学习:图像分类、文本分类、推荐系统等任务中,epoch 是最常见的训练计划单位,通常配合验证集监控与 early stopping 使用
- 迁移学习与微调:预训练模型已有强先验,通常仅需 1–5 个 epoch;epoch 数选择更敏感,过拟合风险更高
- 强化学习:epoch 含义有所不同,通常指从环境采集一批经验后对策略执行的多轮更新,与监督学习定义有本质差异
- 教学与入门:epoch 是讲解训练循环最直观的入口概念,几乎所有深度学习入门课程都以它为核心切入点
发展脉络
- 1986:Rumelhart、Hinton 与 Williams 发表反向传播算法论文,epoch 作为「训练集遍数」的概念随之确立并广泛沿用
- 2012:AlexNet 在 ImageNet 竞赛中以 epoch 报告训练结果,进一步固化该惯例
- 2018–2019:BERT(2018)、GPT-2(2019)等大规模预训练模型出现,训练进度开始改用 step 数和 token 数描述
- 2020 年代:主流大语言模型预训练(GPT-3、LLaMA 等)完全以 token 数计量进度;epoch 主要保留在下游微调与小规模实验中
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「把所有数据过一遍」
- 「机器学习基础概念」
- 「跟 Epoch 是一回事吗」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
🎯 考点练习
含该术语的高频面试题,含标准答案与追问。
- 初级概念高频查看详解 →
Epoch、Batch 与 Iteration 有什么区别?
Epoch=全部数据过一遍;Batch=一次更新用的一小批样本;Iteration=一个batch的一次更新。
- 初级概念查看详解 →
早停(Early Stopping)如何防止过拟合?
监控验证集指标,在其不再改善(超过 patience)时停训并回退最优权重,限制过拟合。
- 中级概念高频查看详解 →
Batch Normalization 的作用是什么?
对 mini-batch 特征做归一化,缓解内部协变量偏移,加速收敛,有一定正则效果。
- 高级概念查看详解 →
在 PyTorch 中创建神经网络模型的步骤有哪些?
PyTorch 建模范式:定义 nn.Module 子类实现 forward → 准备 DataLoader → 选 loss 和 optimizer → 写训练循环(zero_grad、forward、backward、step)→ 验证与保存 checkpoint。
延伸阅读
从知识库精选 2 篇文章,帮助深入理解该术语。
