🏠 总目录📚 本教程 11 · 没有免费的午餐 ← →
📑 本页目录(点开跳转)

11 · 没有免费的午餐

⏱ 22 分钟 | ⭐ 一个被到处误引的定理


🎯 一句话

在所有可能的问题上平均,任何两个学习算法的表现完全相同。 听起来像是在说"机器学习没用"——但它真正的含义恰恰相反。


📐 一、定理说了什么

结果对照

考虑【所有可能的目标函数】f(即所有可能的输入→输出映射)
对任意两个算法 A 和 B:
Σ (A 在 f 上的表现) = Σ (B 在 f 上的表现)
所有f 所有f
在所有问题上取平均,随机猜和最先进的算法【一样好】

💡 为什么会这样(一个具体的构造)

因果链

假设某算法 A 在问题 P 上表现好:
· 训练集上的点,A 学对了
· 训练集【之外】的点,A 也猜对了 ✅
现在构造问题 P':
· 训练集完全一样(同样的输入,同样的标签)
· 但训练集之外的所有点,标签【恰好相反】
A 在 P' 上看到的训练数据一模一样
所以它会输出【完全相同】的模型
但这次训练集外的点全错了 ❌
⭐ 每个"A 表现好"的问题,都能配一个"A 表现差"的问题
正负抵消

🔑 本质:在训练集之外,你没有任何信息。 任何"泛化"都必须依赖某种关于世界的假设——而这个假设可能是错的。

📊 一个小例子(能自己数出来)

信息关系

3 个可能的输入 {a, b, c},二分类
所有可能的目标函数:2³ = 8 个
训练集:只见过 a→1
剩下 b、c 的标签有 4 种组合:(0,0) (0,1) (1,0) (1,1)
和训练集一致的目标函数有 4 个
任何算法,不管它猜 b、c 是什么,
在这 4 个函数上【恰好对 2 个、错 2 个】 ⭐
平均正确率永远是 50%

⚠️ 二、三种常见的误读

❌ 误读 ✅ 真相
「所以选什么算法都无所谓」 恰恰相反:因为没有普适最优,选对算法才更重要
「机器学习是不可能的」 现实问题不是从"所有可能函数"里均匀抽的,它们有结构
「这只是理论玩具」 它有实际推论(见下),且量化了归纳偏置的价值

关键前提:所有目标函数等概率出现

结果对照

但真实世界的问题有【强烈的结构】:
· 相似的输入通常有相似的输出(平滑性)
· 简单的解释通常更可能对(奥卡姆剃刀)
· 图像有局部相关性、文本有语法结构
· 物理规律是连续的、可微的
真实问题只占"所有可能函数"里【极小极小】的一撮
在那一撮上,某些算法确实系统性更好 ✅

💡 一个量化的感受(用第 9 章的例子):

对照

n = 20 个布尔特征时:

所有可能的布尔函数:2^(2²⁰) ≈ 10^315,653 个

而"人类会关心的函数"(简单的、有结构的)

可能只有其中的 10^-315,000 比例

⭐ NFL 在整个空间上成立,但我们只活在那一小撮里


💡 三、四个真实的实践推论

① 归纳偏置不是缺点,是必需品

因果链

没有偏置→没有泛化能力(NFL 的直接推论)
有偏置→在符合偏置的问题上好,在不符合的上差
⭐ 所以选模型 = 选一个【和你的问题匹配的偏置】

🔗 第 9 章 PAC 给了它的定量版本: 学"任意布尔函数"要 700 万样本,学"合取式"只要 226 个。 限制假设空间 = 大幅降低样本需求。偏置就是这么值钱。

② 「最好的算法」这句话必须带条件

对照

❌ "XGBoost 是最好的算法"

✅ "XGBoost 在中小规模表格数据上通常最好"

↑ 必须说清在什么问题分布上

🔗 基础教程第 19 章挑战 B 让你亲手跑出这张表——NFL 就是那个项目的理论解释: 不同数据类型上排名会变,这不是意外,是必然。

③ 交叉验证是在"赌"问题的结构

关键信息

CV 有用的前提:假设【测试数据和训练数据同分布】
这个假设本身就是一种归纳偏置
分布漂移时 CV 会骗你

🔗 基础教程第 5、11 章的"离线好线上崩",根因在这。

④ 领域知识是你相对模型的最大优势

信息关系

模型只能从数据里学
你可以【直接把关于问题的知识编码进偏置里】
例:
· 知道信号有周期性→加傅里叶特征
· 知道结果必须非负→用泊松损失(第 1 章)
· 知道图像有平移不变性→用 CNN
· 知道时间顺序重要→用 TimeSeriesSplit(第 5 章)
⭐ 这些都是"免费"的偏置注入,比调参有效得多

🎭 四、一个有趣的推论:算法的"专长"是守恒的

要点

一个算法在某类问题上变强,必然在另一类问题上变弱

三个具体例子:

调整 变好的场景 变差的场景
加强正则化 真实函数确实简单时 ✅ 真实函数确实复杂时 ❌
CNN 的平移不变假设 图像分类 ✅ 位置本身携带关键信息的任务 ❌(如医学影像里"病灶在左肺还是右肺")
树模型的轴对齐切分 特征有独立含义时 ✅ 决策边界是斜线时 ❌(要切很多刀才能逼近)

💡 所以调参本质上是在做什么:

你在把模型的"专长"挪到你的问题所在的那个区域。 这就是为什么调参必须用你自己的数据,而不是抄别人的超参。


🧭 五、这一章该带走的心态

流程图

❌ 悲观解读:「反正没有最优算法,随便选吧」
✅ 正确解读:
① 没有万能算法→理解你的问题结构比追新模型重要
② 归纳偏置是你的朋友→主动选择匹配的假设
③ 任何"通用最强"的宣称都值得怀疑→问它在什么分布上测的
④ 领域知识 = 更好的归纳偏置→这是你相对模型的优势
⑤ AutoML 也逃不掉→它只是在【你给的搜索空间】里搜

💡 关于第 ⑤ 点:AutoML 看起来像"万能",但它的搜索空间是人定的—— 那个搜索空间就是它的归纳偏置。 NFL 对它同样成立。


🔗 六、和站内其他章的关系

相关的地方 NFL 的解释
基础教程第 2 章"没有免费的午餐" 本章是它的严格版
第 9 章:限制假设空间降低样本需求 NFL 的定量对偶面
基础教程第 14 章归纳偏置权衡 NFL 是它的理论根据
Kaggle 第 21 章任务决策路径 不同任务用不同方法的必然性
基础教程挑战 B 四种解法对决 亲手验证 NFL
调参要用自己的数据 在挪动算法的"专长区"

✅ 检查点

  1. NFL 定理的严格表述是什么?能构造一个例子说明为什么成立吗?
  2. 用 3 个输入的小例子算一下:见过 a→1 后,任何算法的平均正确率是多少?
  3. 它的关键前提是什么?为什么现实中不满足?
  4. 为什么说 NFL 让"选对算法"更重要而不是更不重要?
  5. NFL 和 PAC 的样本复杂度界是什么关系?
  6. 举一个「归纳偏置在某场景是优势、在另一场景是负担」的例子。
  7. AutoML 能逃过 NFL 吗?
👀 答案
  1. 在所有可能的目标函数上平均,任意两个算法的期望表现相同。构造:若算法在问题 P 上猜对了训练集外的规律,可以构造 P'——训练集完全相同但训练集外标签全部相反,算法会输出相同模型却全错,正负抵消。
  2. 50%。与训练集一致的目标函数有 4 个(b、c 的标签有 4 种组合),任何猜法都恰好对 2 个错 2 个。
  3. 前提是所有目标函数等概率出现。现实问题有强烈结构(平滑性、简单性、局部相关性、连续可微),只占所有可能函数中极小的一撮。
  4. 因为不存在普适最优,必须根据问题结构主动选择匹配的算法/偏置——选择本身成了关键决策。
  5. 互为对偶:NFL 说"没有偏置就没有泛化",PAC 定量地说"限制假设空间能把样本需求从 700 万降到 226"。偏置的代价和收益,两个定理各说了一半。
  6. CNN 的平移不变:图像分类上是优势;但"病灶在左肺还是右肺"这类位置本身携带信息的任务上是负担。
  7. 不能。它的搜索空间是人定的,那个搜索空间就是它的归纳偏置。

🛑 可以停在这里

⚡ 走神救援

先记住这几件事

下一节 👉 12-反向传播的完整推导.md

打卡记录保存在你的浏览器里,首页能看到总进度