过拟合
模型在训练数据上表现优秀,面对没见过的新数据却表现很差——相当于"背答案"而非"学方法",是训练神经网络最常见的陷阱。
直觉理解
想象你在备考期末考试。老师给了 100 道练习题,你把每道题的答案都背了下来——练习题全对。但换一套新卷子,全不会。
这就是过拟合:模型在训练数据上损失趋近于零,面对新数据却一塌糊涂。它"记住"了训练数据的每个细节(包括噪声和巧合),而没有学到真正的规律。
根源
过拟合的核心原因是模型的参数相对于数据量来说太多了。参数多意味着模型有足够的"记忆力"逐条记住训练数据的答案,而不需要提炼规律。
给 10 道题,记忆力超强的学生可以逐题背答案;给 10000 道题,他被迫去理解解题方法。
如何诊断
每训练一轮(epoch),分别计算训练集和验证集上的损失,画成两条曲线:
- 训练损失↓ 验证损失也↓:正常学习
- 训练损失↓ 验证损失↑:过拟合——模型开始"背答案"
- 训练损失高 验证损失也高:欠拟合——还没学够
常见对策
- Early Stopping:验证损失不再下降时停止训练,回退到最优点
- 正则化 / 权重衰减:在损失函数后加惩罚项 L+λ∑w2,约束权重大小
- Dropout:训练时随机关闭一部分神经元,分散网络能力
代码中怎么发现
训练循环中同时记录训练损失和验证损失。当两条线开始分叉——训练损失继续下降而验证损失反弹——就是过拟合的信号。TensorBoard 等工具可以实时绘制这对曲线。