4.3 泛化、学习曲线与正则化:训练误差低只证明优化做到了
十五阶多项式穿过了每个训练点,曲线在点与点之间却剧烈摆动。训练 loss 接近零,只说明模型在这批样本和目标上被优化成功;它是否抓住可重复规律,要看真正独立的数据。
本课目标
- 区分 optimization、approximation、estimation 与 irreducible error;
- 用训练/验证学习曲线诊断问题;
- 理解 bias–variance decomposition 的适用范围;
- 根据失效原因选择正则化、数据、模型或分布修复。
1. 欠拟合和过拟合是现象,不是病因
典型观察:
- training 与 validation 都差:可能高 bias、特征不足、优化失败、标签噪声或任务不可预测;
- training 好、validation 差:可能高 variance、泄漏修复后差距、分布不匹配或验证样本太小;
- 两者都好、生产差:评估分布错、反馈循环、实现偏斜或指标不对应行动。
只看一对分数无法唯一诊断。要结合基线、学习曲线、分组/时间切片和错误样本来源。
2. 四类误差来源
- optimization error:没有充分找到 hypothesis class 中的低训练 loss 解;
- approximation error:模型类无法表达目标关系;
- estimation error:有限样本使选出的模型偏离类中最佳泛化模型;
- irreducible/noise:在当前信息下仍有随机性或 label 测量误差。
增加模型容量可减少 approximation error,却可能增加 estimation 难度;更多有效独立数据主要帮助 estimation;更久训练只解决 optimization。
3. 学习曲线比一次分数更有信息
在不同训练样本量上重复拟合,分别计算 train/validation loss:
from sklearn.model_selection import learning_curve
sizes, train_scores, valid_scores = learning_curve(
estimator=pipeline,
X=X,
y=y,
cv=group_or_time_aware_cv,
scoring="neg_log_loss",
train_sizes=[0.1, 0.25, 0.5, 0.75, 1.0],
n_jobs=-1,
)解释时关注均值、折间分布和曲线趋势:
- 两条曲线在较差水平接近:模型/特征/目标可能不足;
- gap 大且 validation 随数据增加改善:更多相似数据可能有用;
- validation 提前平台:数据量并非主要瓶颈;
- 某些时间折恶化:可能是 drift,而非传统过拟合。
训练子集必须保持 group/time 结构,不能为画曲线破坏切分。
4. Bias–variance decomposition 的准确边界
在 squared-error regression、固定输入等标准设定下:
$$ E[(Y-\hat f(X))^2] =Bias^2+Variance+Noise. $$
它提供直觉:模型对不同训练样本的敏感性是 variance,平均预测偏离真实回归函数是 bias。
但 classification error、log loss、现代过参数化网络并不总能用同一简单公式解释。“降低 bias 必然升高 variance”也不是每次工程改动的铁律;更好的特征或更多数据可能同时改善两者。
5. 显式正则化
在经验 loss 上加入复杂度惩罚:
$$ \hat R(f)+\lambda\Omega(f). $$
- L2 收缩参数,常改善稳定性;
- L1 可产生稀疏解,但相关特征选择不稳定;
- tree depth/min samples 约束分裂;
- margin、smoothness、monotonic constraint 编码不同 inductive bias。
$\lambda$ 必须在 inner validation/CV 选择。惩罚前的尺度、参数化和是否包含 intercept 会改变含义。
6. 隐式正则化与训练过程
- early stopping 限制优化轨迹;
- SGD 的 batch、learning rate 和噪声影响解;
- architecture 约束可表达函数;
- dropout 对特定神经网络形成随机正则;
- pruning/quantization 主要是压缩,也可能改变泛化。
这些不是通用药方。Early stopping 使用 validation 选择停止点,validation 已参与模型选择;最终评估仍需独立边界。
7. Data augmentation 要保持标签语义
图像平移、文本改写、音频扰动等声明某种 invariance。若变换后 label 不应保持,augmentation 会制造错误数据:把道路标志左右翻转、医学影像改变方位、否定句同义改写失败。
验证:
- 变换在真实部署中合理;
- label/结构保持;
- 不泄漏 validation/test;
- 各群体效用没有系统下降;
- 增益来自目标分布,而不是人工样本特征。
8. 标签噪声与困难样本
高 loss 样本可能是:
- 真正罕见但重要;
- 误标或输入损坏;
- 分布外;
- 模型尚未学会。
自动删除“难样本”会抹掉少数群体和真实边界。先追溯来源、复核样本并报告处理。Robust loss、label smoothing 和 noise model 依赖噪声假设,不能替代标签审计。
9. 分布变化不是普通 variance
Train/validation 同分布泛化好,不保证在 covariate shift、label shift、concept drift 或政策变化下保持。
P(X) 变化:输入人群/设备变化
P(Y) 变化:基准率变化
P(Y|X) 变化:关系/定义改变
selection 变化:谁被观察/获得标签改变按时间、站点和关键群体切片;建立新鲜 holdout、shadow evaluation 和上线监控。正则化不能修复错误目标分布。
10. 对症行动表
| 证据 | 优先行动 |
|---|---|
| train/valid 都不如简单 baseline | 查任务、特征、优化和 label |
| gap 随样本增加明显缩小 | 获取更多相似且独立数据 |
| gap 大且模型容量过高 | 正则化/简化/更稳切分 |
| 特定时间/站点崩溃 | 修复分布覆盖或限定使用 |
| 少数群体 label 质量差 | 修采集与标签,不只调模型 |
| 生产与离线不一致 | 查 pipeline parity 和反馈循环 |
常见误区
- 训练误差低说明学到了规律:可能只记住样本或泄漏。
- 欠拟合只需换更复杂模型:优化、标签和信息不足也会导致。
- 所有正则化都能防过拟合:必须匹配模型和失效原因。
- 更多数据一定有效:错误分布或错误标签只会扩大问题。
练习
- 为多项式回归画训练和验证曲线,不只报告 training MSE。
- 构造优化不足与高 bias 两种“train/valid 都差”案例。
- 比较 L1/L2 在相关特征下的选择稳定性。
- 为一个时间漂移问题说明为何增加旧数据可能变差。
小结
泛化诊断需要把训练表现、独立验证、样本规模和分布变化放在一起。正则化只是控制模型的一种方式;任务、标签、数据覆盖和部署一致性往往更先决定上限。
下一章进入线性模型:从平方损失和概率建模出发,理解线性回归、逻辑回归及其优化,而不是只调用一个 fit()。