学习 / 神经网络 / 04

神经网络 · 第 04 条 · 训练机制

过拟合:模型背答案而不是学规律

模型在训练数据上表现完美、在新数据上一塌糊涂——这是机器学习里最常见也最根本的失败模式。

难度 入门约 11 分钟前置:1 条更新 2026-09-28

什么是过拟合

过拟合(overfitting)指模型记住了训练数据的细节和噪声,而不是学到了背后的规律。结果就是:见过的数据答得很准,没见过的数据答得很差。

它不是「模型太笨」,恰恰相反,是模型的表达能力相对于数据的丰富度来说太强了——强到可以把随机噪声也当成规律记下来。

怎么发现它

唯一可靠的方法是留出验证集:训练时切出一部分数据不参与学习,只用来看表现。

训练集和验证集的差距,就是过拟合的信号。
两者都差 → 欠拟合(模型太弱或训练不足)
训练好、验证差 → 过拟合
两者都好且接近 → 健康

这是整个机器学习里最基础的诊断方法,值得牢记。

常见的应对手段

02550751000255075100训练轮数(epoch)损失训练集损失验证集损失从这里开始过拟合两条线的差距就是过拟合的信号——早停就是在这里停下来
蓝线是训练集损失,红线是验证集损失。注意红线从 40 那里开始掉头向上——模型还在训练集上变好,但已经开始在新数据上变差。两条线的差距就是过拟合的大小,早停就是在这个拐点停下来。

一个反直觉的事实

在深度学习中,人们发现了一个奇怪的现象:很大的模型在训练数据远多于参数时,往往泛化得更好——这跟「参数越多越容易过拟合」的经典直觉相矛盾。

一个被广泛接受的解释是:在超高维参数空间里,「泛化好的解」其实很多,随机梯度下降的固有偏好会把模型带到其中一类比较「平坦」的解上,而平坦的解对数据扰动更不敏感、泛化更好。这也解释了为什么大模型并不像经典理论预测的那样容易过拟合。

实际中的优先顺序

通常按这个顺序处理:① 先检查数据质量和对齐(标签有没有错)→ ② 加数据 → ③ 数据增强 → ④ 正则化和早停 → ⑤ 才考虑改结构。

很多人一遇到效果不好就去调模型结构,但绝大多数问题的根源在数据和训练设置上。

要点回顾
← 损失函数与梯度下降 卷积网络在做什么 →