Lecture 11-12:学习理论
课程简介
偏差方差权衡、一致收敛、VC 维。
🎬 本课程视频:Stanford CS229 — 斯坦福机器学习
一、偏差与方差的权衡
1.1 泛化误差的分解
偏差-方差权衡(Bias-Variance Tradeoff)是机器学习中最核心的概念之一。它解释了为什么模型复杂度需要精心控制。
泛化误差可以分解为三个部分:
$$\text{Error} = \text{Bias}^2 + \text{Variance} + \text{Irreducible Error}$$
- 偏差(Bias):模型对真实关系的简化假设导致的误差。高偏差意味着模型过于简单,无法捕捉数据中的模式——欠拟合。
- 方差(Variance):模型对训练数据中细微变化的敏感度。高方差意味着模型过于复杂,学到了训练数据中的噪声——过拟合。
- 不可约误差(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 为什么需要特征选择
- 减少过拟合(减少特征 = 降低 VC 维)
- 提高可解释性
- 降低训练和推理成本
- 避免维度诅咒
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
- 决策树/随机森林:基于特征的重要性排序
五、总结
- 偏差-方差权衡:模型复杂度增加时偏差下降、方差上升,最优点在总误差最低处
- 统一收敛理论:给出了经验风险和真实风险之间差距的上界
- VC 维:衡量假设空间表达能力,与所需样本数成正比
- 特征选择:减少特征可以降低 VC 维、提高泛化能力
六、正则化与模型选择
6.1 正则化的偏差-方差视角
从偏差-方差的角度看:
- L2 正则化(岭回归)增加偏差(参数被压缩向零),减少方差(参数估计更稳定)
- 正则化系数 $\lambda$ 控制偏差-方差的平衡
- $\lambda$ 通过交叉验证选择——在验证集上表现最好的 $\lambda$ 即为最优选择
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$ 也构成了误差的下界,这是任何模型都无法超越的。偏差项衡量模型假设与真实分布的偏离程度,方差项衡量模型对训练数据波动的敏感程度。简单模型(如线性回归)通常高偏差低方差,复杂模型(如深度神经网络)通常低偏差高方差。
延伸阅读
- 📺 B 站播放列表:Stanford CS229 — 斯坦福机器学习
- 📚 更多学习资源,请访问 deeplearning.ai 官网