到目前为止,我们一直专注于如何通过训练具有多个输出和 softmax 函数的(线性)神经网络来解决多类分类问题。将我们模型的输出解释为概率预测,我们激发并推导了交叉熵损失函数,它计算我们的模型(对于一组固定参数)分配给实际标签的负对数似然。最后,我们通过将我们的模型拟合到训练集来将这些工具付诸实践。然而,一如既往,我们的目标是学习一般模式,根据以前看不见的数据(测试集)进行经验评估。训练集上的高精度毫无意义。每当我们的每个输入都是唯一的(对于大多数高维数据集而言确实如此)时,我们可以通过仅记住第一个训练时期的数据集并随后在我们看到标签时查找标签来获得训练集的完美准确性一个新形象。然而,记住与确切训练示例相关联的确切标签并不能告诉我们如何对新示例进行分类。如果没有进一步的指导,每当我们遇到新的例子时,我们可能不得不求助于随机猜测。
许多紧迫的问题需要立即引起注意:
-
我们需要多少测试示例才能精确估计我们的分类器对基础人群的准确性?
-
如果我们在同一个测试中反复评估模型会发生什么?
-
为什么我们应该期望将我们的线性模型拟合到训练集应该比我们的朴素记忆方案更好?
虽然第 3.6 节介绍了线性回归背景下过度拟合和泛化的基础知识,但本章将更深入一些,介绍统计学习理论的一些基本思想。事实证明,我们通常可以先验地保证泛化:对于许多模型,以及泛化差距的任何期望上限ϵ,我们通常可以确定一些所需的样本数量n这样如果我们的训练集至少包含n样本,那么我们的经验误差将位于ϵ的真实错误,对于任何数据生成分布。不幸的是,事实证明,虽然这些类型的保证提供了一套深刻的知识构建块,但它们对深度学习从业者的实用性有限。简而言之,这些保证表明,确保先验深度神经网络的泛化需要数量荒谬的示例(可能数万亿或更多),即使我们发现,在我们关心的任务上,深度神经网络通常可以很好地泛化远更少的例子(千)。因此,深度学习从业者通常完全放弃先验保证,而是在过去对类似问题进行了很好泛化的基础上采用方法,并证明泛化事后 通过实证评估。当我们到达 第 5 节时,我们将重新审视泛化,并简要介绍大量科学文献,这些文献如雨后春笋般涌现,试图解释为什么深度神经网络在实践中泛化。
4.6.1. 测试集
由于我们已经开始依赖测试集作为评估泛化误差的黄金标准方法,所以让我们从讨论此类误差估计的属性开始。让我们关注一个固定的分类器f,而不用担心它是如何获得的。此外,假设我们拥有一个新的示例数据集 D=(x(i),y(i))i=1n未用于训练分类器的f. 我们分类器的经验误差f在D只是预测所针对的实例的一部分f(x(i))不同意真正的标签y(i), 并由以下表达式给出:
相比之下,总体误差是基础总体(某些分布P(X,Y) 以概率密度函数为特征p(x,y))我们的分类器不同意真实标签:
尽管ϵ(f)是我们真正关心的量,我们不能直接观察到它,就像我们不能不测量每个人就不能直接观察到大量人群的平均身高一样。我们只能根据样品估计这个数量。因为我们的测试集D是潜在人群的统计代表,我们可以查看ϵD(f)作为总体误差的统计估计ϵ(f). 此外,因为我们感兴趣的数量ϵ(f)是(随机变量的期望1(f(X)≠Y)) 和相应的估计量ϵD(f)是样本平均值,估计总体误差只是均值估计的经典问题,您可能还记得 2.6 节。
概率论的一个重要经典结果称为 中心极限定理,保证无论何时我们拥有n 随机样本a1,...,an从具有均值的任何分布中抽取μ和标准差σ, 作为样本数n接近无穷大,样本平均值