过度拟合
了解如何识别、预防和解决机器学习中的过拟合问题。探索提高模型泛化和实际性能的技术。
过拟合是机器学习(ML)中的一个基本概念,当模型学习训练数据中的细节和噪声,以至于对模型在新的未见数据上的性能产生负面影响时,就会出现过拟合。实质上,模型是在记忆训练集,而不是学习基本模式。其结果是,模型在训练数据上获得了很高的准确率,但却无法泛化到真实世界的数据中,因此在实际应用中并不可靠。实现良好的泛化是人工智能开发的首要目标。
如何识别过度拟合
在训练过程中,通常通过监控模型在训练数据集和单独验证数据集上的表现来识别过度拟合。训练集的损失函数值持续下降,而验证集的损失却开始增加,这就是过拟合的常见迹象。同样,如果训练精度不断提高,而验证精度在随后的历时中趋于平稳或恶化,那么模型很可能是过拟合。TensorBoard等工具是可视化这些指标并及早诊断此类问题的绝佳工具。Ultralytics HUB等平台也可以帮助跟踪实验和评估模型,以检测过度拟合。
过度拟合与欠拟合
过拟合和欠拟合是机器学习中常见的两个问题,它们代表了模型的泛化失败。它们本质上是相反的问题。
- 过度拟合:模型对于数据来说过于复杂(高方差)。它捕捉到了训练数据中的噪声和随机波动,导致在训练过程中表现出色,但在测试数据中表现不佳。
- 拟合不足:模型过于简单,无法捕捉数据的基本结构(高偏差)。它在训练和测试数据上的表现都很差,因为它无法学习相关模式。
深度学习所面临的挑战是找到正确的平衡,这一概念通常用偏差-方差权衡来描述。
过度拟合的真实案例
- 自动驾驶汽车物体检测:试想一下,使用一个仅包含白天晴天图像的数据集,为自动驾驶汽车训练一个Ultralytics YOLO模型。该模型可能会在强光下高度专业化地检测行人和汽车,但在夜间、雨天或雾霾天气下就会严重失灵。它已经过度适应了训练数据的特定光照和天气条件。使用Argoverse这样的多样化数据集有助于避免这种情况。
- 医学图像分析:对CNN模型进行训练,以便从一家医院的核磁共振扫描图像中检测肿瘤。该模型可能会无意中将该医院特定核磁共振成像仪的特定伪影或噪声模式与肿瘤的存在联系起来。当在不同医院、不同机器的扫描结果上进行测试时,其性能可能会大幅下降,因为它过度适应了原始训练集的噪声,而不是肿瘤的实际生物标记物。这是人工智能在医疗保健等领域的一个关键问题。
如何防止过度拟合
可以采用几种技术来解决过度拟合问题,并建立更稳健的模型。
- 获取更多数据:增加训练数据集的规模和多样性是防止过度拟合的最有效方法之一。更多的数据有助于模型学习真正的基本模式,而不是噪音。您可以探索各种Ultralytics 数据集,以加强您的项目。
- 数据扩充:这包括通过创建现有数据的修改副本来人为扩展训练数据集。采用的技术包括随机旋转、缩放、裁剪和颜色偏移。Ultralytics YOLO内置数据增强技术,可提高模型的鲁棒性。
- 简化模型架构:有时,对于给定的数据集来说,模型过于复杂。使用参数较少的简单架构可以防止它记住数据。例如,选择较小的模型变体,如YOLOv8n 与 YOLOv8x,对较小的数据集来说是有益的。
- 规范化:这种技术会根据模型的复杂程度对损失函数进行惩罚,从而抑制大的模型权重。常见的方法有 L1 正则化和 L2 正则化,您可以在这里了解更多相关信息。
- 辍学:正则化的一种特殊形式,即在每个训练步骤中忽略一部分随机神经元。这将迫使网络学习冗余表征,并防止任何一个神经元变得太有影响力。此处将详细解释 "忽略 "概念。
- 早期停止:这包括监控模型在验证集上的性能,并在验证性能开始下降时立即停止训练过程,即使训练性能仍在提高。更多详情,请参阅Keras 中关于早期停止的解释。
- 交叉验证:通过使用K 折交叉验证等技术,将数据分成多个折叠,并在不同的子集上对模型进行训练和验证。这样可以更准确地估计模型的泛化能力。
- 模型修剪:这包括从训练有素的网络中删除对其性能影响不大的参数或连接,从而降低复杂性。Neural Magic等公司提供专门用于修剪模型的工具,以实现高效部署。