4.4. 模型选择、欠拟合和过拟合 — 动手学深度学习 2.0.0-beta0 documentation (d2l.ai)

将模型在训练数据上拟合的比在潜在分布中更接近的现象称为过拟合(overfitting), 用于对抗过拟合的技术称为正则化(regularization)。

训练误差和泛化误差

  • 训练误差(training error)是指, 模型在训练数据集上计算得到的误差。
  • 泛化误差(generalization error)是指, 模型应用在同样从原始样本的分布中抽取的无限多的数据样本时,模型误差的期望

独立同分布假设I.I.D

在我们目前已探讨、并将在之后继续探讨的监督学习情景中, 我们假设训练数据和测试数据都是从相同的分布中独立提取的。 这通常被称为独立同分布假设(i.i.d. assumption), 这意味着对数据进行采样的过程没有进行“记忆”。 换句话说,抽取的第2个样本和第3个样本的相关性, 并不比抽取的第2个样本和第200万个样本的相关性更强。

有时候我们即使轻微违背独立同分布假设,模型仍将继续运行得非常好。

有些违背独立同分布假设的行为肯定会带来麻烦。

模型复杂性

  • 简单的模型和大量的数据:训练误差与期望泛化误差接近
  • 复杂的模型和更少的数据:训练误差下降👇泛化误差👆

通常对于神经网络,我们认为需要更多训练迭代的模型比较复杂, 而需要“早停”(early stopping)的模型(即较少训练迭代周期)就不那么复杂。

几个倾向于影响模型泛化的因素:

  1. 可调整参数的数量。 当可调整参数的数量(有时称为自由度)很大时,模型往往更容易过拟合。
  2. 参数采用的值。 当权重的取值范围较大时,模型可能更容易过拟合。
  3. 训练样本的数量。 即使你的模型很简单,也很容易过拟合只包含一两个样本的数据集。而过拟合一个有数百万个样本的数据集则需要一个极其灵活的模型。

模型选择

评估几个候选模型后选择最终的模型。

验证集

  • 不能依靠测试数据进行模型选择:防止测试数据过拟合
  • 不能依靠训练数据进行模型选择:无法估计泛化误差

K折交叉验证

  • 场景: 当训练数据稀缺时,我们甚至可能无法提供足够的数据来构成一个合适的验证集。
  • 方案:
    • 原始训练数据被分成K个不重叠的子集。
    • 然后执行K次模型训练和验证,每次在K−1个子集上进行训练,并在剩余的一个子集(在该轮中没有用于训练的子集)上进行验证。 最后,通过对K次实验的结果取平均来估计训练和验证误差。

欠拟合与过拟合

欠拟合(underfitting):