大学生的 AI 通识课⑦|过拟合与欠拟合:死记硬背与学得太浅
2026-10-03 · techsulian.com

阅读约 10 分钟 | 这是《人工智能概论》科普系列的第 7 篇。 上一篇《数据集的秘密:训练集、验证集、测试集》回答了“模型到底是在学会,还是在背答案”。这一篇,我们来看看模型在追求“举一反三”的路上,最容易掉进的两个坑。 期末考试前,老师发了一本包含 200 道例题的复习册。三位同学用了三种完全不同的复习方法: 小 A :只翻了翻目录,记住了几个最基本的
阅读约 10 分钟 | 这是《人工智能概论》科普系列的第 7 篇。
上一篇《数据集的秘密:训练集、验证集、测试集》回答了“模型到底是在学会,还是在背答案”。这一篇,我们来看看模型在追求“举一反三”的路上,最容易掉进的两个坑。
期末考试前,老师发了一本包含 200 道例题的复习册。三位同学用了三种完全不同的复习方法:
小 A :只翻了翻目录,记住了几个最基本的公式。结果 复习册上的题做不对,考试也考不好 。
小 B :把 200 道例题连同答案一字不落地背了下来。复习册上的题 道道全 对,可考试题目稍微换了个说法、改了个数字,他就不会了。 练习满分,考试翻车。
小 C :认真做了例题,但更注重理解每道题背后的原理和方法。复习册上偶尔也会错一两道,但 考试成绩最好 。
在机器学习里,小 A 叫作 欠拟合 ,小 B 叫作 过拟合 ,而小 C,就是我们想要的模型。
上一篇我们说,机器学习的终极目标是 泛化能力 ——举一反三。今天我们就来看看,模型在追求这个目标时最容易掉进的两个坑。
“拟合”(Fitting)这个词听起来很学术,其实意思很简单: 用一个模型(比如一条曲线)去贴合一堆数据。
假设我们记录了一些同学每天的学习时长和考试成绩,把它们画在坐标图上,得到一些散点。现在要画一条线,来描述“学习时长”与“成绩”之间的关系。我们可以画出三种线:
左图(欠拟合) :用一条几乎水平的直线,根本没反映出“学得越久、成绩越好”的趋势;
中图(刚刚好) :一条平滑的曲线,大致贴合数据,抓住了主要规律;
右图(过拟合) :一条弯弯绕绕的曲线, 精确地穿过了每一个点 ,看起来完美,却把数据中的偶然波动也当成了规律。
🐺 二、过拟合:把“噪声”当成了“规律”
现实中的数据总是带有 噪声 (Noise)——偶然的、随机的波动。比如某位同学学习时间很长,但考试那天恰好感冒了,成绩偏低。这个数据点反映的不是“学习时长与成绩的规律”,而是一次意外。
过拟合的模型会把这些意外也当作规律认真记下来。结果就是:
在训练集上表现极好,在新数据上表现很差。
说人话 :过拟合就是 “死记硬背,不求甚解” ,把个别现象当成了普遍规律。
去某个城市旅游,碰到一位出租车司机绕路,就断定“这个城市的人都不诚信”—— 用太少的样本得出了太复杂(太具体)的结论 ;
某次穿红色衣服考试考得很好,从此每次考试都穿红衣服—— 把偶然的巧合当成了因果规律 。
一个经典实验:它认的是“狼”,还是“雪”
2016 年,一组研究者在介绍模型解释方法的论文中,特意构造了这样一个实验:训练一个模型区分 哈士奇 和 狼 。模型的准确率看起来不错,但当研究者用工具查看模型到底“看”的是图片哪个部分时,发现它主要依据的是 背景里有没有雪 ——因为训练图片中的狼大多站在雪地里。
于是,一张站在雪地里的哈士奇照片,被模型自信地判为了“狼”。
这个模型没有学到“狼长什么样”,而是抓住了训练数据中一个 偶然的、与本质无关的特征 。这类问题常被称为 “捷径学习” (Shortcut Learning),它和过拟合一样,都会导致模型在新场景下“翻车”。
欠拟合正好相反: 模型太简单,或者学得太少,连训练数据中的基本规律都没有掌握。
在训练集上表现就很差,在新数据上当然也好不了。
说人话 :欠拟合就是 “囫囵吞枣,浅尝辄止” 。
用一条直线去描述一个明显弯曲的关系;
只用“面积”一个特征去预测房价,忽略了地段、房龄、学区等重要因素;
训练刚开始没多久就停下了,模型还没来得及学会。
相比之下,欠拟合比较容易发现(因为训练成绩就不好),也比较容易解决;而过拟合更隐蔽,也更常见,是机器学习实践中的“头号大敌”。
🔍 四、如何诊断看两个成绩的“差距”
还记得上一篇的 训练集 和 验证集 吗诊断过拟合和欠拟合,关键就是对比模型在这两者上的表现:
表 | 用“训练成绩”和“验证成绩”的差距来诊断(表中数字为示意数据)。
我们还可以画出训练过程中两个成绩的变化曲线:
训练初期:两条曲线都在下降,模型在“学到真东西”;
越过某个点之后:训练误差继续下降,验证误差却开始 回升 ——模型开始“死记硬背”了;
这个拐点,就是我们想要的 最佳点 。上一篇讲的 “提前停止” ,就是在这里按下暂停键。
对付欠拟合:让模型“学得更多、更深”
使用更复杂的模型 :比如从直线换成曲线,从浅层网络换成深层网络;
增加更有用的特征 :给房价模型加上地段、学区等信息;
1. 增加训练数据——最有效的“良药”
例题见得越多、越丰富,就越难靠死记硬背应付,只能去理解规律。回到“哈士奇与狼”的例子:如果训练集里有很多站在草地上的狼、站在雪地里的哈士奇,模型就没法再靠“看雪”来偷懒了。
2. 数据增强(Data Augmentation)——“无中生有”地扩充数据
真实数据不够时,可以对已有数据做变换,“造”出新样本。比如一张猫的照片,经过翻转、旋转、裁剪、调亮度,就能变成十几张“新”照片。模型由此学会: 无论猫朝左还是朝右、在明处还是暗处,它都是猫。
3. 正则化(Regularization)——给模型的“复杂度”加一个惩罚
这是对付过拟合最经典的方法。它的思想是:在训练目标中加入一项“惩罚”, 模型越复杂,惩罚越大 。于是模型不得不在“贴合数据”和“保持简单”之间寻找平衡。
打个比方 :写一篇议论文,要求观点正确,同时规定“字数越多扣分越多”。这样学生就不会堆砌无关的细节,而会用最简洁的语言抓住核心论点。
这背后是一条古老的哲学原则—— 奥卡姆剃刀 :“如无必要,勿增实体。”在同样能解释数据的情况下, 越简单的模型往往越可靠 。
4. Dropout——训练时随机“让部分神经元休息”
这是深度学习中常用的技巧:每次训练时,随机让网络中一部分神经元“暂停工作”。这样,网络就不能依赖某几个特定的神经元“死记”答案,而必须让知识分散在整个网络中。
打个比方 :一个项目小组,如果每次开会都随机有几个人请假,那么每个成员都得对整个项目有所了解,而不能全靠某一位“大神”。团队反而会变得更稳健。
5. 提前停止(Early Stopping)
如前文所说,在验证误差开始上升时停止训练。
直接选择一个更简单的模型,比如减少神经网络的层数或参数。
学术上,常用 偏差 (Bias)和 方差 (Variance)来描述这两种问题。我们用“射箭”来理解:
围绕靶心,但东一支西一支 —— 过拟合
箭很集中,但都偏离靶心 —— 欠拟合
偏差高 :模型有“系统性的偏见”,太简单,总是预测不准——对应 欠拟合 ;
方差高 :模型对训练数据太敏感,换一批数据,结果就大变样——对应 过拟合 。
一般来说,模型越简单,偏差越高、方差越低;模型越复杂,偏差越低、方差越高。二者此消彼长,这就是机器学习中著名的 偏差—方差权衡 (Bias-Variance Tradeoff)。
💡 拓展思考 :有趣的是,今天的大模型拥有数千亿个参数,远远超过传统理论认为“必然过拟合”的程度,泛化能力却依然很强。研究者还观察到,模型规模继续增大时,测试误差可能会“先升后降”,这被称为 “双下降” (Double Descent)现象。为什么“超大模型”没有陷入过拟合这仍是当前深度学习理论中的前沿问题。所以,偏差—方差权衡是理解传统机器学习的重要框架,但在深度学习中,它并不是故事的全部。
过拟合和欠拟合,不只是机器学习的问题,也是 我们每个人学习时的问题 :
只刷题不总结,容易 过拟合 ——题型一变就不会;
只看书不练习,容易 欠拟合 ——道理都懂,一做就错;
真正的学习,是在大量练习中 提炼出本质规律 ,做到举一反三。
从这个意义上说,训练一个好模型,和成为一个好学生,道理是相通的。
欠拟合是“学得太浅”,训练和测试都差;过拟合是“死记硬背”,训练很好、测试很差;我们追求的,是抓住本质规律、能够举一反三的模型。
一个模型在训练集上的准确率是 98%,在验证集上是 65%。它最可能出现了什么问题你会尝试哪些方法来改进
请举一个你在生活或学习中“过拟合”的例子:你曾经从少数几次经历中得出了什么“规律”,后来发现并不成立
周志华,《机器学习》第 2 章“模型评估与选择”(2.1 节“经验误差与过拟合”、2.5 节“偏差与方差”)
伊恩·古德费洛等,《深度学习》(俗称“花书”)第 5、7 章,人民邮电出版社
Marco Tulio Ribeiro et al., "Why Should I Trust You": Explaining the Predictions of Any Classifier , 2016.(“哈士奇与狼”实验出处)