了解机器学习中的纪元--它们如何影响模型训练、防止过拟合,以及利用Ultralytics YOLO 优化性能。
一个 epoch 代表机器学习算法对整个训练数据集进行一次完整循环。 在此过程中,模型有机会基于数据中的每个样本 精确更新一次其内部参数。在深度学习领域, 单次训练通常不足以使神经网络 有效学习复杂模式。因此训练过程通常包含多个 epoch, 使学习算法能够通过迭代优化理解能力, 并最小化预测结果与实际真实值之间的误差。
训练的主要目标是调整模型权重以最小化特定损失函数。优化算法(如随机梯度下降法(SGD) Adam )利用每个 epoch 期间计算的误差来指导这些调整。随着 epoch 次数的增加,模型通常会从高误差状态(随机猜测)过渡到低误差状态(已学习模式)。
然而,选择正确的 epoch 数量是超参数调优的关键环节。
初学者常将"epoch"与相关术语混淆。理解这些概念的层级关系对于正确配置训练循环至关重要:
所需的训练 epoch 数量会因任务复杂度和数据规模的不同而产生巨大差异。
使用现代框架时,例如 Ultralytics YOLO时, 在训练命令中直接定义 epoch 数量即可。借助 Ultralytics 工具,可可视化每个 epoch 的损失曲线 以确定最佳停止点。
以下示例演示了在训练YOLO26模型时如何设置纪元计数:
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次独立运行。在每个运行周期中,模型执行
前向传播 和
反向传播 以提升其检测能力。