5.5. 深度学习中的泛化
在 Colab 中打开 Notebook
在 Colab 中打开 Notebook
在 Colab 中打开 Notebook
在 Colab 中打开 Notebook
在 SageMaker Studio Lab 中打开 Notebook

第 3 节第 4 节中,我们通过将线性模型拟合到训练数据来解决回归和分类问题。在这两种情况下,我们都提供了实用的算法来寻找使观察到的训练标签的似然性最大化的参数。然后,在每一章的结尾,我们都回顾了拟合训练数据只是一个中间目标。我们真正的追求一直是在此基础上发现*通用模式*,即使是对来自同一潜在总体的的新样本,我们也能做出准确的预测。机器学习研究人员是优化算法的*消费者*。有时,我们甚至必须开发新的优化算法。但归根结底,优化只是达到目的的一种手段。从本质上讲,机器学习是一门统计学科,我们希望优化训练损失,只是因为某些(已知或未知的)统计原理能引导所得模型泛化到训练集之外。

从好的方面来看,事实证明,通过随机梯度下降训练的深度神经网络在无数预测问题中都能很好地泛化,这些问题涵盖了计算机视觉、自然语言处理、时间序列数据、推荐系统、电子健康记录、蛋白质折叠、视频游戏和棋盘游戏中的价值函数逼近以及众多其他领域。从坏的方面来看,如果你想直接了解优化(为什么我们能将模型拟合到训练数据)或泛化(为什么最终的模型能泛化到未见过的样本),那么你可能要做好心理准备了。虽然我们优化线性模型的过程及其解的统计特性都有全面的理论支撑,但我们对深度学习的理解在这两方面都还处于“拓荒”阶段。

深度学习的理论和实践都在迅速发展,理论家们正采用新的策略来解释正在发生的事情,而实践者们则继续以惊人的速度创新,建立了用于训练深度网络的各种启发式方法,以及一套直觉和经验知识,为决定在何种情况下应用何种技术提供了指导。

目前的情况总结是,深度学习理论已经产生了一些有前景的研究方向和零散的有趣结果,但对于(i)为什么我们能够优化神经网络,以及(ii)为什么通过梯度下降学习到的模型即使在高维任务上也能够如此好地泛化,似乎仍远未给出一个全面的解释。然而,在实践中,(i)很少成为问题(我们总能找到拟合所有训练数据的参数),因此理解泛化是更大的问题。另一方面,即使没有统一的科学理论作为支撑,实践者们已经开发出大量的技术,可以帮助你在实践中生成泛化良好的模型。虽然任何简短的总结都无法涵盖深度学习中泛化这个庞大的主题,并且整体研究状况远未尘埃落定,但我们希望在本节中对研究和实践的现状做一个广泛的概述。

5.5.1. 再谈过拟合与正则化

根据 Wolpert and Macready (1995) 的“没有免费午餐”定理,任何学习算法在某些分布的数据上泛化得更好,而在其他分布上则更差。因此,给定一个有限的训练集,模型依赖于某些假设:为了达到人类水平的性能,识别反映人类如何思考世界的*归纳偏置*可能是有用的。这种归纳偏置表现为对具有某些属性的解的偏好。例如,一个深度的多层感知机(MLP)具有通过简单函数的组合来构建复杂函数的归纳偏置。

由于机器学习模型编码了归纳偏置,我们训练它们的方法通常包括两个阶段:(i)拟合训练数据;(ii)通过在留出数据上评估模型来估计*泛化误差*(在潜在总体上的真实误差)。我们在训练数据上的拟合度与在测试数据上的拟合度之间的差异称为*泛化差距*,当这个差距很大时,我们说我们的模型对训练数据*过拟合*了。在过拟合的极端情况下,我们可能完全拟合了训练数据,即使测试误差仍然很大。在经典观点中,这被解释为我们的模型过于复杂,需要我们要么减少特征数量,要么减少学习到的非零参数的数量,要么减小参数的大小。回想一下 第 3.6 节 中模型复杂度与损失的对比图(图 3.6.1)。

然而,深度学习以一种反直觉的方式使这幅图景复杂化了。首先,对于分类问题,我们的模型通常表达能力足够强,可以完美地拟合每一个训练样本,即使在包含数百万样本的数据集上也是如此 (Zhang 等人, 2021)。在经典观点中,我们可能会认为这种情况位于模型复杂度轴的最右端,任何泛化误差的改进都必须通过正则化来实现,要么通过降低模型类的复杂度,要么通过施加惩罚,严格限制我们参数可能取的值的集合。但事情就是从这里开始变得奇怪的。

奇怪的是,对于许多深度学习任务(例如,图像识别和文本分类),我们通常选择的模型架构都能够实现任意低的训练损失(和零训练误差)。因为所有考虑中的模型都能达到零训练误差,所以*进一步提升的唯一途径是减少过拟合*。更奇怪的是,尽管完美地拟合了训练数据,我们却常常可以通过使模型*更具表达力*来*减少泛化误差*,例如,增加层数、节点数或训练更多的轮数。更奇怪的是,泛化差距与模型*复杂度*(例如,网络的深度或宽度)之间的关系可能是非单调的,更大的复杂度起初会造成损害,但随后却有所帮助,呈现出一种所谓的“双下降”模式 (Nakkiran 等人, 2021)。因此,深度学习实践者拥有一系列技巧,其中一些似乎在某种程度上限制了模型,而另一些似乎使其更具表达力,而所有这些技巧在某种意义上都是为了减轻过拟合。

让事情进一步复杂化的是,尽管经典学习理论提供的保证即使对于经典模型也可能过于保守,但它们似乎无力解释深度神经网络为什么首先能够泛化。因为深度神经网络即使对于大型数据集也能够拟合任意标签,并且尽管使用了诸如 \(\ell_2\) 正则化等熟悉的方法,传统的基于复杂度的泛化界,例如基于假设类的VC维或Rademacher复杂度的泛化界,无法解释为什么神经网络能够泛化。

5.5.2. 来自非参数方法的启发

初次接触深度学习时,人们很容易将它们视为参数模型。毕竟,这些模型确实有数百万个参数。当我们更新模型时,我们更新的是它们的参数。当我们保存模型时,我们将它们的参数写入磁盘。然而,数学和计算机科学中充满了反直觉的视角转换,以及看似不同问题之间惊人的同构关系。虽然神经网络显然*有*参数,但在某些方面,将它们看作行为类似于非参数模型可能会更有启发性。那么,究竟是什么让一个模型成为非参数模型呢?虽然这个名称涵盖了多种不同的方法,但一个共同的主题是,非参数方法的复杂度往往随着可用数据量的增长而增长。

也许非参数模型最简单的例子是 \(k\)-近邻算法(我们稍后会介绍更多的非参数模型,例如在 第 11.2 节 中)。在这里,在训练时,学习器只是简单地记住数据集。然后,在预测时,当面对一个新点 \(\mathbf{x}\) 时,学习器会查找 \(k\) 个最近的邻居(即最小化某个距离 \(d(\mathbf{x}, \mathbf{x}_i')\)\(k\) 个点 \(\mathbf{x}_i'\))。当 \(k=1\) 时,这个算法被称为 \(1\)-近邻算法,该算法将始终达到零的训练误差。然而,这并不意味着该算法不会泛化。事实上,在一些温和的条件下,1-近邻算法是一致的(最终会收敛到最优预测器)。

请注意,\(1\)-近邻算法要求我们指定某个距离函数 \(d\),或者等价地,指定某个用于特征化我们数据的向量值基函数 \(\phi(\mathbf{x})\)。对于任何距离度量的选择,我们都将达到零训练误差并最终达到最优预测器,但不同的距离度量 \(d\) 编码了不同的归纳偏置,并且在有限的可用数据下会产生不同的预测器。距离度量 \(d\) 的不同选择代表了对底层模式的不同假设,不同预测器的性能将取决于这些假设与观察到的数据的兼容程度。

在某种意义上,由于神经网络是过度参数化的,拥有比拟合训练数据所需的参数多得多的参数,它们倾向于*插值*训练数据(完美地拟合它),因此在某些方面,其行为更像非参数模型。最近的理论研究已经建立了大型神经网络与非参数方法(特别是核方法)之间的深刻联系。具体来说,Jacot 等人 (2018) 证明,在极限情况下,随着具有随机初始化权重的多层感知机变得无限宽,它们变得等价于特定核函数(本质上是一个距离函数)的(非参数)核方法,他们称之为神经正切核。虽然当前的神经正切核模型可能无法完全解释现代深度网络的行为,但它们作为分析工具的成功,强调了非参数建模在理解过度参数化深度网络行为方面的用处。

5.5.3. 早停法

尽管深度神经网络能够拟合任意标签,即使标签被错误或随机分配 (Zhang 等人, 2021),这种能力也只在经过多轮训练后才会出现。一个新的研究方向 (Rolnick 等人, 2017) 揭示,在标签噪声的情况下,神经网络倾向于首先拟合干净标记的数据,然后才去插值那些错误标记的数据。此外,已经证实这种现象直接转化为泛化的保证:每当模型拟合了干净标记的数据,但没有拟合训练集中包含的随机标记的样本时,它实际上已经泛化了 (Garg 等人, 2021)

这些发现共同为*早停法*(early stopping)提供了理论支持,这是一种经典的深度神经网络正则化技术。在这里,我们不是直接限制权重的值,而是限制训练的轮数。确定停止标准的最常用方法是在整个训练过程中监控验证误差(通常在每个轮次后检查一次),当验证误差在一定轮数内没有减少超过某个小量 \(\epsilon\) 时,就停止训练。这有时被称为*耐心准则*。除了在有噪声标签的情况下可能带来更好的泛化效果外,早停法的另一个好处是节省时间。一旦满足了耐心准则,就可以终止训练。对于可能需要八个或更多GPU同时训练数天的大型模型,调优良好的早停法可以为研究人员节省数天的时间,并为他们的雇主节省数千美元。

值得注意的是,当没有标签噪声且数据集是*可实现的*(即类别是真正可分的,例如区分猫和狗)时,早停法通常不会导致泛化性能的显著提升。另一方面,当存在标签噪声或标签本身存在内在可变性时(例如,预测患者的死亡率),早停法至关重要。将模型训练到插值噪声数据通常不是一个好主意。

5.5.4. 深度网络的经典正则化方法

第 3 节 中,我们介绍了几种用于限制模型复杂度的经典正则化技术。特别地,第 3.7 节 介绍了一种称为权重衰减的方法,它通过在损失函数中添加一个正则化项来惩罚大的权重值。根据所惩罚的权重范数,该技术被称为岭正则化(对于 \(\ell_2\) 惩罚)或Lasso正则化(对于 \(\ell_1\) 惩罚)。在对这些正则化器的经典分析中,它们被认为对权重可以取的值有足够的限制,以防止模型拟合任意标签。

在深度学习的实现中,权重衰减仍然是一种流行的工具。然而,研究人员注意到,典型的 \(\ell_2\) 正则化强度不足以阻止网络插值数据 (Zhang 等人, 2021),因此,如果将其解释为正则化,其好处可能只有在与早停准则结合时才有意义。在没有早停法的情况下,这些方法可能导致更好的泛化,不是因为它们有意义地限制了神经网络的能力,而是因为它们以某种方式编码了与目标数据集中发现的模式更兼容的归纳偏置,就像层数或节点数(在深度学习中)或距离度量(在1-近邻中)一样。因此,经典正则化器在深度学习实现中仍然很受欢迎,即使其有效性的理论依据可能截然不同。

值得注意的是,深度学习研究人员还借鉴了最初在经典正则化背景下推广的技术,例如向模型输入添加噪声。在下一节中,我们将介绍著名的 dropout 技术(由 Srivastava 等人 (2014) 发明),它已成为深度学习的支柱,尽管其有效性的理论基础同样神秘。

5.5.5. 总结

与参数少于样本的经典线性模型不同,深度网络往往是过度参数化的,对于大多数任务,它们能够完美地拟合训练集。这种*插值机制*挑战了许多根深蒂固的直觉。从功能上看,神经网络像是参数模型。但将它们视为非参数模型有时可能是更可靠的直觉来源。因为通常情况下,所有考虑中的深度网络都能够拟合所有的训练标签,所以几乎所有的提升都必须通过减轻过拟合(缩小*泛化差距*)来实现。矛盾的是,减少泛化差距的干预措施有时似乎会增加模型复杂度,而其他时候又似乎会降低复杂度。然而,这些方法很少能将复杂度降低到足以让经典理论解释深度网络的泛化,并且*为什么某些选择会导致泛化能力的提高*,尽管许多杰出的研究人员付出了协同努力,但在很大程度上仍然是一个巨大的开放问题。

5.5.6. 练习

  1. 从何种意义上说,传统的基于复杂度的度量无法解释深度神经网络的泛化能力?

  2. 为什么*早停法*可以被视为一种正则化技术?

  3. 研究人员通常如何确定停止准则?

  4. 当早停法能显著改善泛化能力时,什么重要因素似乎是区分不同情况的关键?

  5. 除了泛化,描述早停法的另一个好处。

讨论