两个概念

欠拟合(Underfitting):模型连训练数据都没学好,在训练集和测试集上表现都差。

原因:模型太简单、特征不足、训练不充分。

表现:训练误差高,测试误差也高。

过拟合(Overfitting):模型把训练数据"背"下来了,包括其中的噪声,但泛化到新数据上表现差。

原因:模型过于复杂、训练数据太少或噪声太多、训练时间过长。

表现:训练误差很低,但测试误差明显更高。

怎么判断

学习曲线是最常用的诊断工具:

  • 同时绘制训练集和验证集的误差随训练轮次的变化;
  • 欠拟合:两条曲线都高,且差距小;
  • 过拟合:训练误差持续下降,验证误差先降后回升(两条曲线拉开差距)。

应对欠拟合

  • 增加模型复杂度(更多层、更多参数);
  • 增加/改进特征(特征工程);
  • 减少正则化;
  • 训练更久;
  • 换用更合适的模型。

应对过拟合

一、增加数据

这是最有效的手段,但往往最贵。

二、数据增强

对训练数据做保持语义的变换:图像(旋转、裁剪、翻转、颜色抖动)、文本(同义替换、回译)、音频(加噪、变速)。

三、正则化

  • L1/L2 正则:在损失函数中加入权重的惩罚项,限制模型复杂度;
  • Dropout:训练时随机"关闭"一部分神经元,防止模型过度依赖特定特征;
  • 权重衰减:限制参数幅值。

四、早停(Early Stopping)

在验证误差开始上升时停止训练。

五、简化模型

减少参数量或层数。

六、集成方法

训练多个模型,取其平均——能降低方差,改善泛化。

七、批归一化(Batch Normalization)

除了加速训练,也有一定的正则化效果。

偏差-方差分解

一个理解框架:

  • 偏差(Bias):模型本身的假设与真实的偏离程度。高偏差 → 欠拟合;
  • 方差(Variance):模型对训练数据微小变化的敏感程度。高方差 → 过拟合。

模型复杂度增加:偏差下降,方差上升。

目标:找到偏差和方差总和最小的点——这就是"模型容量与数据量匹配"的问题。

一个大模型的反直觉现象

在现代深度学习中,存在"双下降(Double Descent)"现象:

模型复杂度增加到某个点后,测试误差先上升(经典过拟合区),然后再次下降——当参数量远超数据量时,模型反而能很好地泛化。

这与经典的偏差-方差权衡曲线不完全一致,是当前理论研究的热点之一。

实践含义:不要简单地认为"参数比数据多就一定会过拟合"。

说明:本文为机器学习基础的知识整理。