返回 Ultralytics 词汇表
Overfitting
探索机器学习中过拟合的原因和症状。学习如何使用 Ultralytics YOLO26 防止高方差并改善泛化能力。
在机器学习中,当模型对训练数据学习得过于彻底,以至于捕获了噪声和随机波动,而非底层数据分布时,就会发生过拟合。过拟合模型并不会学习适用于新未见数据的通用模式,而是实际上记住了训练集中的特定示例。这导致模型在训练数据上表现优异,但在现实场景中泛化能力较差。这通常被称为“高方差”,意味着模型的预测会根据用于训练的特定数据集而产生显著变化。
为什么会发生过拟合#
过拟合的主要原因是模型复杂度相对于可用数据量过高。如果neural network太大(即拥有过多的层或参数),它就会轻易记住训练样本。其他促成因素包括:
- 训练数据不足:小型数据集可能包含更广泛人群中不存在的虚假相关性。在有限数据上训练的模型容易学习到这些偶然的模式。
- 数据噪声与异常值:training data中存在大量噪声或缺乏代表性的异常值会误导模型,使其调整内部参数以拟合异常情况而非真实信号。
- 训练时间过长:训练过多的epochs会使模型持续优化权重,直到完全拟合训练集中的噪声。这通常通过validation data来进行监控。
过拟合与欠拟合#
区分过拟合与underfitting非常重要。过拟合涉及学习过多的细节(包括噪声),而欠拟合则指模型过于简单,根本无法捕捉到底层数据的结构。欠拟合模型在训练数据和新数据上的表现都很差,通常会导致高偏差。平衡这两种极端情况被称为bias-variance tradeoff。
预防过拟合#
工程师使用多种技术来缓解过拟合并提高模型的鲁棒性:
- 正则化:L1/L2 正则化或添加dropout layers等技术会在训练期间引入惩罚或随机性,防止模型过度依赖特定的特征。
- 早停法:监控验证集上的loss function允许在未见数据的性能停止提升时中止训练,即使训练准确率仍在持续上升。
- 数据增强:使用data augmentation人工增加训练集的大小和多样性,这会使模型更难死记硬背确切的图像。
- 交叉验证:使用k-fold cross-validation等技术可确保在不同的数据子集上测试模型,从而为其性能提供更可靠的评估。
现实世界中的示例#
在生产环境中部署 AI 时,过拟合可能会产生严重后果:
- 医疗诊断:在AI in healthcare中,一个用于检测皮肤癌的模型可能会过拟合训练图像中呈现的光照条件或尺子标记。当部署在具有不同光照或设备的诊所时,该模型可能会因为依赖了不相关的背景线索而无法正确识别恶性病变。
- 金融预测:股票价格预测模型可能会过拟合由特定、不可重复事件(如一次性的经济危机)驱动的历史市场趋势。此类模型很可能无法准确预测未来的股票走势,因为它记住了过去的异常情况,而不是学习了基本的市场动态。
代码示例:使用 YOLO26 进行早停#
使用Ultralytics Platform或本地训练脚本,你可以通过设置早停耐度来防止过拟合。如果在设定的轮次内验证适应度没有提升,这会停止训练。
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)相关概念#
- 泛化:模型适应并在新的、以前未见过的数据上表现良好的能力,这与过拟合正好相反。
- 交叉验证:一种用于评估统计分析结果如何generalize到独立数据集的技术。
- 正则化:通过在给定的训练集上适当地拟合函数来减少误差并避免过拟合的方法。






