Epoch
了解机器学习中的 epoch 是什么及其如何影响模型训练。探索优化方法、避免过拟合,并轻松训练 Ultralytics YOLO26。
Epoch 代表机器学习算法对整个 训练数据集 的一次完整遍历。在此过程中,模型有机会根据数据中的每个样本更新其内部参数恰好一次。在 深度学习 环境下,单次遍历通常不足以让 神经网络 有效学习到复杂的模式。因此,训练过程通常涉及多个 Epoch,使学习算法能够迭代地优化其理解,并最大限度地减小其预测结果与实际真值之间的误差。
Link to this sectionEpoch 在优化中的作用#
训练的主要目标是调整 模型权重 以最小化特定的 损失函数。优化算法(例如 随机梯度下降 (SGD) 或 Adam 优化器)会利用每个 Epoch 中计算出的误差来指导这些调整。随着 Epoch 数量的增加,模型通常会从高误差状态(随机猜测)转变为较低的误差状态(已学习模式)。
然而,选择正确的 Epoch 数量是 超参数调优 的一个关键环节。
- Epoch 过少: 这可能导致 欠拟合,即模型尚未捕获数据中潜在的趋势。
- Epoch 过多: 这通常会导致 过拟合,即模型记住了训练噪声,而不是泛化到新数据。为了防止这种情况,开发者通常会监控 验证数据 上的性能,并采用 提前停止 等技术,在泛化能力不再提升时停止训练。
Link to this sectionEpoch 与 Batch 与 Iteration 的区别#
初学者常会将“Epoch”与相关术语混淆。理解这些概念的层级对于正确配置 训练循环 至关重要:
- Epoch: 对完整数据集的一次完整遍历。
- Batch(批次): 同时处理的数据集子集。由于数据集通常太大,无法一次性完全放入 GPU 内存 中,因此它们会被划分为由 批次大小 (batch size) 定义的较小组。
- Iteration(迭代): 对模型权重的一次更新。如果数据集有 1,000 张图像,且批次大小为 100,则需要 10 次迭代才能完成一个 Epoch。
Link to this section实际应用#
所需的 Epoch 数量因任务的复杂性和数据规模而异。
- 医学图像分析: 在 医学图像分析 中,例如在 MRI 扫描中检测肿瘤,准确性至关重要。为此类任务训练的模型通常需要运行数百个 Epoch。这种广泛的训练可确保 卷积神经网络 (CNN) 能够识别出区分恶性组织与健康组织的细微异常,从而可能挽救生命。
- 自动驾驶: 对于 自动驾驶汽车,目标检测模型必须可靠地识别行人、标志和其他车辆。训练这些稳健的系统通常涉及 COCO 或 Objects365 等海量数据集。尽管数据集规模庞大,模型仍需要多个 Epoch 才能收敛到在各种天气和光照条件下都能良好泛化的方案。
Link to this section使用代码管理训练周期#
使用像 Ultralytics YOLO 这样的现代框架时,定义 Epoch 数量是训练命令中一个简单的参数。像 Ultralytics Platform 这样的工具可以帮助可视化每个 Epoch 的损失曲线,以确定最佳的停止点。
以下示例展示了在训练 YOLO26 模型时如何设置 Epoch 计数:
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train the model for 50 epochs
# The 'epochs' argument determines how many times the model sees the entire dataset
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)在此代码片段中,epochs=50 参数指示训练引擎对 coco8.yaml 数据集循环 50 次。在每个周期中,模型执行 前向传播 和 反向传播 以优化其检测能力。






