跳到内容

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:

python
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 或政策变化下保持。

text
P(X) 变化:输入人群/设备变化
P(Y) 变化:基准率变化
P(Y|X) 变化:关系/定义改变
selection 变化:谁被观察/获得标签改变

按时间、站点和关键群体切片;建立新鲜 holdout、shadow evaluation 和上线监控。正则化不能修复错误目标分布。

10. 对症行动表

证据优先行动
train/valid 都不如简单 baseline查任务、特征、优化和 label
gap 随样本增加明显缩小获取更多相似且独立数据
gap 大且模型容量过高正则化/简化/更稳切分
特定时间/站点崩溃修复分布覆盖或限定使用
少数群体 label 质量差修采集与标签,不只调模型
生产与离线不一致查 pipeline parity 和反馈循环

常见误区

  • 训练误差低说明学到了规律:可能只记住样本或泄漏。
  • 欠拟合只需换更复杂模型:优化、标签和信息不足也会导致。
  • 所有正则化都能防过拟合:必须匹配模型和失效原因。
  • 更多数据一定有效:错误分布或错误标签只会扩大问题。

练习

  1. 为多项式回归画训练和验证曲线,不只报告 training MSE。
  2. 构造优化不足与高 bias 两种“train/valid 都差”案例。
  3. 比较 L1/L2 在相关特征下的选择稳定性。
  4. 为一个时间漂移问题说明为何增加旧数据可能变差。

小结

泛化诊断需要把训练表现、独立验证、样本规模和分布变化放在一起。正则化只是控制模型的一种方式;任务、标签、数据覆盖和部署一致性往往更先决定上限。

下一章进入线性模型:从平方损失和概率建模出发,理解线性回归、逻辑回归及其优化,而不是只调用一个 fit()

Built with VitePress | Software Systems Atlas