是什么
过拟合(overfitting)指的是分析结果与某一组特定数据对应得过于紧密、过于精确,因而可能无法拟合新增数据,也无法可靠地预测未来的观测 [1]。Google 的机器学习词条用更直白的说法表达了同一件事:模型在训练数据上表现良好,但在新的、未见过的数据上表现很差 [2]。过拟合的对立面是泛化(generalisation)。如果一个模型能准确预测新数据,就说明它没有过拟合 [2]。
一个便于理解的比方是备考。把练习卷的标准答案逐字背下来的学生,可以完美复现那张卷子上的答案,但题目稍有变化就无从下手;真正掌握了方法的学生,对练习卷和新题都能给出大致合理的解答。前者拟合的是具体的例子,而不是例子背后的规律。
怎么发生的
过拟合通常发生在模型的参数多于数据所能合理支撑的规模时 [1]。当模型的容量足够大,它可以绕着所给样本的种种特殊性弯折,而不是去抓住那些能迁移到新样本上的规律。Google 把缺乏代表性的训练数据和过于复杂的模型列为常见成因 [2]。这两种成因指向同一个方向:如果样本不能很好地代表真实世界,或者模型复杂到足以把样本记住,那么拟合到的就是样本本身,而不是样本所来自的世界。
偏差、方差与两种失败模式
过拟合的模型偏差(bias)低、方差(variance)高,欠拟合的模型则偏差高、方差低 [1]。偏差低意味着模型足够灵活,能紧贴训练数据;方差高意味着这种紧贴并不稳定,换一批样本就会得到明显不同的模型。欠拟合是它的镜像:模型过于僵硬,抓不住结构,于是以同样的方式持续出错。偏差—方差权衡(bias-variance trade-off)是同时描述这两种失败模式的标准框架 [1],这也是过拟合通常与欠拟合放在一起讨论、而不是孤立讨论的原因。
怎么发现
过拟合表现为模型在验证集上的表现远差于在训练集上的表现 [1]。验证样本没有参与拟合,因此两者分数之间的明显差距,说明拟合效果无法迁移到新数据。同样的差距也可以在训练过程中观察:在泛化曲线(generalization curve)上,过拟合表现为训练集和验证集的损失曲线彼此分离,验证损失转而上升,而训练损失继续下降 [2]。
怎么应对
常见的对策包括模型比较、交叉验证(cross-validation)、正则化(regularisation)、早停(early stopping)、剪枝(pruning)、贝叶斯先验(Bayesian priors)、dropout、集成方法(ensemble methods)和特征工程(feature engineering)[1]。清单之所以长,是因为问题有多个切入点:有的方法限制模型能复杂到什么程度,有的方法改变数据的呈现方式或有效样本量,还有的方法用模型没见过的数据来检验它的行为。对抗过拟合往往需要比原本所需更多的数据 [1],因此数据收集是补救工作的一部分,而不只是前置准备。
局限与风险
过拟合不只是建模上的麻烦。过拟合的模型可移植性可能更差,而且有讨论指出,对训练数据的记忆可能泄露敏感信息,并援引了围绕 Stable Diffusion 和 GitHub Copilot 的诉讼 [1]。当一个模型吸收的是单个训练样本的细节而非一般结构时,这些细节会随模型一起保留下来,并可能出现在它的输出里。这就把一个统计上的失败变成了涉及法律与隐私的问题,也是人们如此密切关注训练表现与新数据表现之间差距的原因之一。
注释与来源
- Overfittinghttps://en.wikipedia.org/wiki/Overfitting
- Overfittinghttps://developers.google.com/machine-learning/crash-course/overfitting/overfitting
引用本页: 过拟合. TellWorld, https://www.tellworld.net/zh/learn/overfitting. 更新于 2026-11-07