过拟合

模型在训练数据上表现优秀,面对没见过的新数据却表现很差——相当于"背答案"而非"学方法",是训练神经网络最常见的陷阱。

直觉理解

想象你在备考期末考试。老师给了 100 道练习题,你把每道题的答案都背了下来——练习题全对。但换一套新卷子,全不会。

这就是过拟合:模型在训练数据上损失趋近于零,面对新数据却一塌糊涂。它"记住"了训练数据的每个细节(包括噪声和巧合),而没有学到真正的规律。

根源

过拟合的核心原因是模型的参数相对于数据量来说太多了。参数多意味着模型有足够的"记忆力"逐条记住训练数据的答案,而不需要提炼规律。

给 10 道题,记忆力超强的学生可以逐题背答案;给 10000 道题,他被迫去理解解题方法。

如何诊断

每训练一轮(epoch),分别计算训练集和验证集上的损失,画成两条曲线:

  • 训练损失↓ 验证损失也↓:正常学习
  • 训练损失↓ 验证损失↑:过拟合——模型开始"背答案"
  • 训练损失高 验证损失也高:欠拟合——还没学够

常见对策

  1. Early Stopping:验证损失不再下降时停止训练,回退到最优点
  2. 正则化 / 权重衰减:在损失函数后加惩罚项 L+λw2L + \lambda \sum w^2L+λw2,约束权重大小
  3. Dropout:训练时随机关闭一部分神经元,分散网络能力

代码中怎么发现

训练循环中同时记录训练损失和验证损失。当两条线开始分叉——训练损失继续下降而验证损失反弹——就是过拟合的信号。TensorBoard 等工具可以实时绘制这对曲线。