过拟合与验证
过拟合是模型在当前样本上学到了不能泛化的细节。验证将一部分数据排除在参数拟合之外,再对其评分,用来检查训练表现是否转化为未见数据的表现。
本课把不同阶数的多项式拟合到同样十个带噪点。九阶训练误差显示为零,验证误差却是三阶的 899 倍。对嵌套、无正则化的模型类,精确最优训练误差随容量增加不会上升,所以不能靠它选择容量;实际数值求解或非凸优化并不自动保证这种单调性。
过拟合怎样发生
数据来自 y = 0.8·sin(πx)、x ∈ [−1, 1],每次测量加高斯噪声。函数形状可以重复,某个点的噪声不必在下一批出现。
d 阶多项式有 d+1 个系数,阶数是容量控制。一次项只能画直线,无法表示曲线,属于欠拟合。区间内的正弦有两个转折、关于原点呈奇对称;三次多项式是能表达这种 S 形的最低阶,但并非与正弦完全相等。二次项可改变带噪拟合,只是在本例改善有限。
继续加到五、六、七阶,额外自由度开始追随个别训练点的偏移。针对这些点的纵向残差下降,但验证点没有相同噪声,误差上升。
十个互异 x 值配九阶多项式,有十个系数,可穿过全部训练点。最小二乘在浮点精度内插值,训练误差显示 0.0000,但点间的曲线摆到约 ±353 的尺度,超出画布。验证点落在这些间隙,误差很大。问题不是惩罚弯曲本身,而是这组弯曲只适合当前样本。
逐步演示
默认十个训练点、十个验证点,噪声 σ = 0.25。每一阶分两个节拍:只用训练集拟合,再用同一条曲线计算验证分数。
点到曲线的线段是竖直残差,平方后取均值。模型由 x 预测 y,目标不是到曲线的垂直距离;PCA 的正交投影误差属于另一种目标。
| 阶数 | 训练 MSE | 验证 MSE | 观察 |
|---|---|---|---|
| 1 | 0.2711 | 0.1367 | 直线不能跟随形状 |
| 2 | 0.2482 | 0.1335 | 改善有限 |
| 3 | 0.0703 | 0.0305 | 验证最低,跟随整体趋势 |
| 4 | 0.0665 | 0.0475 | 训练继续降,验证开始升 |
| 5 | 0.0543 | 0.0583 | 追随样本细节 |
| 6 | 0.0501 | 0.0860 | 两条误差分离 |
| 7 | 0.0483 | 0.1549 | 验证约为三阶五倍 |
| 8 | 0.0437 | 1.2059 | 曲线到约 ±29 尺度,越出图框 |
| 9 | 0.0000 | 27.4512 | 十个系数穿过十点,点间摆动剧烈 |
按验证选三阶得到 0.0305;按训练选九阶得到 27.4512 验证误差,约差 899 倍。两条曲线拟合时都没用验证点,但选择过程已经用过验证分数,因此它不能再充当最终独立测试。
训练误差为何不能选模型
d 阶多项式属于 d+1 阶模型类:把最高阶系数设为零即可。因此相同数据和无正则化平方误差下,高一阶的最优训练误差最多持平,不会更差。这里是代数上的包含关系,不是一次实验的巧合。
训练损失下降能帮助检查优化,却不能单独证明泛化改善。验证点未参与参数拟合,误差可以上升,正是有用的对照。代价是暂时保留一些数据不用于该次拟合。k 折交叉验证让各点轮流验证,并不意味着某个折的模型可同时用其验证点训练;模型选定后可另行重训。
三个对照实验
- 小样本,8 点:七阶已能插值,验证误差
0.8869,约为最好模型 15 倍。插值门槛是n − 1,不是固定“九阶太大”。 - 更多数据,20 点:同样噪声、同样九阶,验证只比最佳差约 1.5 倍,曲线不再越界。十个系数通常无法穿过二十个带噪点;容量是否过多取决于数据与正则化,更多数据也不是每次必然解决问题。
- 无噪声,
σ = 0:点在真实函数上。本次 U 形消失,五阶附近已接近显示误差底部,后续没有高阶反弹,验证选最高阶。这个结果不能推广为无噪声就不会过拟合。
干净数据的高阶插值也可能在点间剧烈振荡,例如 Runge 现象。本例的正弦、节点和有限阶数没有触发该问题;均匀节点并不普遍防止 Runge 现象。应迁移的是验证方法,不是“所有过拟合都来自噪声”的诊断。
边界情况
- 阶数
n − 1:若 x 互异,可对任意目标值插值,训练误差在浮点精度内为零。零误差本身无法区分信号拟合和噪声拟合,不表示该曲线必然无用。 - 阶数不小于 n:系统欠定,多条曲线可过全部点,解取决于求解器的选择。本课停在
min(9, n − 1)。 - 零噪声:本次没有 U 形,最高阶的验证误差最低,验证选择最高阶,不出现默认的 899 倍反例。
- 对数轴底线:误差轴按本次分数范围设置,跨二至四个数量级。精确零无法放到对数轴上,标记钉在底线并显示
≈0。 - 越界曲线:二阶和七阶的曲线略微越出画框,八、九阶远远越界,按画框裁剪,插值那一拍的状态行会说明;不是用绘图隐藏拟合问题。
常见错误
- 把训练下降当作模型更好的证据。本课最优训练误差因模型类嵌套而不增,仍需验证。
- 反复看测试集来选模型。通常用训练集拟合、验证集选择,保留最终测试集在决策冻结后评估;否则人为选择也会泄漏测试信息。
- 认为越简单越安全。一次模型的验证误差
0.1367,是三阶的四倍多,欠拟合也有成本。 - 把所有容量都等同参数数目。实际容量与深度、宽度、树结构、训练时间和正则化相互作用;可保留大模型并约束系数。
- 验证不好就一定缩模型。也可能需要更多有代表性的数据,或改正分布差异等问题。
模型范围
这里实际运行最小二乘:在 Chebyshev 基底上使用 Householder QR,九阶插值达到浮点精度,而非符号上的绝对精确。只含一个输入特征、一个多项式模型类、一次训练/验证划分,没有最终测试集、k 折或正则化。真实方案仍需完成独立测试,并按任务选择正则化与评估协议。