返回 Ultralytics 术语表
Overfitting
探索机器学习中过拟合的原因和症状。了解如何使用 Ultralytics YOLO26 防止高方差并改善泛化能力。
在机器学习中,当模型过度学习训练数据,捕捉到噪声和随机波动,而不是底层数据分布时,就会发生过拟合。过拟合模型不会学习适用于全新、未见过数据的通用模式,而是有效地记住训练集中的具体示例。这会使模型在训练数据上表现出色,但在真实场景中的泛化能力较差。过拟合通常被描述为“高方差”,这意味着模型的预测结果会因用于训练的具体数据集不同而产生显著变化。
过拟合的成因#
过拟合的主要原因是,相对于可用数据量而言,模型复杂度过高。如果一个神经网络过大,也就是包含过多层或参数,就很容易记住训练示例。其他影响因素包括:
- 训练数据不足:小型数据集可能包含在更广泛总体中不存在的虚假相关性。在有限数据上训练的模型容易学习到这些偶然模式。
- 数据噪声和异常值:训练数据中的高水平噪声或不具代表性的异常值可能会误导模型,使其调整内部参数以拟合异常,而不是真实信号。
- 训练时长过长:训练过多epoch会使模型持续优化权重,直到拟合训练集中的噪声。这通常通过验证数据进行监控。
过拟合与欠拟合#
区分过拟合和欠拟合非常重要。过拟合涉及学习过多细节(包括噪声),而欠拟合则发生在模型过于简单、完全无法捕捉数据底层结构时。欠拟合模型在训练数据和新数据上的表现都很差,通常会导致高偏差。在这两个极端之间取得平衡称为偏差-方差权衡。
防止过拟合#
工程师会使用多种技术来缓解过拟合并提升模型的稳健性:
- 正则化:L1/L2 正则化或添加dropout 层等技术会在训练过程中引入惩罚或随机性,防止模型过度依赖特定特征。
- 提前停止:在验证集上监控损失函数,可以在模型对未见数据的表现不再提升时停止训练,即使训练准确率仍在上升。
- 数据增强:使用数据增强人为增加训练集的规模和多样性,使模型更难记住图像的精确内容。
- 交叉验证:使用k 折交叉验证等技术,确保模型在不同的数据子集上接受测试,从而更可靠地估计其性能。
现实世界中的示例#
在生产环境中部署 AI 时,过拟合可能带来严重后果:
- 医疗诊断:在医疗保健领域的 AI中,用于检测皮肤癌的模型可能会对训练图像中的光照条件或尺子刻度产生过拟合。当部署到光照或设备不同的诊所时,该模型可能无法正确识别恶性病变,因为它依赖了无关的背景线索。
- 金融预测:股票价格预测模型可能会对由某个特定且不可重复事件(例如一次性经济危机)推动的历史市场趋势产生过拟合。由于该模型记住了过去的异常情况,而没有学习市场的基本动态,因此很可能无法准确预测未来的股票走势。
代码示例:使用 Ultralytics YOLO26 提前停止#
使用Ultralytics Platform或本地训练脚本时,你可以设置提前停止耐心值来防止过拟合。如果验证适应度在设定数量的 epoch 内没有提升,训练就会停止。
from ultralytics import YOLO
# Load the YOLO26 model (latest generation)
model = YOLO("yolo26n.pt")
# Train with early stopping enabled (patience=50 epochs)
# If validation metrics don't improve for 50 epochs, training stops.
results = model.train(data="coco8.yaml", epochs=100, patience=50)相关概念#
- 泛化:模型适应新数据并在此前未见过的数据上取得良好表现的能力,这与过拟合相反。
- 交叉验证:用于评估统计分析结果如何泛化到独立数据集的技术。
- 正则化:通过在给定训练集上适当地拟合函数来减少误差,并避免过拟合的方法。









