-翻译自Are Deep Neural Networks Dramatically Overfitted?
如果你像我一样,带着传统机器学习的经验进入深度学习领域,你可能经常思考这个问题:由于典型的深度神经网络有如此多的参数并且训练误差很容易被完善,它肯定会遭受严重的过度拟合。那么深度学习模型如何在训练样本之外的数据上进行泛化?
在努力理解为什么深度神经网络能够以某种方式泛化的过程中,我想起了这篇关于系统生物学的有趣论文 - “生物学家可以修理收音机吗?”(Lazebnik,2002)。 如果一位生物学家想要像她在生物系统上工作一样修理一台无线电机器,那么生活可能会很艰难。 由于无法揭示无线电系统的完整工作机制,因此寻找小的局部功能可能会给出一些提示,但却很难呈现出系统内的所有交互,更不用说整个工作流程了。无论你认为它与DL有关,它都是一个非常有趣的阅读。
我想讨论一些关于深度学习模型的泛化性和复杂性度量的论文。 希望它可以阐明您的思路,以了解为什么DNN可以泛化。
1 压缩与模型选择的经典定理
1.1 奥卡姆剃刀(Occam’s Razor)
奥卡姆剃刀是一个非正式的解决问题的原则,由William of Ockham在14世纪提出:
“Simpler solutions are more likely to be correct than complex ones.”
PS:我们一般将这个原理称为“如无必要,勿增实体”,即“简单有效原理”。
当我们面对多个潜在的候选理论来解释世界并且必须选择一个时,这个原理是非常强大的。 对于一个问题来说,太多不必要的假设似乎是合理的,但更难以推广到其他复杂的问题上或最终通往宇宙的基本原则。
想到这一点,人们花了数百年的时间才发现白天的天空是蓝色的,但日落时的红色是因为同样的原因(瑞利散射),尽管两种现象看起来非常不同。 人们必须分别为他们提出许多其他解释,但统一和简单的版本最终获胜。
1.2 最小描述长度原则(Minimum Description Length principle)
奥卡姆剃刀的原理可以类似地应用于机器学习模型。这种概念的形式化版本称为最小描述长度(MDL)原则,用于比较给定数据的竞争模式/解释。
“Comprehension is compression.”
PS:其想法是,在给予假说的集合的情况下,能产生最多资料压缩效果的那个假说是最好的。
MDL的基本思想是将学习视为数据压缩。通过压缩数据,我们需要发现具有高潜力的数据中的规律性或模式,以推广到看不见的样本。信息瓶颈理论认为,深度神经网络训练时首先通过最小化泛化误差来表示数据,然后通过修剪噪声来学习压缩这种表示。
同时,MDL将模型描述视为压缩传递的一部分,因此模型不能任意大。
MDL原则的两部分版本表明:设,,...是可以解释数据集的模型列表。其中最好的假设应该是最小化总和的假设:
- 是以比特表示的模型的长度。
- 是用编码时数据的描述长度
简单来说,最好的模型是包含编码数据和模型本身的最小模型。按照这个标准,我在本节开头提出的记忆方法听起来很糟糕,无论它在训练数据上的准确度如何。
人们可能认为奥卡姆的剃刀是错误的,由于现实世界可能是任意复杂的,为什么我们必须找到简单的模型?关于MDL的一个有趣的观点是将模型视为“语言”而不是基本的生成定理。我们希望找到良好的压缩策略来描述一小组样本中的规律性,并且它们不一定是用于解释该现象的“真实”生成模型。模型可能是错误的但却仍然有用(即,考虑任何贝叶斯先验)。
1.3 柯氏复杂性(Kolmogorov Complexity)
柯氏复杂性依赖于通过现代计算机的概念来定义对象的算法(描述性)复杂性:它是描述对象的最短二进制计算机程序的长度。在MDL之后,计算机本质上是最通用的数据解压缩器形式。
柯氏复杂性的正式定义指出:给定通用计算机和程序,让我们将表示为计算机处理程序后的输出,将表示为程序的描述长度。 然后,通用计算机对字符串的柯氏复杂性是:
请注意,通用计算机可以模仿任何其他计算机的操作。所有现代计算机都是通用的,因为它们都可以简化为图灵机。无论我们使用哪台计算机,这个定义都是通用的,因为另一台通用计算机总是可以通过编程来克隆的行为,而编码这个克隆程序只是一个常量。
柯氏复杂性与香农信息论之间存在很多联系,因为两者都与通用编码有关。令人惊讶的是,随机变量的预期柯氏复杂度近似等于其香农熵(参见报告的第2.3节)。关于这个主题的更多内容超出了这里的范围,但在线有许多有趣的读物。 帮助自己:)
1.4 Solomonoff的归纳推理理论(Solomonoff’s Inference Theory)
奥卡姆剃刀的另一个数学形式化是Solomonoff的通用归纳推理理论(Solomonoff,1964)。 其原则是基于其柯氏复杂性,支持与“最短程序”相对应的模型来生成训练数据。
2 DL模型的表现力
与传统的统计模型相比,深度神经网络具有极其多的参数。如果我们使用MDL来测量深度神经网络的复杂性并将参数数量视为模型描述长度,那么它看起来会很糟糕。模型描述很容易失控。
然而,具有大量的参数是神经网络获得高表现力的必要条件。由于深度神经网络具有捕获任何灵活数据表示的强大能力,因此在许多应用中取得了巨大成功。
2.1 通用逼近定理(Universal Approximation Theorem)
通用近似定理指出前馈网络具有:1)线性输出层,2)至少一个包含有限数量神经元的隐藏层和3)一些激活函数可以将的紧致子集上的任何连续函数逼近任意准确性。该定理首先被证明是用于sigmoid激活函数(Cybenko,1989)。后来证明了通用逼近性质并不特定于激活的选择(Hornik,1991),而是多层前馈结构。
虽然具有单层结构的前馈网络足以表示任何函数,但是网络的宽度必须是指数级大的。通用逼近定理不能保证模型是否可以被正确地学习或泛化。通常,添加更多层有助于减少浅层网络中所需的隐藏神经元的数量。
为了利用通用逼近定理,我们总能找到一个神经网络来表示在任何所需阈值下具有误差的目标函数,但这需要付出一些代价 - 网络可能会变得非常大。
2.2 证明:双层神经网络的有限样本表达性(Proof: Finite Sample Expressivity of Two-layer NN)
我们到目前为止讨论的通用逼近定理没有考虑有限样本集。Zhang, et al. (2017)提供了关于双层神经网络的有限样本表达性的简洁证明。
在以下条件下,神经网络可以表示为给定样本大小为维度为的任何函数:对于每个有限样本集,其中,并且在此样本集上定义的每个函数:,我们可以找到的一组权重配置,使。
论文提出了一个定理:
There exists a two-layer neural network with ReLU activations and 2n+d weights that can represent any function on a sample of size n in d dimensions.
PS: 存在具有ReLU激活和2n+d个权重的双层神经网络,其可以表示尺寸为n的d维样本上的任何函数。
证明: 首先,我们构建一个双层神经网络。其输入是维的向量。 网络的隐藏层具有个隐藏单元,其权重矩阵为,偏置值为,并且使用ReLU激活函数。第二层输出具有权重向量和零偏差的标量值。
网络对输入向量的输出可以表示如下:
其中是矩阵中的第列。
给定样本集和目标值,我们希望找到适当的权重,,使得。
让我们将所有采样点合并为一个输入矩阵。 如果设置,则将是大小为的方阵。
我们可以简化以在所有列中具有相同的列向量:
设,我们希望找到合适的和,使得。 这总是可以实现的,因为我们尝试用个约束来解决个未知变量,并且是独立的(即随机选择,排序然后将设置为其间的值)。然后成为下三角矩阵:
它是一个非奇异方阵,因为,所以我们总能找到合适的来求解(换句话说,的列空间全部是,我们可以找到列向量的线性组合来获得任何)。
2.3 深度神经网络可以学习随机噪声 (Deep NN can Learn Random Noise)
正如我们所知,双层神经网络是通用逼近器,因此看到它们能够完美地学习非结构化的随机噪声就不是多么令人惊讶的事情了,如Zhang, et al. (2017)所示。如果图像分类数据集的标签被随机打乱,则深度神经网络的高表现力仍然可以使他们能够实现接近零的训练损失。这些结果不会随着正则化条件的添加而改变。
3 深度学习模型是否显著过拟合?
深度学习模型有着严重的过度参数化,这使得模型通常可以在训练数据上获得完美的结果。在传统观点中,如偏差-方差权衡,这种现象可能是一场灾难:没有任何东西可以泛化到看不见的测试数据。然而,通常情况下,这种“过度拟合”(训练误差= 0)的深度学习模型仍然在训练样本之外测试数据上表现出不错的性能。有趣,这是为什么呢?
3.1 深度学习的现代风险曲线 (Modern Risk Curve for Deep Learning)
传统的机器学习使用U形风险曲线来衡量偏差-方差的权衡并量化模型的泛化程度。 如果我被问到如何判断模型是否过度拟合,这将是我脑海中浮现的第一件事。
随着模型变大(添加更多参数),训练误差减小到接近零,但是一旦模型复杂度增加以超过“欠拟合”和“过度拟合”之间的阈值,测试误差(泛化误差)开始增加。 在某种程度上,这与奥卡姆剃刀完全一致。
不幸的是,这种方法不适用于深度学习模型。Belkin et al. (2018)调和了传统的偏差-方差权衡,并为深度神经网络提出了一种新的双U形风险曲线。 一旦网络参数的数量足够高,风险曲线就会进入另一种状态。
论文声称可能有两个原因:
- 参数的数量不是归纳偏置的良好量度,其被定义为用于预测未知样本的学习算法的假设集。 请参阅后面部分中有关DL模型复杂性的更多讨论。
- 配备更大的模型,我们可能能够发现更大的函数类,并进一步找到具有更小范数的插值函数,因此“更简单”。
如文中所示,双U形风险曲线是通过经验性地观察到的。然而,我正在努力重现结果。有一些成功的迹象,但为了产生类似于定理的非常平滑的曲线,实验中的许多细节必须得到考虑。
3.2 正则化不是泛化的关键 (Regularization is not the Key to Generalization)
正则化是控制过度拟合和提高模型泛化性能的常用方法。有趣的是,一些研究(Zhang,et al.2017)已经表明,显式正则化(即数据增加,权重衰减和dropout)对于减少泛化误差既不必要也不充足。
以CIFAR 10训练的Inception模型为例(见下图),正则化技术有助于样本外的泛化性能,但并不多。没有单一的正规化方法似乎是独立于其他方法的关键。因此,正则化不太可能是泛化的根本原因。
3.3 内在维度 (Intrinsic Dimension)
参数的数量与深度学习领域中的模型过度拟合无关,这表明参数计数不能作为深度神经网络的真实复杂性的表示。
除参数计数外,研究人员还提出了许多方法来量化这些模型的复杂性,例如模型的自由度数(Gao&Jojic,2016)或前序码(Blier&Ollivier,2018)。
我想讨论一个关于这个问题的最新方法,称为内在维度(Li et al,2018)。内在维度直观,易于测量,同时仍然揭示了不同大小的模型的许多有趣属性。
具有大量参数的神经网络会形成高维的参数空间,学习过程就发生在这个高维的objective landscape上。其中参数空间的流形的形状是至关重要的。例如,通过提供更多预测梯度并允许更大的学习率形成的更平滑的流形更有利于优化,这被认为是批量标准化成功稳定训练的原因(Santurkar, et al,2019)。
即使参数空间很大,幸运的是我们不必太担心优化过程会陷入局部最优,因为objective landscape中的局部最优点几乎总是位于鞍点而不是山谷这个结论已经被证明了。换句话说,总有一个维度子集包含离开局部最优并继续探索的路径。
内在维度测量背后的一个直觉是,由于参数空间具有如此高的维度,因此可能没有必要利用所有维度来有效地学习。如果我们只是通过一片objective landscape并且仍然可以学习一个好的解决方案,那么所得到的模型的复杂性可能低于参数计数所显示的复杂性。这基本上是内在维度试图评估的内容。
假设模型具有维度并且其参数表示为。为了学习,随机采样较小的维子空间,其中。在一次优化更新过程中,不是对整个维度采用梯度步进,而是仅使用较小的子空间并通过重新映射以更新模型参数。
梯度更新公式如下所示:
其中是初始化值,是在训练之前随机采样的投影矩阵。和在训练期间都是不可训练的和固定的。被初始化为全零。
通过搜索的值,当解出现时相应的被定义为内在维度。
事实证明,许多问题的内在维度要比参数数量小得多。例如,在CIFAR 10图像分类任务中,具有650k+参数的全连接的网络仅具有9k的内在维度,而包含62k参数的卷积网络甚至具有更低的内部维度,只有2.9k。
内在维度的测量表明,深度学习模型的复杂度比它们看起来要简单得多。
3.4 异构层鲁棒性 (Heterogeneous Layer Robustness)
Zhang et al. (2019)研究了参数在不同层中的作用。 该论文提出的基本问题是:“所有的网络层都是平等的吗?”简短的回答是:不会。模型对某些网络层的变化更敏感,但对其他网络层的变化不敏感。
本文提出了两种类型的操作,可以应用于第层的参数以测试它们对模型鲁棒性的影响(,表示时间):
- 重新初始化:将参数重置为初始值。将层重新初始化的网络的性能称为层的重新初始化鲁棒性。
- 重新随机化:随机重新采样层的参数,。相应的网络性能称为层的重新随机化鲁棒性。
借助这两个操作,可以将图层分为两类:
- 鲁棒层:重新初始化或重新随机化层后,网络没有或只有微不足道的性能下降。
- 关键层:与鲁棒层相反。
在全连接和卷积网络上观察到类似的模式。任意层的重新随机化完全破坏了模型性能,因为预测会立即下降到随机猜测。更有趣和令人惊讶的是,当应用重新初始化时,只有第一层或前几层(最接近输入层的层)是关键的,而重新初始化更高层则导致性能的降低可忽略不计。
ResNet能够在非相邻层之间使用捷径的方式在网络中重新分配敏感层,而不仅仅是在底层。在残差块结构的帮助下,网络可以对重新随机化具有均匀的鲁棒性。只有每个残差块的第一层仍然对重新初始化和重新随机化都敏感。如果我们将每个残差块视为本地子网,则鲁棒性模式类似于上面的fc和conv网络。
基于深度神经网络中的许多顶层对重新初始化后的模型性能并不重要的事实,本文松散地得出结论:
Over-capacitated deep networks trained with stochastic gradient have low-complexity due to self-restricting the number of critical layers.
PS:由于自我限制关键层的数量,用随机梯度训练的过度容量的深度网络具有低复杂性。
我们可以将重新初始化视为减少参数有效数量的一种方法,因此对论文实验的观察与内在维度所证明的一致。
4 实验
在看到上面所有有趣的发现之后,重现它们应该是非常有趣的。有些结果很容易重现, 细节描述如下,我的代码可以在lilianweng/generalization-experiment上找到。
深度学习的现代风险曲线
这是最难以重现的实验。作者确实给了我很多好建议,我非常感激。以下是他们实验中的一些值得注意的设置:
- 没有正则化方法,如权重衰减,dropout等。
- 训练集包含4k个样本。对所有的模型来说,它仅进行一次采样并不再进行变化。评估使用完整的MNIST测试集。
- 每个网络都经过长时间的训练,以达到接近零的训练风险。对于不同大小的模型,学习率的调整方式也不同。
- 为了使模型对参数不足区域中的初始化不太敏感,他们的实验采用了“权重重用”方案:从训练的较小的神经网络获得的参数被用来对较大的网络进行初始化。
我没有对每个模型进行足够长时间的训练或调整以获得完美的训练性能,但是评估误差确实在插值阈值附近显示出特殊的扭曲,与训练误差不同。例如,对于MNIST,阈值是训练样本的数量乘以类别数量(10),即40000。
x轴是模型参数的数量:(28 * 28 + 1)* num。单位+数量, 单位*10,以对数表示。
层间不平等
这个很容易重现。 请参阅我的实现。
在第一个实验中,我使用了三层的fc网络,每层有256个单元。第0层是输入层,第3层是输出。该网络在MNIST上训练了100个Epochs。
在第二个实验中,我使用了四层的fc网络,每层有128个单元。其他设置与实验1相同。
内在维度测试
为了将维子空间正确地映射到全参数空间,投影矩阵应该具有正交列。因为映射生成的是由维向量中的相应标量值缩放的的列的总和,,所以最好充分利用子空间中的正交列。
我的实现遵循一种天真的方法,通过从标准正态分布中采样具有独立条目的大矩阵。期望这些列在高维空间中是独立的,因此是正交的。当尺寸不是太大时,这种方法有效。当用大进行探索时,存在用于创建稀疏投影矩阵的方法,这是内在维度论文所建议的。
以下是两个网络上的实验运行:(左)每层有64个单元的双层fc网络和(右)具有128个隐藏单元的单层fc网络,在10%的MNIST上进行训练。对于每个,模型训练100个epochs。请参阅此处的代码。
5 References
[1] Wikipedia page on Occam’s Razor.
[2] Occam’s Razor on Principia Cybernetica Web.
[3] Peter Grunwald. “A Tutorial Introduction to the Minimum Description Length Principle”. 2004.
[4] Ian Goodfellow, et al. Deep Learning. 2016. Sec 6.4.1.
[5] Zhang, Chiyuan, et al. “Understanding deep learning requires rethinking generalization.” ICLR 2017.
[6] Shibani Santurkar, et al. “How does batch normalization help optimization?.” NIPS 2018.
[7] Mikhail Belkin, et al. “Reconciling modern machine learning and the bias-variance trade-off.”arXiv:1812.11118, 2018.
[8] Chiyuan Zhang, et al. “Are All Layers Created Equal?” arXiv:1902.01996, 2019.
[9] Chunyuan Li, et al. “Measuring the intrinsic dimension of objective landscapes.” ICLR 2018.