机器学习数学推导(一):绪论与数学基础

机器为什么能从有限的数据中学到普适的规律?本章从第一性原理出发,系统推导学习理论的数学骨架——问题形式化、损失函数、PAC 框架、VC 维、偏差-方差分解与无免费午餐定理。

本章内容#

2005 年,Google Research 在公开评测中证明:仅用原始双语语料训练的统计翻译模型,竟能超越语言学家数十年精心设计的规则系统。这一结论令当时的专家颇感不适,却在数学上令人振奋——一个从未被告知语言规则的系统,只要有足够多的例子,依然能自行还原这些规则。这是为什么?

机器学习数学推导(一):绪论与数学基础 — 章节概览图

答案并非工程技巧,而是一个定理。本章将从第一性原理出发,构建一套数学框架,解释何时能从数据中学习、需要多少数据,以及任何算法的根本能力边界究竟在哪里。

读完本章后,你将能够:

  1. 将学习问题形式化为假设类上的概率优化问题。
  2. 阐述并推导有限假设类的 PAC 可学习性条件。
  3. 利用 VC 维将该结论推广至线性分类器、神经网络等无限假设类。
  4. 将任意预测器的测试误差分解为偏差、方差与不可约噪声。
  5. 借助“没有免费午餐”(No Free Lunch)定理,阐明为何每个成功的算法都必然携带某种归纳偏置(inductive bias)。

前置知识:微积分(导数、积分、Taylor 展开)、初等概率(期望、方差、贝叶斯公式、独立性),以及熟练阅读数学符号的能力。无需预先了解学习理论。


学习问题的轮廓#

三大类问题#

在接触任何定理之前,先明确整体图景。本系列几乎所有的机器学习问题都可归入以下三类之一:

三类学习问题

  • 监督学习:给定样本对 $(x, y)$ ,目标是根据 $x$ 预测 $y$ 。其中,分类对应离散的 $y$ ,回归对应连续的 $y$ ,是最经典的两种情形。
  • 无监督学习:仅有输入 $x$ ,任务是从中发现内在结构——如聚类、低维流形或密度估计——无需外部标签。
  • 强化学习:智能体在环境中选择动作,并接收标量奖励信号。由于数据由智能体自身策略生成,其统计分析比监督学习更为复杂。

本章聚焦于监督学习场景,因为 PAC 学习、VC 维、偏差-方差分解等奠基性结果在此最为清晰。稍加调整后,这套工具也能推广至其他两类问题。

数学形式化#

我们假设存在一个未知的联合分布 $\mathcal{D}$ ,定义在输入空间 $\mathcal{X}$ 和输出空间 $\mathcal{Y}$ 上。一个学习算法是从 $\mathcal{D}$ 中独立同分布(i.i.d.)抽取有限训练样本 $S = \{(x_i, y_i)\}_{i=1}^m$ ,并返回一个假设函数 $h: \mathcal{X} \to \mathcal{Y}$ 的过程。该假设的质量通过损失函数来衡量。

定义 1(损失函数):损失函数是任意可测映射 $\ell: \mathcal{Y} \times \mathcal{Y} \to \mathbb{R}_{\geq 0}$ ,它将预测值 $h(x)$ 与真实值 $y$ 映射为一个非负惩罚 $\ell(h(x), y)$

$$L_{\mathcal{D}}(h) \;=\; \mathbb{E}_{(x,y)\sim \mathcal{D}}\bigl[\ell(h(x), y)\bigr]. \tag{1}$$

这是我们真正关心的量:模型在与训练数据同分布的新样本上的平均损失。

$$L_S(h) \;=\; \frac{1}{m}\sum_{i=1}^{m} \ell(h(x_i), y_i). \tag{2}$$

这是我们能够直接计算的量。

统计学习的核心悖论:我们优化的是 $L_S$ ,但最终被评判的却是 $L_{\mathcal{D}}$ 。本章几乎所有定理,本质上都在刻画 $L_S(h)$$L_{\mathcal{D}}(h)$ 在何种条件下、以何种速率趋于一致。

监督学习器的三个组成部分#

任何监督学习算法都由三元组 $(\mathcal{H}, \ell, \mathcal{A})$ 决定:

  • 假设类 $\mathcal{H}$ :算法允许输出的函数集合。$\mathcal{H}$ 越大,表达能力越强,但统计控制也越困难。
  • 损失函数 $\ell$ :将预测质量转化为可优化的数值。
  • 算法 $\mathcal{A}$ :从样本到假设的映射,即 $\mathcal{A}: (\mathcal{X} \times \mathcal{Y})^m \to \mathcal{H}$

贯穿本系列的两类典型算法是:

  • 经验风险最小化(ERM)$\;h_{\text{ERM}} = \arg\min_{h\in\mathcal{H}} L_S(h)$
  • 结构风险最小化(SRM)$\;h_{\text{SRM}} = \arg\min_{h\in\mathcal{H}} \bigl[L_S(h) + \Omega(h)\bigr]$ ,其中 $\Omega$ 是对模型复杂度的惩罚项。

ERM 是最自然的起点,而 SRM 才是我们实践中真正使用的策略。至于为何需要 $\Omega$ ,等到偏差-方差分解揭示过拟合本质时,答案便水落石出。

损失函数的选择:回归与分类的代理损失#

损失函数的选择绝非表面功夫——它会直接影响优化景观、统计效率,甚至最终的最优解。

常见损失函数

对于回归问题,设残差 $r = y - h(x)$ ,常见损失如下:

损失名称公式特性
平方损失(MSE)$r^2$光滑、强凸,但对离群点敏感;贝叶斯最优预测器为 $\mathbb{E}[Y\mid X]$
绝对损失(MAE)$\lvert r\rvert$对离群点鲁棒,但在 $r=0$ 处不可导;贝叶斯最优预测器为条件中位数。
Huber 损失$\tfrac12 r^2$$\lvert r\rvert \leq \delta$ ,否则 $\delta(\lvert r\rvert - \tfrac{\delta}{2})$在零点附近呈二次型,尾部呈线性,兼顾 MSE 的光滑性与 MAE 的鲁棒性。

对于二分类问题,设标签 $y \in \{-1, +1\}$ ,间隔 $m = y \cdot h(x)$ ,常见损失如下:

损失名称公式应用场景
0-1 损失$\mathbb{1}[m \leq 0]$我们最终关心的指标,但直接最小化是 NP-hard。
Hinge 损失$\max(0,\, 1 - m)$支持向量机(SVM);是 0-1 损失的凸上界,次梯度稀疏。
对数损失 / 交叉熵$\log(1 + e^{-m})$逻辑回归、神经网络分类器;光滑,且输出可校准为概率。
指数损失$e^{-m}$AdaBoost;对错分样本惩罚最重,但对标签噪声敏感。

表中所有分类代理损失都是 0-1 损失的凸上界,且关于间隔 $m$ 单调不增。Bartlett、Jordan 和 McAuliffe(2006)证明:只要代理损失满足“分类一致性”(classification-calibrated),那么在数据量趋于无穷时,最小化该损失所得的分类器将收敛到贝叶斯最优解。

为何需要理论:泛化间隙#

用一个 100 次多项式去拟合 10 个带噪声的数据点,可以做到 $L_S = 0$ ,但在任何新输入 $x$ 上的预测都会灾难性失败。$L_{\mathcal{D}}(h) - L_S(h)$ 的大小称为泛化间隙,其行为正是接下来两节的核心议题。

泛化间隙:健康 vs 过拟合

左图展示的是健康学习状态:随着训练集增大,泛化间隙逐渐缩小——这正是 PAC 学习理论要量化的现象。右图则展示了过拟合状态:继续优化反而导致测试误差上升——此时正则化、早停机制以及偏差-方差权衡变得至关重要。

学习理论为我们提供了三大工具:

  • 预测泛化间隙何时会小;
  • 通过复杂度度量(如假设类基数、VC 维、Rademacher 复杂度)量化该间隙;
  • 借助模型选择与正则化控制该间隙。

PAC 框架#

“可学习”意味着什么#

当我们说一个问题“可学习”时,实际上做了三项让步:

  • 不要求完美预测器,只需其误差在最优解的 $\varepsilon$ 范围内;
  • 不要求绝对成功,只需在随机训练样本上以至少 $1 - \delta$ 的概率成功;
  • 误差是针对真实分布 $\mathcal{D}$ 衡量的,而非训练数据本身。

这三项弱化条件——“概率近似正确”(Probably Approximately Correct, PAC)——由 Valiant(1984)首次形式化。

$$\Pr_{S \sim \mathcal{D}^m}\!\bigl[\, L_{\mathcal{D}}(h_S) \;\leq\; \min_{h \in \mathcal{H}} L_{\mathcal{D}}(h) + \varepsilon \,\bigr] \;\geq\; 1 - \delta. \tag{3}$$

函数 $m_{\mathcal{H}}(\varepsilon, \delta)$ 称为样本复杂度。通俗地说:“只需不超过 $m_{\mathcal{H}}(\varepsilon, \delta)$ 个样本,就能以至少 $1 - \delta$ 的概率,找到一个泛化误差与 $\mathcal{H}$ 中最优假设相差不超过 $\varepsilon$ 的模型。”

有限假设类的可实现情形#

我们从最简单的非平凡情形入手:$\mathcal{H}$ 有限,且存在 $h^\star \in \mathcal{H}$ 使得 $L_{\mathcal{D}}(h^\star) = 0$ (即可实现假设成立)。此处使用 0-1 损失。

$$m \;\geq\; \frac{1}{\varepsilon}\Bigl(\ln |\mathcal{H}| + \ln \tfrac{1}{\delta}\Bigr), \tag{4}$$

则以至少 $1 - \delta$ 的概率,所有满足 $L_S(h) = 0$ 的假设 $h \in \mathcal{H}$ 都有 $L_{\mathcal{D}}(h) \leq \varepsilon$ 。特别地,ERM 是 $\mathcal{H}$ 的一个 PAC 学习算法。

证明:令 $\mathcal{H}_{\text{bad}} = \{h \in \mathcal{H} : L_{\mathcal{D}}(h) > \varepsilon\}$ 。我们关注的“坏事件”——“ERM 返回了一个坏假设”——包含在“某个坏假设在训练集上经验误差为零”这一事件中。

$$\Pr_{S}\!\bigl[L_S(h) = 0\bigr] \;=\; \prod_{i=1}^{m} \Pr\!\bigl[h(x_i) = y_i\bigr] \;\leq\; (1 - \varepsilon)^m. \tag{5}$$ $$\Pr_{S}\!\bigl[\exists h \in \mathcal{H}_{\text{bad}} : L_S(h) = 0\bigr] \;\leq\; \sum_{h \in \mathcal{H}_{\text{bad}}} (1 - \varepsilon)^m \;\leq\; |\mathcal{H}|\,(1 - \varepsilon)^m. \tag{6}$$ $$|\mathcal{H}|\,(1 - \varepsilon)^m \;\leq\; |\mathcal{H}|\, e^{-\varepsilon m}. \tag{7}$$ $$ |\mathcal{H}|\, e^{-\varepsilon m} \;\leq\; \delta \;\;\Longleftrightarrow\;\; m \;\geq\; \frac{1}{\varepsilon}\bigl(\ln |\mathcal{H}| + \ln \tfrac{1}{\delta}\bigr). \tag{8} $$

$m$ 满足 (8) 时,坏事件概率不超过 $\delta$ ,其余情形即为定理结论。$\blacksquare$

解读公式

  • $\ln |\mathcal{H}|$ :假设类越丰富,所需数据越多,但仅以对数速度增长。
  • $\ln(1/\delta)$ :将置信度从 90% 提升到 99%,仅需额外增加约 $\ln 10 \approx 2.3$ 个样本。
  • $1/\varepsilon$ :将误差容忍度减半,所需样本量翻倍——样本复杂度与精度呈线性关系

不可知情形#

可实现假设过于理想。“不可知 PAC”(agnostic PAC)放弃了这一前提:不再假设存在零误差的假设,只要求算法能逼近 $\mathcal{H}$ 中的最佳可能表现。

$$m \;\geq\; \frac{2}{\varepsilon^2}\Bigl(\ln |\mathcal{H}| + \ln \tfrac{2}{\delta}\Bigr) \tag{9}$$

则以至少 $1 - \delta$ 的概率,ERM 解满足 $L_{\mathcal{D}}(h_{\text{ERM}}) \leq \min_{h \in \mathcal{H}} L_{\mathcal{D}}(h) + \varepsilon$

$$\Pr\!\bigl[\, |L_S(h) - L_{\mathcal{D}}(h)| > t \,\bigr] \;\leq\; 2 e^{-2 m t^2}. \tag{10}$$

$\mathcal{H}$ 应用联合界,并代入 $t = \varepsilon / 2$ ,即可导出 (9)。

为何是 $1/\varepsilon^2$ ,而非 $1/\varepsilon$#

从可实现到不可知,$\varepsilon$ 的指数从 1 变为 2,这一平方代价从何而来?

在可实现情形下,我们只需剔除坏假设:一个反例就足以将其淘汰,“无反例”事件的概率随 $\varepsilon m$ 指数衰减。

$$\frac{\sigma}{\sqrt{m}} \;\lesssim\; \varepsilon \;\;\Longrightarrow\;\; m \;\gtrsim\; \frac{\sigma^2}{\varepsilon^2}.$$

这正是中心极限定理的典型特征:将 $\varepsilon$ 缩小 10 倍,所需样本量增加 100 倍。两种情形的对比见下图。

PAC 样本复杂度

左图表明 $\ln|\mathcal{H}|$ 仅作为对数加性项出现:即使假设类规模从 $10^3$ 增至 $10^6$ ,所需样本量也仅翻倍。右图则揭示放弃可实现假设的代价:在双对数坐标下,不可知情形的曲线斜率为 $-2$ ,而可实现情形仅为 $-1$

VC 维:无限假设类的复杂度度量#

机器学习数学推导(一):绪论与数学基础 — 章节小结图

为什么需要新的度量?#

对于任何合理的实值模型,$\ln |\mathcal{H}|$ 都会失效:比如 $\mathbb{R}^d$ 中的线性分类器有不可数多个假设,导致 $\ln|\mathcal{H}| = \infty$ ,定理 2 也就毫无意义。我们需要一个有限的复杂度度量,同时还能反映统计容量。

正确的度量是组合性质的,而非基于基数的——它关注的是一个假设类在有限点集上能生成多少种不同的标记方式

打散#

$$\bigl|\{(h(x_1), \ldots, h(x_m)) : h \in \mathcal{H}\}\bigr| \;=\; 2^m. \tag{11}$$

直观理解:打散意味着 $\mathcal{H}$ 在这些特定点上足够灵活,能够生成所有可能的二分划分,其表达能力在 $C$ 上达到了极限。

定义#

$$\mathrm{VCdim}(\mathcal{H}) \;=\; \sup\bigl\{\, m : \exists\, C \subseteq \mathcal{X},\; |C| = m,\; \mathcal{H}\text{ 打散 } C \,\bigr\}. \tag{12}$$

若上确界为无穷大,则记作 $\mathrm{VCdim}(\mathcal{H}) = \infty$

两个重要不对称性

  • 存在性下界:要证明 $\mathrm{VCdim}(\mathcal{H}) \geq d$ ,只需找到一个大小为 $d$ 的点集被 $\mathcal{H}$ 打散。
  • 全称性上界:要证明 $\mathrm{VCdim}(\mathcal{H}) < d+1$ ,必须说明任意大小为 $d+1$ 的点集都无法被打散。

实例:$\mathbb{R}^d$ 中的线性分类器#

定理 3 仿射线性分类器 $\mathcal{H} = \{x \mapsto \mathrm{sign}(w^\top x + b) : w \in \mathbb{R}^d, b \in \mathbb{R}\}$ 的 VC 维为 $d + 1$

证明

$$w \;=\; \sum_{i=1}^{d} y_i\, e_i, \qquad b \;=\; \tfrac12 y_0. \tag{13}$$

此时 $w^\top 0 + b = b = \tfrac12 y_0$ 的符号与 $y_0$ 一致;对 $i \geq 1$$w^\top e_i + b = y_i + \tfrac12 y_0$ 的符号由 $y_i$ 决定(因为 $\tfrac12 y_0$ 太小,不足以翻转符号)。因此所有标记均可实现,该点集被成功打散。

$$\sum_{i=1}^{d+2} a_i \tilde{x}_i \;=\; 0. \tag{14}$$ $$\underbrace{\sum_{i \in I^+} a_i (w^\top x_i + b)}_{>\,0} \;+\; \underbrace{\sum_{i \in I^-} a_i (w^\top x_i + b)}_{>\,0} \;=\; 0,$$

因为 $i \in I^+$ 时两项均为正,$i \in I^-$ 时两项均为负(乘积仍为正),严格正项之和等于零——矛盾。$\blacksquare$

几何直觉非常清晰:$\mathbb{R}^d$ 中的超平面有 $d+1$ 个自由参数,每个参数恰好对应一个标记自由度。

VC 维直观

左侧 8 个图展示了 $\mathbb{R}^2$ 中三个一般位置点的所有 $2^3 = 8$ 种标记,每种都能找到一条分离直线。右侧面板展示了一个经典的 XOR 模式:四个点呈对角分布时,无法用一条直线将 $+$$-$ 分开。进一步的计数论证表明,$\mathbb{R}^2$ 中任意四个点都无法被打散。因此,二维线性分类器的 $\mathrm{VCdim} = 3$ ,与公式 $d + 1$ 完全一致。

VC 维样本复杂度界#

$$m_{\mathcal{H}}(\varepsilon, \delta) \;=\; O\!\left(\frac{d + \ln(1/\delta)}{\varepsilon^2}\right). \tag{15}$$ $$\mathrm{VCdim}(\mathcal{H}) = d \;\Longrightarrow\; \Pi_{\mathcal{H}}(m) \;\leq\; \sum_{i=0}^{d} \binom{m}{i} \;\leq\; \left(\frac{e\,m}{d}\right)^d. \tag{16}$$

一旦 $m > d$ ,原本指数级的 $2^m$ 就会塌缩为多项式 $m^d$ 。将这一多项式增长率代入一致收敛论证(详见概率论章节),即可得到 (15)。

应用 $\mathbb{R}^{100}$ 中的线性分类器有 $\mathrm{VCdim} = 101$ 。要在不可知设定下达到 $\varepsilon = 0.05$$\delta = 0.05$ ,所需样本量约为 $m \approx 10^5$ ——完全可行。相比之下,VC 维为 $\infty$ 的类(例如所有可测函数)不是 PAC 可学习的,无论数据量多大。


偏差-方差分解#

设置#

即使一个模型类是 PAC 可学习的,具体学到的预测器的测试误差也会分解成几个来源完全不同的部分。理解这种分解,正是实际进行模型选择时的核心指导。

固定平方损失,并假设以下条件成立:

  • 真实回归函数 $f^\star: \mathcal{X} \to \mathbb{R}$
  • 观测值 $y = f^\star(x) + \varepsilon$ ,其中 $\mathbb{E}[\varepsilon] = 0$$\mathrm{Var}(\varepsilon) = \sigma^2$
  • 学习算法基于样本 $S$ 输出预测器 $\hat{f}_S$

在固定测试点 $x$ 上,对随机样本 $S$ 和噪声 $\varepsilon$ 同时取期望。

$$ \mathbb{E}_{S,\varepsilon}\!\Bigl[(\hat{f}_S(x) - y)^2\Bigr] \;=\; \underbrace{\bigl(\bar{f}(x) - f^\star(x)\bigr)^2}_{\textstyle\text{偏差}^2} \;+\; \underbrace{\mathbb{E}_S\!\bigl[(\hat{f}_S(x) - \bar{f}(x))^2\bigr]}_{\textstyle\text{方差}} \;+\; \underbrace{\sigma^2}_{\textstyle\text{噪声}}. \tag{17} $$

证明#

$$\hat{f} - y \;=\; \underbrace{(\hat{f} - \bar{f})}_{A} \;+\; \underbrace{(\bar{f} - f^\star)}_{B} \;+\; \underbrace{(f^\star - y)}_{C}. \tag{18}$$ $$(\hat{f} - y)^2 \;=\; A^2 + B^2 + C^2 + 2AB + 2AC + 2BC.$$

$S$$\varepsilon$ 取期望,三项交叉项均消失:

  • $\mathbb{E}_S[2AB] = 2B \cdot \mathbb{E}_S[\hat{f} - \bar{f}] = 0$ ,因为 $\mathbb{E}_S[\hat{f}] = \bar{f}$
  • $\mathbb{E}_{S,\varepsilon}[2AC] = 2\,\mathbb{E}_S[A] \cdot \mathbb{E}_\varepsilon[C] = 0$ ,因为 $S \perp \varepsilon$ 且两者期望均为零;
  • $\mathbb{E}_\varepsilon[2BC] = 2B \cdot \mathbb{E}_\varepsilon[C] = 0$ ,因为 $\mathbb{E}[\varepsilon] = 0$

最终剩下 $\mathbb{E}_S[A^2] + B^2 + \mathbb{E}_\varepsilon[C^2]$ ,恰好对应方差、偏差² 和噪声。$\blacksquare$

三项的含义#

含义减小方法
偏差²平均预测器与真实值的距离。高偏差意味着欠拟合。使用更复杂的模型类、更好的特征、减少正则化。
方差换一批训练数据后预测器的变化程度。高方差意味着过拟合。增加数据量、使用更简单的模型类、加入正则化、做集成学习。
噪声给定 $x$$y$ 的不可消除的随机性。任何算法都无法去除。无——这是误差的下限。

随着模型容量增加,这三种力量相互竞争:

偏差-方差权衡

总期望误差呈现 U 型曲线。最优点左侧,偏差占主导,表现为欠拟合;右侧,方差占主导,表现为过拟合。最低点就是目标工作点,而找到它(通常通过交叉验证)正是模型选择的本质。

一个数值小验证#

$f^\star(x) = \sin(\pi x)$ 定义在 $[-1, 1]$ 区间上,$\sigma = 0.3$$m = 20$ ,重复 100 次随机训练集实验:

模型偏差²方差噪声总误差
1 次多项式0.420.0020.090.51
3 次多项式0.050.020.090.16
9 次多项式0.010.350.090.45

3 次多项式胜出,因为它同时控制了偏差和方差。注意,噪声项在所有行中都相同,这是由定义决定的。

诊断欠拟合与过拟合#

训练误差验证误差诊断应对措施
健康不用调整,直接部署。
欠拟合增加特征、扩大模型规模、延长训练时间、减少正则化。
过拟合增加数据量、缩小模型规模、加入正则化、提前停止、使用 Dropout。
很可能是数据泄漏或评测代码有 bug检查数据划分是否正确。

No Free Lunch 定理#

定理内容#

Wolpert(1996)和 Wolpert 与 Macready(1997)将从业者长期怀疑的观点形式化:不存在适用于所有场景的最优学习算法

$$\frac{1}{|\mathcal{F}|} \sum_{f \in \mathcal{F}} \mathbb{E}_S\!\bigl[L_f(\mathcal{A}_1(S))\bigr] \;=\; \frac{1}{|\mathcal{F}|} \sum_{f \in \mathcal{F}} \mathbb{E}_S\!\bigl[L_f(\mathcal{A}_2(S))\bigr]. \tag{19}$$

证明很简单:对任意未见过的 $x \notin S$ ,从 $\mathcal{F}$ 中均匀随机选取目标函数 $f$ 时,$f(x)$ 相当于公平抛硬币——一半函数赋值为 0,另一半为 1。因此,任何预测策略在一半目标上正确,在另一半上错误,平均风险恒为 $\tfrac12$

归纳偏置#

既然没有算法能在所有问题上都表现优异,每个成功的算法必然都带着对世界的某种假设。这种假设被称为归纳偏置(inductive bias)。

归纳偏置体现在哪些方法中适合的问题
平滑性$k$ -NN、核方法物理量的连续回归
线性性线性/逻辑回归、线性 SVM大致线性关系、高维但样本少
稀疏性Lasso、弹性网高维问题,相关特征少
组合性 / 层次结构深度网络视觉、语言,涉及“部分-整体”关系的任务
局部性 + 平移等变卷积神经网络图像、音频频谱
序列结构RNN、Transformer语言、时间序列
置换不变性集合 / 图网络集合、分子、社交网络

下图展示了三种不同的归纳偏置作用在同一组训练数据上的效果:

不同归纳偏置下的函数逼近

线性拟合欠拟合了——它的归纳偏置太强;随机 ReLU 特征过拟合了——它的归纳偏置太弱;4 次多项式刚好匹配了目标函数的结构。三者都没有绝对的对错,选择取决于你对 $f^\star$ 的先验信念。

为什么 NFL 不会让机器学习失去意义#

NFL 是对所有可能函数取平均的结果。而我们实际遇到的函数——物理定律、自然语言、图像——只存在于“全部函数”的一个极小且高度结构化的子流形上。在这个子流形上,某些归纳偏置会以巨大优势胜过其他偏置。

实践中,NFL 给出四点启示:

  1. 别再幻想找到万能算法,它根本不存在;
  2. 识别你的问题实际具有何种结构;
  3. 选择与该结构匹配的归纳偏置;
  4. 在你关心的问题类别上评估算法,而非对抗性的最坏情况。

代码:线性回归的实证 PAC 与偏差-方差#

下面这段脚本完整实现了一个简单的线性回归问题,验证了本章的核心预测。它做了两件事:(i) 在可实现状态下,测试误差随样本量 $m$$1/m$ 衰减;(ii) 分别计算偏差²、方差和噪声,并验证它们加起来等于总期望误差。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

rng = np.random.default_rng(42)

def true_function(x):
    """真函数:y = 2x + 1"""
    return 2 * x + 1

def generate_data(n_samples, noise_std=0.5):
    """生成 i.i.d. 样本 (X, y),带高斯噪声"""
    X = rng.uniform(0, 10, n_samples).reshape(-1, 1)
    noise = rng.normal(0, noise_std, n_samples)
    y = true_function(X.ravel()) + noise
    return X, y

n_test = 1000
X_test, y_test_noisy = generate_data(n_test)
y_test_true = true_function(X_test.ravel())

sample_sizes = [5, 10, 20, 50, 100, 200, 500, 1000]
n_experiments = 100

print(f"{'m':>6} | {'训练 MSE':>10} | {'测试 MSE':>10} | "
      f"{'偏差²':>8} | {'方差':>10} | {'B²+V+σ²':>14}")
print("-" * 78)

sigma_sq = 0.5 ** 2  # 已知噪声方差,用于校验

for m in sample_sizes:
    train_err, test_err = [], []
    predictions = np.zeros((n_experiments, n_test))

    for k in range(n_experiments):
        X_train, y_train = generate_data(m)
        model = LinearRegression().fit(X_train, y_train)
        train_err.append(mean_squared_error(
            y_train, model.predict(X_train)))
        predictions[k] = model.predict(X_test)
        test_err.append(mean_squared_error(
            y_test_noisy, predictions[k]))

    mean_pred = predictions.mean(axis=0)
    bias_sq = np.mean((mean_pred - y_test_true) ** 2)
    variance = np.mean(np.var(predictions, axis=0))

    print(f"{m:>6d} | {np.mean(train_err):>10.4f} | "
          f"{np.mean(test_err):>10.4f} | {bias_sq:>8.4f} | "
          f"{variance:>10.4f} | {bias_sq + variance + sigma_sq:>14.4f}")

应该看到的现象

  • 测试误差大约按 $1/m$ 减小——这是可实现状态下 PAC 的预测结果,因为规范设定的线性模型下,平方损失本质上是一个参数估计问题;
  • 偏差² 几乎为零——线性假设类包含了真实函数;
  • 方差随 $1/m$ 减小——数据越多,拟合出的斜率和截距越稳定;
  • 偏差² + 方差 + $\sigma^2$ 与测试 MSE 在 Monte-Carlo 误差范围内一致,验证了定理 5。

常见问题#

Q1. ERM 这么简单,为什么不用它?

因为 $L_S$$L_{\mathcal{D}}$ 在过于复杂的 $\mathcal{H}$ 上可能会完全不一致。例如“查表法”假设:当 $i \leq m$$h(x_i) = y_i$ ,否则 $h(x) = 0$ 。这种假设下 $L_S = 0$ ,但 $L_{\mathcal{D}}$ 接近随机猜测。PAC 理论告诉我们,在什么条件下 $\mathcal{H}$ 和样本数 $m$ 能让 $|L_S - L_{\mathcal{D}}|$ 很小;结构风险最小化则指导我们如何根据这些条件动态选择 $\mathcal{H}$

Q2. 不可数的假设类,VC 维怎么可能是有限的?

VC 维不是用来数假设的数量,而是用来数假设类在有限点集上能产生的不同标记方式。例如所有二维线性分类器构成一个不可数集合,但如果两个分类器在每个测试点上的符号相同,它们对我们来说就是不可区分的。对于 $m$ 个点,最多有 $\binom{m}{0} + \binom{m}{1} + \binom{m}{2} \leq O(m^2)$ 种不同的行为。Sauer-Shelah 引理将这一组合事实转化为有限的复杂度上界。

Q3. 训练误差为 0 总是坏事吗?

不一定。关键问题是:你的模型类是否大到能记住噪声? 如果数据基本无噪声,且模型类包含真实函数(例如用线性模型拟合线性数据),那么训练误差为 0 是合理的结果。但如果 $\sigma^2 > 0$ 且模型类足够复杂到可以插值,训练误差为 0 就是个危险信号。一个实用的经验法则:如果 $m / \mathrm{VCdim}(\mathcal{H}) < 10$ ,就要对低训练误差保持警惕。

Q4. 常见机器学习模型的 VC 维是多少?

模型VC 维
$\mathbb{R}^d$ 上的线性分类器$d + 1$
$\mathbb{R}^d$$k$ 次多项式$\binom{d+k}{k}$
$\mathbb{R}^d$ 上轴对齐矩形$2d$
$W$ 个权重的 sigmoid 神经网络$\Theta(W^2)$ (Karpinski-Macintyre)
$W$ 个权重、$L$ 层的分段线性网络$\Theta(W L \log W)$ (Bartlett 等)
深度为 $D$ 的决策树$\Theta(2^D)$
所有可测函数的类$\infty$ (无法 PAC 学习)

对于现代深度网络,VC 界通常很松散——网络可以轻松拟合随机标签(说明 VC 很大),但仍然能泛化。解释这一现象是当前研究的热点领域(PAC-Bayes、间隔界、神经正切核分析、隐式正则化理论)。

Q5. Hoeffding 不等式是怎么来的?

它是针对有界独立随机变量之和的次高斯集中不等式。我们将在第 3 章 从矩生成函数出发推导该不等式,并在后续几乎所有一致收敛的论证中将其作为核心工具使用。

总结#

概念关键公式一句话直觉
PAC 样本复杂度(可实现,有限)$m \geq \tfrac{1}{\varepsilon}(\ln \mid\mathcal{H}\mid+ \ln \tfrac{1}{\delta})$剔除坏假设这件事,随着样本增加会指数级变容易。
PAC 样本复杂度(不可知,有限)$m \geq \tfrac{2}{\varepsilon^2}(\ln \mid\mathcal{H}\mid+ \ln \tfrac{2}{\delta})$估计期望值比剔除假设更难,代价多出一个 $1/\varepsilon$
VC 样本复杂度$m = O\!\bigl(\tfrac{d + \ln(1/\delta)}{\varepsilon^2}\bigr)$对无限假设类,用 $\mathrm{VCdim}$ 替代 $\ln \mid\mathcal{H}\mid$
Sauer-Shelah 引理$\Pi_{\mathcal{H}}(m) \leq (em/d)^d$一旦 VC 维有限,指数增长的 $2^m$ 就坍缩成多项式 $m^d$
偏差-方差分解测试误差 $=$ 偏差² $+$ 方差 $+\, \sigma^2$模型误差来自三个彼此独立的源头。
无免费午餐定理$\sum_f L_f(\mathcal{A}_1) = \sum_f L_f(\mathcal{A}_2)$在所有可能问题上平均,任何两个算法表现一样好。

新项目实战清单

  1. 画出训练误差和验证误差随样本量 $m$ 的变化曲线,判断当前处于欠拟合、过拟合还是理想区间。
  2. 估算模型类 $\mathcal{H}$$\mathrm{VCdim}$ 或有效参数数量,尽量让 $m / \mathrm{VCdim} \gtrsim 10$
  3. 用交叉验证来选择模型复杂度,别光靠肉眼盯着训练曲线做决定。
  4. 把正则化当作默认配置,让结构风险最小化(SRM)成为你的第一反应,而不是事后补救。
  5. 选一个归纳偏置与问题特性对齐的假设空间 $\mathcal{H}$ :图像任务偏好局部性,基因组学倾向稀疏性,物理建模则看重平滑性。

下一步#

写到这里,我手上只有一组语言:风险、损失、容量、偏差-方差。它们告诉我"学习是否可能",却不告诉我"学习器具体长什么样"。下一章我把这些抽象工具铺到实数和向量上——线性代数与矩阵论。

我之所以把它放在第二章而不是放进附录,是因为机器学习里几乎所有"模型"最终都化简成线性代数操作:梯度是向量,参数是矩阵,反向传播是雅可比的链式相乘,PCA 是协方差矩阵的特征分解。如果说本章给了我一把分析的尺子,那么下一章就是把这把尺子接到具体的运算装置上。读完后,“二次型梯度等于 $2Ax$ “会从一个公式变成一个我闭着眼睛都能写的反射动作——这是我后面所有推导的硬底子。

参考文献#

  1. Valiant, L. G. (1984). A theory of the learnable. Communications of the ACM, 27(11), 1134-1142.
  2. Vapnik, V. N. & Chervonenkis, A. Y. (1971). On the uniform convergence of relative frequencies of events to their probabilities. Theory of Probability & Its Applications, 16(2), 264-280.
  3. Blumer, A., Ehrenfeucht, A., Haussler, D. & Warmuth, M. K. (1989). Learnability and the Vapnik-Chervonenkis dimension. Journal of the ACM, 36(4), 929-965.
  4. Bartlett, P. L., Jordan, M. I. & McAuliffe, J. D. (2006). Convexity, classification, and risk bounds. Journal of the American Statistical Association, 101(473), 138-156.
  5. Bartlett, P. L., Harvey, N., Liaw, C. & Mehrabian, A. (2019). Nearly-tight VC-dimension bounds for piecewise linear neural networks. Journal of Machine Learning Research, 20, 1-17.
  6. Wolpert, D. H. (1996). The lack of a priori distinctions between learning algorithms. Neural Computation, 8(7), 1341-1390.
  7. Wolpert, D. H. & Macready, W. G. (1997). No free lunch theorems for optimization. IEEE Transactions on Evolutionary Computation, 1(1), 67-82.
  8. Shalev-Shwartz, S. & Ben-David, S. (2014). Understanding Machine Learning: From Theory to Algorithms. Cambridge University Press.
  9. Mohri, M., Rostamizadeh, A. & Talwalkar, A. (2018). Foundations of Machine Learning (2nd ed.). MIT Press.
  10. Zhang, C., Bengio, S., Hardt, M., Recht, B. & Vinyals, O. (2017). Understanding deep learning requires rethinking generalization. ICLR.
  11. 周志华 (2016). 机器学习. 清华大学出版社.
  12. 李航 (2012). 统计学习方法. 清华大学出版社.
本系列

机器学习数学推导 20 篇

  1. 01 机器学习数学推导(一):绪论与数学基础 当前
  2. 02 机器学习数学推导(二):线性代数与矩阵论
  3. 03 机器学习数学推导(三):概率论与统计推断
  4. 04 机器学习数学推导(四):凸优化理论
  5. 05 机器学习数学推导(五):线性回归
  6. 06 机器学习数学推导(六):逻辑回归与分类
  7. 07 机器学习数学推导(七):决策树
  8. 08 机器学习数学推导(八):支持向量机
  9. 09 机器学习数学推导(九):朴素贝叶斯
  10. 10 机器学习数学推导(十):半朴素贝叶斯与贝叶斯网络
  11. 11 机器学习数学推导(十一):集成学习
  12. 12 机器学习数学推导(十二):XGBoost 与 LightGBM
  13. 13 机器学习数学推导(十三):EM 算法与 GMM
  14. 14 机器学习数学推导(十四):变分推断与变分 EM
  15. 15 机器学习数学推导(十五):隐马尔可夫模型
  16. 16 机器学习数学推导(十六):条件随机场
  17. 17 机器学习数学推导(十七):降维与主成分分析
  18. 18 机器学习数学推导(十八):聚类算法
  19. 19 机器学习数学推导(十九):神经网络与反向传播
  20. 20 机器学习数学推导(二十):正则化与模型选择

读有所得?

GitHub 关注我 → 新文周更

GitHub