AI 基础

什么是过拟合?

mm
将 Unite.AI 添加到您在 Google 上的首选来源

Overfitting 当模型捕获到在训练数据上异常有效的模式或噪声,但无法在新样本上泛化时,就会出现。过拟合的模型可能在训练集上误差极低,而在验证或真实环境中的表现则显著更差。

相反的问题是underfitting: 即使在训练集上,模型或训练过程也无法捕获足够的信号。良好的建模应在拟合度和泛化能力之间取得平衡,而不是追求完美的训练表现。

关键要点

  • 仅凭训练性能无法判断模型的泛化能力。
  • 早停应基于验证集的表现,绝不能在最终测试集上反复做决定。
  • 更多数据可能有帮助,但增加特征或模型容量也可能加剧过拟合。
  • 正则化、数据增强、交叉验证、泄漏防护以及合适的评估方法可针对不同原因进行处理。
Three panels showing underfit, appropriate fit, and overfit curves beside training and validation loss curves diverging after the optimal stopping point
过拟合表现为训练拟合程度与代表性留出数据上的性能之间的差距逐渐扩大。

拟合、欠拟合与过拟合

当模型的假设过于严格、特征遗漏重要信号、优化不足或训练不充分时,就会出现欠拟合。加入相关特征或提升容量可能有助于改善,但若仅盲目添加任意特征,则会增加噪声并导致过拟合。

当模型的有效容量相对于训练数据中的信息过大时,就会出现过拟合。例如,一个生成极小叶子的深层decision tree、一个紧随随机波动的多项式,或是记忆训练样本的神经网络。

训练、验证和测试数据的作用

  • 训练数据用于拟合模型参数。
  • 验证数据用于选择模型结构、超参数、阈值以及停止时机。
  • 测试数据在上述选择完成后提供最终的性能估计。

如果测试集被反复用于指导决策,它就会成为开发过程的一部分,进而不再提供无偏的最终估计。交叉验证可以更高效地利用有限数据,但所有预处理和特征选择必须在每个训练折内部完成。

早停

在训练过程中,训练损失通常会持续下降。验证损失可能在初期下降,随后因模型过度拟合训练噪声而上升。早停会保存验证目标最佳的检查点,或在验证指标在设定的耐心期内未提升时停止训练。

正确的检查点并非训练损失最低的那一个。早停和调参完成后,需要在独立的最终测试集上进行评估。

正则化方法

权重惩罚

L2 正则化或权重衰减抑制参数取值过大。L1 正则化则可促使系数稀疏。其效果取决于模型和优化器,例如 AdamW 将权重衰减与自适应更新解耦。

Dropout 与随机正则化

Dropout 在训练期间随机屏蔽激活。其他方法包括随机丢弃路径、扰动特征或平滑标签。这些技术会改变训练目标,推理时必须关闭或妥善处理。

数据增强

数据增强通过裁剪、旋转、噪声或改写等方式生成逼真的变体,且应保持标签不变。无效的变换可能改变标签并损害模型。对于视觉任务,Albumentations 等工具可帮助实现受控的增强流水线。

容量控制

使用更浅的树、较少的参数、特征选择、剪枝以及更简洁的假设空间可以降低方差。树的剪枝是基于准则的,而非随机去除已学习的细节。

数据泄漏可能表现为异常的性能

当在预测时不可获得的信息进入训练或评估阶段时,就会出现泄漏。常见例子包括在完整数据集上进行归一化拟合、在折间拆分重复记录、使用未来数据预测过去,或加入由目标变量衍生的特征。

泄漏并非普通的过拟合,但它会导致离线结果与实际部署之间出现同样误导性的差距。划分策略应遵循时间、身份、位置以及数据生成过程的约束。

分布漂移是另一类问题

模型即使能够在测试分布上实现泛化,仍可能在生产数据发生变化时失效。新设备、政策、人口、季节或对抗行为都可能改变输入与目标之间的关系。即便原始模型未出现过拟合,也需要进行监控和定期重新评估。

诊断过拟合

可利用学习曲线、交叉验证方差、子群指标、校准以及错误检查来诊断过拟合。如果训练和验证性能均差,则应关注欠拟合、特征、标签或优化问题;若训练表现良好而验证表现欠佳,则需在单纯收集更多数据之前,检查模型容量、泄漏、正则化以及数据代表性。

为什么会出现过拟合以及如何检测

过拟合发生在模型学习到能够降低训练误差但无法在目标总体上泛化的模式时。其原因包括相对于有效数据而言容量过大、标签噪声、重复实体、灵活的特征选择、泄漏以及在同一验证集上进行调参。训练与验证性能之间的差距扩大是常见证据,但即使差距较小,只要两个集合存在污染或与实际部署不符,也不能排除过拟合。通过不同数据量和容量的学习曲线可帮助区分方差与偏差。

泄漏尤其具有欺骗性:未来信息、重复样本、受试者重叠、在全部数据上进行的预处理,或元数据中编码的标签,都可能导致离线得分异常优秀。应在进行特征转换或增强之前,按部署时将会出现的新单位(患者、客户、机器、地点或时间)进行划分。选择特征、模型结构和阈值时,保持最终测试集封闭。如果团队反复检查测试结果,测试集就会沦为另一套验证集,需要更换或正式校正。

正则化、模型选择与生产漂移

通过使用更具代表性的数据、降低模型容量、权重衰减、Dropout、早停、数据增强、集成或符合领域结构的约束来降低过拟合。每种方法都有权衡:增强可能会扭曲标签,Dropout 会改变优化过程,集成会增加服务成本。交叉验证可估计选择的变异性,但分组或时间感知的折必须保持部署边界。应与简单模型进行比较,并报告跨折或随机种子的不确定性,而非只挑选表现最好的运行。

当输入、用户、激励或测量方式发生变化时,生产环境可能暴露出另一种泛化失效。需监控特征和预测分布、校准、子群结果以及延迟的真实标签。不要在未经审查的反馈上自动重新训练,因为模型的决策会影响其后看到的标签。要诊断失效是源于漂移、数据管道、政策变更还是目标本身无效。过拟合的控制依赖于实验设计和生命周期管理,而非单一的正则化设置。

案例演示:消除欺诈模型中的泄漏

最初的欺诈分类器因重复的卡片和商户事件随机出现在训练和测试行中,以及将数周后记录的拒付信息作为特征而得分异常高。团队重新构建每个特征的可用时间,剔除决策后的字段,按账户分组,并采用前向时间划分。性能急剧下降,但此时能够估计真实的决策。简单规则基线和学习曲线帮助确定所需的模型复杂度。

正则化和早停仅在历史折中进行调优。最终评估报告了在审查容量下的精确率、召回率、校准以及按欺诈类型和客户细分的成本。生产环境中,确认标签到达延迟且受审查交易的偏差影响,因此监控可将分数漂移与结果估计区分开来。重新训练使用已裁定的案例并在当前策略下回放。项目更倾向于接受较低但真实的分数,而不是无法在部署中存活的高泄漏分数。

实施证据与运营准备

生产决策需要的不仅是一次成功的演示。应明确预期用户、运行环境、输入输出、依赖关系、责任人以及每类关键失效的后果。调参前建立可复现的基线和带版本号的评估集。测试常规案例、边界条件、错误或缺失的输入、分布漂移、依赖故障、误用以及最可能被忽视的群体或环境。对任务质量进行衡量,同时关注校准或不确定性、延迟、吞吐量、资源成本、可访问性、隐私和安全。记录每一次转换和阈值,以便独立审查员能够复现结果并将证据与诱人的原型区分开来。

上线前,需明确发布、例外、变更、回滚和退役的授权人。采用分阶段发布,保留安全回退机制,并通过人为注入故障验证监控。运营遥测应展示输入质量、输出行为、模型或规则版本、依赖健康状况、人为干预以及已确认的结果,同时避免收集不必要的敏感数据。设定警报阈值和响应负责人,随后在部署后审查真实世界的证据,而不是假设离线性能会持续。每当数据来源、用户、模型、供应商、政策、硬件或目标发生变化时,都应重新评估。维护中的系统还需有文档化的恢复、事故学习、删除与保留流程,以及明确的停用或替换时机。

常见问题

简单模型会出现过拟合吗?

会。即使最终模型很简单,反复进行特征选择、阈值调优或在同一留出集上评估,也会导致开发过程出现过拟合。

更多的训练数据是否总能解决过拟合?

不会。更具代表性且标注正确的数据确实有助,但重复、偏倚、泄漏或领域外的数据可能并不能解决问题。学习目标和评估设计仍然至关重要。

主要参考文献

博客作者和程序员,专攻 Machine Learning 和 Deep Learning 领域。Daniel 希望帮助他人利用 AI 的力量为社会做好事。