第 6 课
← 返回系列列表

Lecture 11-12:学习理论

Stanford CS229 — 斯坦福机器学习

偏差方差权衡、一致收敛、VC 维。

Lecture 11-12:学习理论

课程简介

偏差方差权衡、一致收敛、VC 维。

🎬 本课程视频:Stanford CS229 — 斯坦福机器学习


一、偏差与方差的权衡

1.1 泛化误差的分解

偏差-方差权衡(Bias-Variance Tradeoff)是机器学习中最核心的概念之一。它解释了为什么模型复杂度需要精心控制。

泛化误差可以分解为三个部分:

$$\text{Error} = \text{Bias}^2 + \text{Variance} + \text{Irreducible Error}$$

1.2 偏差-方差权衡图

随着模型复杂度增加:
- 偏差单调下降(模型越来越能拟合数据)
- 方差单调上升(模型越来越"记住"训练数据)
- 总误差先下降后上升

最优模型复杂度在总误差最低点——此时偏差和方差达到最佳平衡。

1.3 欠拟合与过拟合的诊断

欠拟合(高偏差) 的标志:
- 训练误差高
- 验证误差也高,且两者接近
- 增加模型复杂度、增加特征、减少正则化可以帮助

过拟合(高方差) 的标志:
- 训练误差低
- 验证误差明显高于训练误差(两者差距大)
- 增加训练数据、减少特征、增加正则化可以帮助

# 学习曲线诊断
def plot_learning_curves(model, X_train, y_train, X_val, y_val):
    train_sizes = np.linspace(0.1, 1.0, 10)
    train_errors, val_errors = [], []
    for size in train_sizes:
        n = int(size * len(X_train))
        X_sub = X_train[:n]
        y_sub = y_train[:n]
        model.fit(X_sub, y_sub)
        train_errors.append(1 - model.score(X_sub, y_sub))
        val_errors.append(1 - model.score(X_val, y_val))
    plt.plot(train_sizes, train_errors, label='Train')
    plt.plot(train_sizes, val_errors, label='Validation')
    plt.legend()

二、统一收敛理论

2.1 经验风险最小化

在监督学习中,我们定义:
- 真实风险(True Risk):$\epsilon(h) = P_{(x,y) \sim D}[h(x) \neq y]$
- 经验风险(Empirical Risk):$\hat{\epsilon}(h) = \frac{1}{m} \sum_{i=1}^{m} 1{h(x^{(i)}) \neq y^{(i)}}$

ERM(经验风险最小化)就是选择最小化 $\hat{\epsilon}(h)$ 的假设。

2.2 有限假设空间的收敛性

对于有限的假设空间 $|\mathcal{H}| = k$,Hoeffding 不等式告诉我们:

$$P(|\hat{\epsilon}(h) - \epsilon(h)| > \gamma) \leq 2 \exp(-2\gamma^2 m)$$

对所有 $h \in \mathcal{H}$ 一致成立的概率:

$$P(\exists h \in \mathcal{H}: |\hat{\epsilon}(h) - \epsilon(h)| > \gamma) \leq 2k \exp(-2\gamma^2 m)$$

这意味着:如果 $m \geq \frac{1}{2\gamma^2} \log \frac{2k}{\delta}$ 则至少有 $1-\delta$ 的概率,对所有 $h \in \mathcal{H}$ 有 $|\hat{\epsilon}(h) - \epsilon(h)| \leq \gamma$。

样本复杂度(Sample Complexity):要保证 $|\hat{\epsilon}(h) - \epsilon(h)| \leq \gamma$,所需的样本数 $m$ 与 $\log k$ 成正比——仅与假设空间大小的对数成正比。

2.3 偏差-方差-复杂度权衡的统一定理

令 $h^* = \arg\min_{h \in \mathcal{H}} \epsilon(h)$ 为假设空间中最优的假设,$\hat{h} = \arg\min_{h \in \mathcal{H}} \hat{\epsilon}(h)$ 为 ERM 选出的假设。

$$\epsilon(\hat{h}) \leq \epsilon(h^*) + 2\sqrt{\frac{1}{2m} \log \frac{2k}{\delta}}$$

第一项 $\epsilon(h^)$ 是近似误差(Approximation Error)——由假设空间限制导致的偏差。第二项是估计误差(Estimation Error)*——由有限样本导致的方差。

更大的假设空间:
- 减少近似误差(更可能包含真实函数)
- 增加估计误差(需要更多样本来区分更多假设)

2.4 无限假设空间

当 $\mathcal{H}$ 无限时,上述界不再适用。例如线性分类器 $\text{sign}(\theta^T x)$ 的参数是连续的,有无穷多种可能。我们需要 VC 维来分析这种情况。

三、VC 维

3.1 定义

VC 维(Vapnik-Chervonenkis Dimension)衡量假设空间的"表达能力"——一个假设空间能打散(shatter)的最大样本数量。

一组点被称为被打散,如果假设空间能实现这组点的所有可能的标注方式($2^n$ 种)。

示例
- 二维平面上的线性分类器:VC 维 = 3
- 三维空间中的线性分类器:VC 维 = 4
- 一个 2D 线性分类器可以打散任意 3 个点,但无法打散 4 个点(当 4 个点形成 XOR 模式时)

3.2 VC 维与泛化

对于 VC 维为 $d$ 的假设空间,有:

$$P(|\hat{\epsilon}(h) - \epsilon(h)| > \gamma) \leq O\left(\left(\frac{em}{d}\right)^d\right) \exp(-2\gamma^2 m)$$

更简洁地:以至少 $1-\delta$ 的概率,

$$\epsilon(\hat{h}) \leq \hat{\epsilon}(\hat{h}) + O\left(\sqrt{\frac{d}{m} \log \frac{m}{d} + \frac{1}{m} \log \frac{1}{\delta}}\right)$$

关键洞察
- 所需样本数与 VC 维 $d$ 成正比——通常需要 $m \approx 10d$ 的样本
- 参数数量多不一定 VC 维高(但通常相关)
- 深度学习虽然参数极多,但因为隐式正则化,有效 VC 维可能小得多

3.3 实践中如何选择模型

四、特征选择

4.1 为什么需要特征选择

4.2 包裹法(Wrapper Methods)

前向搜索:从空集开始,每次添加一个使验证性能提升最多的特征。

后向搜索:从全部特征开始,每次移除一个最不重要的特征。

这些都是 $O(n^2)$ 的过程,当特征数很大时计算昂贵。

4.3 过滤法(Filter Methods)

互信息(Mutual Information):衡量特征与标签的依赖程度。

$$\text{MI}(x_j, y) = \sum_{x_j} \sum_{y} P(x_j, y) \log \frac{P(x_j, y)}{P(x_j) P(y)}$$

选择与标签互信息最高的特征。

卡方检验相关系数也是常用的过滤方法。

4.4 嵌入法(Embedded Methods)

在训练过程中自动进行特征选择:
- L1 正则化(Lasso):自动将不重要特征的系数压缩为 0
- 决策树/随机森林:基于特征的重要性排序

五、总结

  1. 偏差-方差权衡:模型复杂度增加时偏差下降、方差上升,最优点在总误差最低处
  2. 统一收敛理论:给出了经验风险和真实风险之间差距的上界
  3. VC 维:衡量假设空间表达能力,与所需样本数成正比
  4. 特征选择:减少特征可以降低 VC 维、提高泛化能力

六、正则化与模型选择

6.1 正则化的偏差-方差视角

从偏差-方差的角度看:

6.2 交叉验证

K 折交叉验证:将训练数据分成 K 份,依次使用 K-1 份训练、1 份验证,取 K 次验证结果的平均值。

K 的典型选择是 5 或 10。K 越大,估计的偏差越小但方差越大(因为训练集更大但验证集更小),计算成本也更高。

留一法交叉验证(LOOCV)是 K=m 的特例——每次只留一个样本做验证。偏差最小但计算成本极高。

6.3 模型集成

模型集成是降低方差的另一种有效方法:

Bagging(Bootstrap Aggregating):对训练数据进行自助采样,训练多个模型,取平均或投票。随机森林是 Bagging 的典型代表。

Boosting:顺序训练模型,每个新模型关注之前模型做错的样本。AdaBoost、Gradient Boosting 是典型代表。

Stacking:训练多个不同类型的模型作为基学习器,再用一个元学习器组合它们的预测结果。

模型集成几乎总是能提升性能,但代价是增加了计算复杂度和可解释性的降低。

偏差-方差分解的数学推导

偏差-方差权衡可以通过以下数学分解来深入理解。对于回归问题,使用平方损失函数 $L(y, \hat{f}(x)) = (y - \hat{f}(x))^2$,模型在测试点 x 上的期望泛化误差可以分解为三个部分:

$$\mathbb{E}[(y - \hat{f}(x))^2] = \underbrace{(\mathbb{E}[\hat{f}(x)] - f(x))^2}{\text{Bias}^2} + \underbrace{\mathbb{E}[\hat{f}(x)^2] - (\mathbb{E}[\hat{f}(x)])^2}{\text{Variance}} + \underbrace{\sigma^2}_{\text{Irreducible Error}}$$

其中 $f(x) = \mathbb{E}[y|x]$ 是真实的目标函数,$\sigma^2$ 是噪声的方差。这个分解告诉我们:即使我们有无限多的数据,噪声项 $\sigma^2$ 也构成了误差的下界,这是任何模型都无法超越的。偏差项衡量模型假设与真实分布的偏离程度,方差项衡量模型对训练数据波动的敏感程度。简单模型(如线性回归)通常高偏差低方差,复杂模型(如深度神经网络)通常低偏差高方差。

延伸阅读

← Lecture 8-10:支持向量机 Lecture 13-14:贝叶斯方法与正则化 →