跳到主要内容

一个模型在做过的题上考 99 分,一点也不算数——学生背答案也能考 100 分。这一章给「真学会了」立一套判据。

泛化:训练集上做得好不算数

1. 这一章讲什么

三件事: 「训练集上好、新数据上差」这个落差怎么拆解、怎么治; 理论上,「大概学对」一件事需要多少样本; 以及两条泼冷水的定理——为什么不存在「放之四海皆优」的算法。

它在全书链条里的位置: 第 05 章留下了全书最大的账: 期望风险和经验风险之间有一个差。这一章就是来还这笔账的。 后面每一章讲的手段——正则化、集成、数据增强、早停—— 全是这一章某一块错误的特效药。

需要第 05、06 章。 第 5 节用到第 03 章的期望与方差。

2. 顶层全景

训练误差低、新数据误差高

▼ 这个差(泛化误差)从哪来?
┌─────┴──────────────────────────┐
拆成三块: 理论那一边:
① 偏差 平均起来离最优模型多远 要多少样本才够? ── PAC 学习
② 方差 换批数据模型抖多厉害 有没有万能算法? ── 没有免费午餐
③ 噪声 谁也去不掉的部分 相似性谁说了算? ── 丑小鸭定理
│ │
▼ ▼
各有各的药: 结论:一切「好坏」都依赖
偏差高 → 加能力 人塞进去的前提,
方差高 → 减复杂度、加数据、集成 那份前提叫归纳偏置
数据少 → 交叉验证

一句话链条: 训练好不算数 → 差可以拆成三块、逐块治 → 理论上样本需求和模型复杂度挂钩 → 而「什么叫好」本身, 永远带着人塞进去的主观假设。

3. 先看现象:训练集 99%、验证集 72%

书里有一道习题,数字值得抄在墙上:一个二分类模型,训练集准确率 99%, 验证集准确率 72%1

这两个数摆在一起,就是第 05 章定义的过拟合: 模型把训练集背了下来——包括里面的噪声和巧合—— 换一批没见过的题,立刻现原形。

反过来,训练集上错误率就很高,那是欠拟合:模型能力不够, 该学的规律没学到。

书里给的自查口诀很直接2:

训练集错误率高 ──▶ 偏差太高(欠拟合)
药:增加特征、提高模型复杂度、减小惩罚系数

训练集低、验证集高 ──▶ 方差太高(过拟合)
药:降低复杂度、加大惩罚系数、引入先验、
以及把多个模型的结果平均(集成)

「偏差」「方差」这两个词第一次出现了——它们到底在量什么,第 5 节拆开讲。 先把治「太复杂」的总开关讲清楚。

4. 怎么给「太复杂」上税

第 06 章已经见过正则化的样子:在目标函数后面挂一项 λ‖w‖², λ 越大,参数被按得越小。这一章要回答的是:它凭什么治过拟合?

书里的逻辑链是:复杂度惩罚直接压低模型的有效复杂度3。 参数被按小之后,模型能摆出的形状变少——直线扭不动了, 自然背不下训练集里的噪声。第 6 节会看到, λ 调大的同时,偏差升、方差降,是一个此消彼长的旋钮。

惩罚项本身也有选择,书里点了最常用的两种3:

惩罚项效果直观
ℓ2(各参数平方和)参数整体变小大家都往零靠一点
ℓ1(各参数绝对值之和)参数稀疏:很多直接变成 0等于顺带做了特征选择

第 06 章还证明了这件事的另一张脸:加惩罚项 = 给参数加先验。 所以「上税」不是权宜之计,它是「简单模型更可信」这条信念的数学形式—— 第 8 节的奥卡姆剃刀会回来收这条线。

5. 错误可以拆成三块

这是全章的理论核心。 书里以回归为例、用平方损失, 把一个模型的期望错误精确地拆成了三项4

先立两个基准。最优模型 f*(x):给定 x 后 y 的真实条件期望—— 在平方损失下,这是理论上能达到的最好5。 但即便用上最优模型,仍然有一个损失 ε 去不掉—— 它来自数据本身的噪声,无法通过优化模型来减少6

接下来是关键的一步:同一个算法,换一批训练集,学出来的模型就不一样7。 所以考察一个「算法」而不是一个「模型」时,要对所有可能的训练集取平均。 在这一层平均之下,期望错误分成4:

期望错误 = 偏差² + 方差 + 噪声 ε

偏差 「平均模型」离最优模型有多远
── 量的是拟合能力(欠拟合的病)

方差 每换一批训练数据,学出来的模型彼此差多少
── 量的是稳不稳(过拟合的病)

噪声 数据自带的随机性,神仙也去不掉

这里要当场说清一件事(第 03 章的读者会卡住): 这里的方差和第 03 章的方差是同一个数学量——都是「围绕均值的散布」—— 但被测量的对象不是数据,而是模型:同一算法换一批训练数据, 学出来的那一堆模型,它们在某个输入上的预测值散得多开7。 书里对偏差的定义也在这个口径上:「不同训练集上的平均性能和最优模型的差异」8

书里用四张靶图把四种组合摆开9:低偏差低方差是理想; 高偏差低方差是「很稳但不会」;低偏差高方差是「会但不稳」(数据少时最常翻车); 双高是最差。

三条可以直接用的推论10:

  1. 方差一般随训练样本增加而减少——数据多了,换一批再学,模型也差不到哪去;
  2. 复杂度增加,偏差减、方差增——λ 就是那个交换旋钮: λ 变大,复杂度降,方差降、偏差升;λ 过大,总错误反而回升;
  3. 最优模型并不一定是偏差曲线和方差曲线的交点——别拿两条线的交点当处方。

最后书里坦白:这套分解在实际操作中难以直接衡量—— 我们手上只有一批训练集,算不出那个「对所有训练集的平均」11。 它的价值是分析框架:看到症状,知道该往哪个方向调。

6. 数据少的时候,怎么可靠地比模型

问题: 验证集只有一份,恰好分得「好说话」或「难说话」怎么办?

书里给的答案是交叉验证:把数据切成 K 个互不重叠的子集, 每次留一份当验证集、其余 K−1 份训练,轮 K 次,把 K 次结果取平均12。 每份数据都恰好当过一次考官,运气成分被平均掉了。

两条纪律书里写得很清楚:K 一般大于 3; 交叉验证用来选模型和调超参数,如果另有独立测试集,最终成绩仍在测试集上算12。 它不改变第 05 章「测试集只用一次」的纪律,只是让「选」这一步本身更可靠。

7. 学一个「大概对」的东西,要多少样本

问题: 能不能在训练之前就算笔账:这个问题、这个模型族,大概要多少数据?

这就是计算学习理论干的事,其中最基础的一条叫 PAC 学习13。 它先给第 05 章那笔账一个名字:泛化错误 = 期望风险 − 经验风险14。 大数定律只保证样本无穷多时这个差趋于 015——现实中永远学不到「完全正确」。

PAC 的提法是退而求其次:以 1−δ 的把握,学到泛化错误不超过 ε 的模型16。 「大概」(1−δ)加「近似正确」(ε),合起来就是 PAC(Probably Approximately Correct)。

在这个口径下能反推出样本账,书里给了公式17:

需要的样本数 N ≥ 1/(2ε²) × (log|假设空间大小| + log(1/δ))

读法比公式本身重要:要求越严(ε 越小),样本需求按平方增长; 模型族越大(log|F| 越大),样本需求也越大。 书里由此给出的结论只有一句:模型越复杂,泛化能力越差; 要达到同样的泛化水平,越复杂的模型需要的样本数量越多17

这句结论解释了第 4 节那个旋钮为什么必须存在—— 控制复杂度不是审美偏好,是样本有限时的数学必然。

8. 没有一招鲜

接下来是两条泼冷水的定理。它们不教怎么做,教的是「别指望什么」。

没有免费午餐定理(1997 年由 Wolpert 和 Macready 提出)18: 对所有可能的问题取平均,任何两个优化算法都一样好—— 一个算法在某些问题上比随机搜索强,就必然在另一些问题上比随机搜索更差19

它对机器学习的推论只有一句:不能脱离具体问题来谈论算法的优劣19。 谁宣称自己的模型「在所有问题上都更好」,谁就在和这条定理对着干。

奥卡姆剃刀:14 世纪逻辑学家奥卡姆的威廉留下的法则——「如无必要,勿增实体」20。 它在机器学习里的版本:两个性能相近的模型,选更简单的那个20。 它的一种形式化叫最小描述长度:最好的模型,是「模型的编码长度 + 用它编码数据的编码长度」之和最小的那个21—— 而贝叶斯视角下,这正好就是最大后验(第 06 章)的另一套说法21

注意这两条和 PAC 说的是同一件事的三个侧面: 模型族要小(第 7 节)、没有万能算法(这一条)、简单的优先(这一条)。 整章读到这里,「简单」已经从审美变成了数学。

9. 相似性没有客观标准

最后一条最哲学,也最重要。

丑小鸭定理(渡边慧,1969):「丑小鸭与白天鹅之间的区别, 和两只白天鹅之间的区别一样大」22。 初看违反常识,书里的解释一针见血:区别大不大,取决于你选什么标准—— 看体型,丑小鸭和白天鹅差得远;看基因,丑小鸭和它父母的差别, 反而小于它父母和其他天鹅的差别22

结论:世界上不存在相似性的客观标准,一切相似性的标准都是主观的22。 「这两个样本像不像」没有上帝视角的答案——所以模型必须先被人告知「该按什么标准看」。

这份被主动塞进去的主观,就叫归纳偏置(塞进模型里的先验偏好)23。 书里给的例子正好预告了后面半本书24:

卷积网络 假设:相邻位置相关、同一模式可出现在任何位置(第 13 章)
循环网络 假设:数据有顺序依赖(第 15 章)
Transformer 假设:任意两个位置之间都可能有依赖(第 21 章)
图网络 假设:节点的表示应当受它的邻居影响(第 23 章)

这一章的全部内容在这里收口: 没有免费午餐定理说没有万能算法, 丑小鸭定理说没有客观标准——所以设计模型的全部艺术, 就是为你的问题选对那份主观假设。 归纳偏置在贝叶斯学习里还有一个名字:先验25

10. 主走查:一条直线和一条会扭的曲线

输入: 还是第 06 章那三个点 (−1, 0)、(0, 1)、(1, 2)。 真实的规律就是 y = x + 1(这是演示设定)。

两个候选模型,训练误差都是 0:

模型 A(一次): f(x) = x + 1
模型 B(三次): f(x) = 2x³ − x + 1 ← 这条曲线是为演示凑的

验证 B 确实穿过三个点:f(−1) = −2+1+1 = 0,f(0) = 1,f(1) = 2−1+1 = 2。 训练误差:0 比 0,平手。 只看训练集,两个模型无法区分。

来一个新点 (2, 3),差距爆开:

模型 A 预测 f(2) = 3 误差 0
模型 B 预测 f(2) = 2×8−2+1 = 15 误差 12

训练误差一分不差,新数据上天差地别——这就是「训练集上做得好不算数」 在最小的例子上的样子。模型 B 的偏差是 0(它族里包含真实规律), 但方差极大:三个点稍微挪一挪,穿过它们的那条三次曲线就面目全非。

再看 λ 旋钮。 用第 06 章加了噪点 (2, 4) 的那组四个点:

λ解出的 [w, b]和真实直线 [1, 1] 比读法
0[1.30, 1.10]斜率被噪点拽高方差大:噪点说了算
1[1.16, 0.94]离真实最近噪点的影响被压住了
10[0.57, 0.42]离真实反而远了偏差大:连真规律一起被压

λ 从 0 到 1,方差降;从 1 到 10,偏差升——第 5 节那个交换旋钮,在数字上的样子。 (严格说,偏差和方差要对许多批训练集取平均才算得出来,我们只有一批, 所以这三个数只能按方向读——这正是书里「难以直接衡量」的意思11。)

11. 作者的判断与证据

书里给了完整推导的: 偏差-方差分解是严格的等式(平方损失下), 最优模型 f*(x) = E[y|x]、三项各自的名字与含义,全部有公式45

书里给了理论出处的: PAC 样本复杂度公式引自教科书定理17; 没有免费午餐定理标注了 1997 年 Wolpert 与 Macready18; 丑小鸭定理标注了渡边慧 196922

书里坦白的: 偏差-方差分解「在实际操作中难以直接衡量」11—— 它是分析工具,不是计算工具;「最优模型并不一定是偏差曲线和方差曲线的交点」10—— 书里特意把这句容易误读的话写了出来。

我们要补一句(不是书里的): 偏差-方差分解是在平方损失下严格成立的; 书里的边注也说结论「同样适用于分类问题」,但那是在定性意义上说的, 分类损失下没有同样干净的等式。

12. 边界与局限

PAC 的界很松。 那个公式里的「假设空间大小」对连续参数模型要换成 更精细的容量度量(书里没展开,指向统计学习理论的专著)。 它的价值是方向(复杂度 ↔ 样本量——训练数据的条数),不是数值。

交叉验证不解决分布变化。 它假设各折同分布;时间序列、领域迁移时, 「随机切 K 份」本身就是错的切法——书里在独立同分布那节已经点过这个限。

这一章只说了「怎么判断」和「往哪调」,没给具体手段。 降低方差的工程菜单(正则化全家、暂退法、数据增强、集成)分别在第 19、28 章。

13. 可带走的

  1. 训练集 99%、验证集 72% = 过拟合,训练误差什么都证明不了;
  2. 自查口诀:训练集差是偏差问题,训练集好验证集差是方差问题;
  3. 期望错误 = 偏差² + 方差 + 噪声,前两块有药,噪声没有;
  4. 这里的方差量的是「模型稳不稳」,不是数据散不散;
  5. 复杂度是偏差与方差之间的交换旋钮,λ 就是它的把手;
  6. 数据少就用交叉验证选模型,但最终成绩仍在独立测试集上算;
  7. PAC 的账:要求越严样本需求按平方涨,模型族越大样本需求越大;
  8. 没有免费午餐:不存在对所有问题都更好的算法——宣称相反的,都在违反定理;
  9. 丑小鸭定理:相似性没有客观标准,「像不像」永远取决于选的那把尺子;
  10. 归纳偏置就是人选的那把尺子——选好它,是模型设计的全部艺术。

14. 原文地图

主题原书章原文位置
训练 99%、验证 72%第2章 机器学习概述text/03-ch02.txt:1335(搜「在训练集上的准确率为 99%」)
两种症状各自的药第2章 机器学习概述text/03-ch02.txt:937(搜「提供了一种分析途径」) · text/03-ch02.txt:967(搜「通过多个高方差模型的平均来降低方差」)
ℓ1 与 ℓ2第2章 机器学习概述text/03-ch02.txt:315(搜「正则化是最常见的实现形式」) · text/03-ch02.txt:316(搜「使得参数有一定稀疏性」)
偏差-方差分解第2章 机器学习概述text/03-ch02.txt:873(搜「那么最优的模型为」) · text/03-ch02.txt:903(搜「在不同训练集上的平均性能」)
噪声不可消第2章 机器学习概述text/03-ch02.txt:881(搜「无法通过优化模型来减少」)
不同训练集不同模型第2章 机器学习概述text/03-ch02.txt:890(搜「不同的训练集会得到不同的模型」)
四种组合与三条推论第2章 机器学习概述text/03-ch02.txt:926(搜「随着训练样本的增加而减少」) · text/03-ch02.txt:929(搜「偏差减少而方差增大」) · text/03-ch02.txt:936(搜「并不一定是偏差曲线和方差曲线的交点」)
交叉验证第2章 机器学习概述text/03-ch02.txt:327(搜「互不重叠的子集」)
PAC 学习与泛化错误第2章 机器学习概述text/03-ch02.txt:1178(搜「可能近似正确」) · text/03-ch02.txt:1182(搜「泛化错误」)
样本复杂度公式第2章 机器学习概述text/03-ch02.txt:1224(搜「越复杂的模型需要的样本」)
没有免费午餐定理第2章 机器学习概述text/03-ch02.txt:1235(搜「Wolpert」) · text/03-ch02.txt:1241(搜「不能脱离具体问题来谈论算法的优劣」)
奥卡姆剃刀与最小描述长度第2章 机器学习概述text/03-ch02.txt:1251(搜「勿增实体」) · text/03-ch02.txt:1257(搜「编码长度最小」) · text/03-ch02.txt:1267(搜「模型 𝑓 的编码长度」)
丑小鸭定理第2章 机器学习概述text/03-ch02.txt:1279(搜「一切相似性的标准都是主观的」)
归纳偏置第2章 机器学习概述text/03-ch02.txt:1289(搜「称为归纳偏置」) · text/03-ch02.txt:1293(搜「局部性和平移不变性」) · text/03-ch02.txt:1297(搜「经常称为先验」)

Footnotes

  1. 出处:「第2章 机器学习概述」第 1335 段(text/03-ch02.txt:1335,搜「在训练集上的准确率为 99%」)。 这是习题 2-2 的题干:「某二分类模型在训练集上的准确率为 99%,在验证集上的准确率为 72%。 请分析其可能原因,并给出至少三种改进方法。」

  2. 出处:「第2章 机器学习概述」第 937 段(text/03-ch02.txt:937,搜「提供了一种分析途径」) 与第 966 段(text/03-ch02.txt:966,搜「加大正则化系数、引入先验等方法来缓解」)。 原文:「当训练集上的错误率比较高时……可以通过增加数据特征、提高模型复杂度、 减小正则化系数等操作来改进。当模型在训练集上的错误率比较低,但验证集上的错误率比较高时…… 可以通过降低模型复杂度、加大正则化系数、引入先验等方法来缓解。」 集成降方差见第 967 段(搜「通过多个高方差模型的平均来降低方差」)。

  3. 出处:「第2章 机器学习概述」第 315 段(text/03-ch02.txt:315,搜「正则化是最常见的实现形式」) 与第 316 段(text/03-ch02.txt:316,搜「使得参数有一定稀疏性」)。 原文:「在线性模型和神经网络中,ℓ2 正则化是最常见的实现形式之一…… ℓ1 范数的引入通常会使得参数有一定稀疏性。」 2

  4. 出处:「第2章 机器学习概述」第 865 段(text/03-ch02.txt:865,搜「bias」)。 分解式 R(f) = (bias)² + variance + ε 见公式(2.75)~(2.78),同页。 边注:本节以回归问题为例,但其结论同样适用于分类问题。 2 3

  5. 出处:「第2章 机器学习概述」第 873 段(text/03-ch02.txt:873,搜「那么最优的模型为」)。 原文:「最优的模型为 f*(x) = E[y|x],即给定 x 后 y 的条件期望。」 2

  6. 出处:「第2章 机器学习概述」第 881 段(text/03-ch02.txt:881,搜「无法通过优化模型来减少」)。

  7. 出处:「第2章 机器学习概述」第 890 段(text/03-ch02.txt:890,搜「不同的训练集会得到不同的模型」)。 原文:「在实际训练一个模型 f(x) 时,训练集 D 是从真实分布上独立同分布地采样出来的 有限样本集合。不同的训练集会得到不同的模型。」 2

  8. 出处:「第2章 机器学习概述」第 903 段(text/03-ch02.txt:903,搜「在不同训练集上的平均性能」)。 原文:「第一项为偏差,是指一个模型在不同训练集上的平均性能和最优模型的差异, 可以用来衡量一个模型的拟合能力。第二项是方差,是指一个模型在不同训练集上的差异, 可以用来衡量一个模型是否容易过拟合。」

  9. 出处:「第2章 机器学习概述」第 919 段(text/03-ch02.txt:919,搜「四种偏差和方差组合情况」)。 图 2.8 用文字转述在正文,四张靶图的读法与原书一致。

  10. 出处:「第2章 机器学习概述」第 926 段(text/03-ch02.txt:926,搜「随着训练样本的增加而减少」)、 第 929 段(text/03-ch02.txt:929,搜「偏差减少而方差增大」) 与第 936 段(text/03-ch02.txt:936,搜「并不一定是偏差曲线和方差曲线的交点」)。 2

  11. 出处:「第2章 机器学习概述」第 937 段(text/03-ch02.txt:937,搜「提供了一种分析途径」)。 原文:「偏差和方差分解给机器学习模型提供了一种分析途径,但在实际操作中难以直接衡量。」 2 3

  12. 出处:「第2章 机器学习概述」第 327 段(text/03-ch02.txt:327,搜「互不重叠的子集」)。 原文:「把原始数据集划分为 K 个互不重叠的子集,每次选 K−1 个子集作为训练集, 剩下的一个子集作为验证集,共进行 K 轮训练与验证,并将 K 次验证结果取平均。 需要注意的是,交叉验证通常用于模型选择和超参数调整;如果有独立测试集, 最终结果仍应在测试集上评测。」 2

  13. 出处:「第2章 机器学习概述」第 1178 段(text/03-ch02.txt:1178,搜「可能近似正确」)。 原文:「计算学习理论是机器学习的理论基础,其中最基础的理论就是 可能近似正确(Probably Approximately Correct,PAC)学习理论。」

  14. 出处:「第2章 机器学习概述」第 1182 段(text/03-ch02.txt:1182,搜「泛化错误」)。 原文:「期望错误和经验错误之间的差异,称为泛化错误。 泛化错误可以衡量一个机器学习模型是否可以很好地泛化到未知数据。」

  15. 出处:「第2章 机器学习概述」第 1192 段(text/03-ch02.txt:1192,搜「趋近于期望风险」)。

  16. 出处:「第2章 机器学习概述」第 1205 段(text/03-ch02.txt:1205,搜「近似正确」)。 两部分定义:「近似正确」指泛化错误小于界限 ε;「可能」指以 1−δ 的概率学到这样的假设。

  17. 出处:「第2章 机器学习概述」第 1224 段(text/03-ch02.txt:1224,搜「越复杂的模型需要的样本」)。 公式见(2.84):N(ε,δ) ≥ (1/2ε²)(log|F| + log(1/δ))。 原文:「模型越复杂,即假设空间 F 越大,模型的泛化能力越差。 要达到相同的泛化能力,越复杂的模型需要的样本数量越多。」 2 3

  18. 出处:「第2章 机器学习概述」第 1235 段(text/03-ch02.txt:1235,搜「Wolpert」)。 原文:「没有免费午餐定理是 1997 年由 Wolpert 和 Macready 在最优化理论中提出的。」 2

  19. 出处:「第2章 机器学习概述」第 1240 段(text/03-ch02.txt:1240,搜「比纯随机搜索算法更差」) 与第 1241 段(text/03-ch02.txt:1241,搜「不能脱离具体问题来谈论算法的优劣」)。 2

  20. 出处:「第2章 机器学习概述」第 1251 段(text/03-ch02.txt:1251,搜「勿增实体」)。 原文:「奥卡姆剃刀……『如无必要,勿增实体』……如果有两个性能相近的模型, 我们应该选择更简单的模型。」 2

  21. 出处:「第2章 机器学习概述」第 1257 段(text/03-ch02.txt:1257,搜「编码长度最小」) 与第 1267 段(text/03-ch02.txt:1267,搜「模型 𝑓 的编码长度」)。 原文:「−log p(f) 和 −log p(D|f) 可以分别看作模型 f 的编码长度和 在该模型下数据集 D 的编码长度。」 2

  22. 出处:「第2章 机器学习概述」第 1275 段(text/03-ch02.txt:1275,搜「丑小鸭与白天鹅之间的区别」) 与第 1279 段(text/03-ch02.txt:1279,搜「一切相似性的标准都是主观的」)。 边注:这里的「丑小鸭」是指白天鹅的幼雏;渡边慧(1910~1993), 美籍日本学者,理论物理学家,也是模式识别的最早研究者之一。 2 3 4

  23. 出处:「第2章 机器学习概述」第 1289 段(text/03-ch02.txt:1289,搜「称为归纳偏置」)。 原文:「很多学习算法经常会对学习的问题做一些假设,这些假设就称为归纳偏置。」

  24. 出处:「第2章 机器学习概述」第 1293 段(text/03-ch02.txt:1293,搜「局部性和平移不变性」)。 原文:「卷积神经网络假设数据具有局部性和平移不变性,循环神经网络假设数据具有序列依赖性, Transformer 假设序列中任意位置之间都可能存在依赖关系, 图神经网络假设节点的表示应当受邻居影响。选择合适的归纳偏置是模型设计的重要环节。」

  25. 出处:「第2章 机器学习概述」第 1297 段(text/03-ch02.txt:1297,搜「经常称为先验」)。