① 模型在训练数据上拟合的比在潜在分布中更接近的现象,就叫过拟合(overfitting)
② 用于对抗过拟合的技术称为正则化(regularization)
1 训练误差和泛化误差
①训练误差(training error): 模型在训练数据集上计算得到的误差。
②泛化误差(generalization error): 一个模型在训练完毕后,应用于新的、未见过的数据集时所产生的误差。它反映了模型在处理真实世界中样本的能力,而不仅仅是在训练集上的表现。
2 统计学习理论
泛化是机器学习中的基本问题, 在同名定理(eponymous theorem)中, 格里文科和坎特利推导出了训练误差收敛到泛化误差的速率。 在一系列开创性的论文中, Vapnik和Chervonenkis 将这一理论扩展到更一般种类的函数。 这项工作为统计学习理论奠定了基础。
们假设训练数据和测试数据都是从相同的分布中独立提取的。 这通常被称为独立同分布假设。
有时候我们即使轻微违背独立同分布假设,模型仍将继续运行得非常好。 比如,我们有许多有用的工具已经应用于现实,如人脸识别、语音识别和语言翻译。
有些违背独立同分布假设的行为肯定会带来麻烦。 比如,我们试图只用来自大学生的人脸数据来训练一个人脸识别系统, 然后想要用它来监测疗养院中的老人。 这不太可能有效,因为大学生看起来往往与老年人有很大的不同。
当我们训练模型时,我们试图找到一个能够尽可能拟合训练数据的函数。 但是如果它执行地“太好了”,而不能对看不见的数据做到很好泛化,就会导致过拟合。
3 模型的复杂性
当我们有简单的模型和大量的数据时,我们期望泛化误差与训练误差相近。
当我们有更复杂的模型和更少的样本时,我们预计训练误差会下降,但泛化误差会增大。
通常对于神经网络,我们认为需要更多训练迭代的模型比较复杂, 而需要早停(early stopping)的模型(即较少训练迭代周期)就不那么复杂。
本节为了给出一些直观的印象,我们将重点介绍几个倾向于影响模型泛化的因素。
- 可调整参数的数量。当可调整参数的数量(有时称为自由度)很大时,模型往往更容易过拟合。
- 参数采用的值。当权重的取值范围较大时,模型可能更容易过拟合。
- 训练样本的数量。即使模型很简单,也很容易过拟合只包含一两个样本的数据集。而过拟合一个有数百万个样本的数据集则需要一个极其灵活的模型。
4 模型选择
在机器学习中,我们通常在评估几个候选模型后选择最终的模型, 这个过程叫做模型选择。 为了确定候选模型中的最佳模型,我们通常会使用验证集。
4.1 验证集
我们在训练集进行训练,调整模型的参数,使得模型能够拟合训练数据的特征。
我们在验证集进行调优,用于调优模型的超参数或架构,比如选择最佳的模型结构、调整正则化参数等。
我们在测试集进行评估,在模型训练完毕后,用于评估模型的最终性能。
4.2 K折交叉验证
当训练数据稀缺时,我们甚至可能无法提供足够的数据来构成一个合适的验证集。
此时便会采用 K K K 折交叉验证,原始训练数据被分成 K K K 个不重叠的子集,然后执行 K K K 次模型训练和验证,每次在 K − 1 K-1 K−1 个子集上进行训练, 并在剩余的一个子集(在该轮中没有用于训练的子集)上进行验证。 最后,通过对 K K K 次实验的结果取平均来估计训练和验证误差。
5 欠拟合和过拟合
①欠拟合: 在训练集和测试集上的表现都不好。欠拟合通常是由于模型过于简单,无法捕捉数据的复杂结构。
②过拟合: 在模型在训练数据上表现得过于出色,但在验证集或新数据上表现较差。
注意:过拟合不一定是坏事:众所周知, 最好的预测模型在训练数据上的表现往往比在验证数据上好得多。 最终,我们通常更关心验证误差,而不是训练误差和验证误差之间的差距。
是否过拟合或欠拟合可能取决于模型复杂性和可用训练数据集的大小, 这两个点将在下面进行讨论。
5.1 模型复杂度
为了说明一些关于过拟合和模型复杂性的经典直觉, 我们给出一个多项式的例子。
假设有单个特征 x x x 和对应实数标签 y y y 组成的训练数据集,我们试图通过 d d d阶多项式来估计标签 y y y:
这是一个线性回归问题,可以使用平方差来作为损失函数。我们已知高阶多项式比低阶多项式复杂得多,所以有以下关系:
随着模型复杂度增加,训练损失在不断减小,但是泛化损失却反而从最低点开始不断增大
5.2 数据集大小
训练数据集中的样本越少,我们就越有可能(且更严重地)过拟合。 随着训练数据量的增加,泛化误差通常会减小。