第20章 深度学习为何有效?
本章与前面的章节不同。它不是呈现已有的成果,而是提出关于深度学习如何以及为何如此有效的问题。这些问题在教科书中很少讨论。然而,重要的是要认识到(尽管本书的标题如此),我们对深度学习的理解仍然有限。
我们论证说,深度网络易于训练是令人惊讶的,它们能够泛化同样令人惊讶。然后我们依次考虑每个话题。我们列举影响训练成功的因素,并讨论关于深度网络损失函数的已知知识。然后我们考虑影响泛化的因素。最后以讨论网络是否需要过参数化和深层结构来结束。
20.1 反对深度学习的理由
MNIST-1D 数据集(图 8.1)只有 40 个输入维度和 10 个输出维度。每层有足够多隐藏单元的两层全连接网络可以完美分类 10000 个 MNIST-1D 训练数据点,并合理地泛化到未见样本(图 8.10a)。事实上,我们现在认为理所当然的是:只要有足够的隐藏单元,深度网络就能完美分类几乎任何训练集。我们也认为拟合的模型会泛化到新数据。然而,训练过程应该成功或者生成的模型应该泛化,这两点都完全不是显而易见的。本节论证这两种现象都是令人惊讶的。
20.1.1 训练
两层全连接网络在 10000 个 MNIST-1D 训练样本上的表现,在每层有 43 个隐藏单元或约 4000 个参数时就已经完美(图 8.10)。然而,找到任意非凸函数的全局最小值是 NP 困难的(Murty & Kabadi, 1987),对于某些神经网络损失函数也是如此(Blum & Rivest, 1992)。令人惊叹的是,拟合算法不会陷入局部极小值或停留在鞍点附近,并且能高效地招募备用模型容量来拟合训练数据,无论这些数据位于何处。
也许当参数远多于训练数据时,这种成功就不那么令人惊讶了。然而,这是否通常成立是有争议的。AlexNet 有约 6000 万个参数,使用约 100 万个数据点训练。然而,使事情复杂的是,每个训练样本通过 2048 种变换进行了增强。GPT-3 有 1750 亿个参数,使用 3000 亿个 token 训练。两个模型是否过参数化并没有一个明确的结论,但它们都成功训练了。
简而言之,我们能可靠且高效地拟合深度网络是令人惊讶的。数据、模型、训练算法或三者的某种组合必须具有某些特殊属性才能使这成为可能。
20.1.2 泛化
如果说神经网络的高效拟合令人惊叹,那么它们对新数据的泛化则令人震惊。首先,典型的数据集足以刻画输入/输出映射,这一点先验地(a priori)并不明显。维度的诅咒意味着训练数据集相对于可能的输入来说极为微小;如果 MNIST-1D 数据的 40 个输入中每个都量化为 10 个可能值,则有
其次,深度网络描述的是非常复杂的函数。例如,MNIST-1D 的全连接网络,两个宽度为 400 的隐藏层可以创建具有多达
第三,泛化随着更多参数变得更好(图 8.10)。上段中的模型有 177,201 个参数。假设每个参数可以拟合一个训练样本,它有 167,201 个多余的自由度。这种过剩给了模型在训练数据之间做几乎任何事情的自由,然而它仍然表现得合理。
20.1.3 深度学习的不合理有效性
总结来说,我们既不能认为能够拟合深度网络是理所当然的,也不能认为它们应该泛化是理所当然的。先验地,深度学习不应该有效。但它确实有效。本章探究其原因。第 20.2-20.3 节描述关于拟合深度网络及其损失函数的已知知识。第 20.4-20.6 节考察泛化。
20.2 影响拟合性能的因素
图 6.4 显示非线性模型的损失函数既可以有局部极小值也可以有鞍点。然而,我们可以可靠地将深度网络拟合到复杂的训练集。例如,图 8.10 显示了在 MNIST-1D、MNIST 和 CIFAR-100 上的完美训练性能。本节考虑可能解决这一矛盾的因素。
20.2.1 数据集
重要的是要认识到我们不能学习任意函数。考虑从每个可能的
这一假设由 Zhang et al.(2017a)研究,他们在 CIFAR-10 图像分类数据集(50,000 个

图 20.1 拟合随机数据。在 CIFAR-10 数据集上使用 SGD 训练 AlexNet 架构的损失。当像素从与原始图像数据集相同均值和方差的高斯随机分布中抽取时,模型仍然可以拟合(尽管更慢)。当标签被随机化时,模型仍然可以拟合(尽管更加缓慢)。改编自 Zhang et al.(2017a)。
20.2.2 正则化
对模型训练容易的另一个可能解释是,某些正则化方法(如 L2 正则化/权重衰减)使损失面更平坦、更凸。然而,Zhang et al.(2017a)发现拟合随机数据既不需要 L2 正则化也不需要 Dropout。这并不排除由拟合算法有限步长引起的隐式正则化(第 9.2 节)。然而,这种效应随学习率增大而增大(公式 9.9),而模型拟合并不会因更大的学习率而变得更容易。
20.2.3 随机训练算法
第 6 章论证了 SGD 算法可能允许优化轨迹在训练过程中在"谷"之间移动。然而,Keskar et al.(2017)表明,多个模型(包括全连接和卷积网络)可以使用非常大的批次(5000-6000 张图像)在许多数据集(包括 CIFAR-100 和 MNIST)上几乎完美拟合。这消除了大部分随机性,但训练仍然成功。
图 20.2 显示了四个全连接模型在 4000 个标签随机化的 MNIST-1D 样本上使用全批量(即非随机)梯度下降拟合的训练结果。没有显式正则化,学习率设置为较小的常数值 0.0025 以最小化隐式正则化。这里,数据到标签的真实映射没有结构,训练是确定性的,且没有正则化,但训练误差仍然降为零。这表明这些损失函数可能确实没有局部极小值。

图 20.2 MNIST-1D 训练。四个全连接网络在 4000 个标签随机的 MNIST-1D 样本上使用全批量梯度下降、He 初始化、无动量、无正则化、学习率 0.0025 拟合。1、2、3、4 层的模型分别有 298、100、75 和 63 个隐藏单元/层,以及 15208、15210、15235 和 15139 个参数。所有模型都训练成功,但更深的模型需要更少的 epoch。
20.2.4 过参数化
过参数化几乎肯定是促进训练容易的一个重要因素。它意味着存在一大族退化解,因此总可能存在一个可以使参数朝着降低损失方向修改的方向。Sejnowski(2020)提出,"......解的退化性将问题从在草堆中寻找一根针变成了在针堆中寻找一根针。"
在实践中,网络通常被过参数化一到两个数量级(图 20.3)。然而,数据增强使得难以做出精确的陈述。增强可能将数据增加几个数量级,但这些是现有样本的变换而非独立的新数据点。此外,图 8.10 表明,当参数数量与数据点相同或更少时,神经网络有时仍能很好地拟合训练数据。这大概是因为来自同一底层函数的训练样本之间存在冗余。
若干理论收敛结果表明,在特定条件下,当网络充分过参数化时,SGD 会收敛到全局最小值。例如,Du et al.(2019b)证明随机初始化的 SGD 在具有最小二乘损失的浅层全连接 ReLU 网络中收敛到全局最小值,只要有足够多的隐藏单元。类似地,Du et al.(2019a)考虑了激活函数光滑且 Lipschitz 时的深层、残差和卷积网络。Zou et al.(2020)分析了使用 hinge 损失的深层全连接网络上梯度下降的收敛性。Allen-Zhu et al.(2019)考虑了使用 ReLU 函数的深度网络。

图 20.3 过参数化。卷积网络在 ImageNet 上的性能与过参数化程度(以数据集大小的倍数表示)的关系。大多数模型的参数是训练样本数量的 10-100 倍。比较的模型包括 ResNet、DenseNet、Xception、EfficientNet、Inception、ResNeXt 和 AmoebaNet。
如果神经网络充分过参数化到能够记忆固定大小数据集的程度,那么所有驻点都成为全局极小值(Livni et al., 2014; Nguyen & Hein, 2017, 2018)。其他结果表明,如果网络足够宽,损失高于全局最小值的局部极小值很少出现(见 Choromanska et al., 2015; Pascanu et al., 2014; Pennington & Bahri, 2017)。Kawaguchi et al.(2019)证明,随着网络变得更深、更宽或两者兼有,平方损失函数下局部极小值处的损失更接近全局最小值处的损失。
这些理论结果很有趣,但通常做出不切实际的假设。例如,Du et al.(2019a)证明当网络宽度
20.2.5 激活函数
激活函数也已知会影响训练难度。激活仅在输入范围的一小部分变化的网络比 ReLU(在一半输入范围内变化)或 Leaky ReLU(在整个范围内变化)更难拟合。例如,sigmoid 和 tanh 非线性(图 3.13a)在尾部有浅梯度;当激活函数接近常数时,训练梯度接近零,因此改进模型的机制极其微弱。
20.2.6 初始化
另一个可能的解释是 Xavier/He 初始化将参数设置到容易优化的值。当然,对于更深的网络,这种初始化对于避免梯度爆炸和梯度消失是必要的,因此在一个平凡的意义上,初始化对训练成功至关重要。然而,对于较浅的网络,权重的初始方差不太重要。Liu et al.(2023c)训练了一个 3 层全连接网络(每层 200 个隐藏单元)在 1000 个 MNIST 数据点上。他们发现当方差超过 He 初始化提议的值时需要更多迭代才能拟合训练数据(图 20.4),但这并未最终阻碍拟合。因此,初始化对于解释为什么拟合神经网络容易并没有提供太多启示,尽管梯度爆炸/消失确实揭示了使有限精度算术训练困难的初始化。

图 20.4 初始化与拟合。一个三层全连接网络(每层 200 个隐藏单元)在 1000 个 MNIST 样本上使用 AdamW、one-hot 目标和均方误差损失训练。当使用更大倍数的 He 初始化时,拟合网络需要更长时间,但这不会改变结果。这可能只是反映了权重需要移动的额外距离。改编自 Liu et al.(2023c)。
20.2.7 网络深度
当深度变得非常大时,由于梯度爆炸和消失(图 7.7)以及破碎梯度(图 11.3),神经网络更难拟合。然而,这些是(可以说是)实际的数值问题。没有确凿证据表明随着网络深度增加,底层损失函数会变得根本上更加非凸。图 20.2 确实表明,对于标签随机的 MNIST 数据和 He 初始化,更深的网络在更少的迭代中训练。然而,这可能是因为 (i) 更深网络中的梯度更陡峭,或 (ii) He 初始化恰好使浅层网络的起点距最优参数更远。
Frankle & Carbin(2019)对 VGG 等小型网络表明,如果你 (i) 训练网络,(ii) 剪除最小幅度的权重,(iii) 从相同的初始权重重新训练剩余网络,可以获得相同或更好的性能。如果权重被随机重新初始化则不行。他们得出结论,原始的过参数化网络包含小的可训练子网络,这些子网络足以提供性能。他们将此称为彩票假说(lottery ticket hypothesis),并将这些子网络称为中奖彩票(winning tickets)。这表明子网络的有效数量可能在拟合中起关键作用。这个数量(也许)随着固定参数数量的网络深度变化而变化,但这一概念的精确刻画仍然缺乏。
20.3 损失函数的性质
上一节讨论了促使神经网络能够轻松训练的因素。参数数量(过参数化程度)和激活函数的选择都很重要。令人惊讶的是,数据集的选择、拟合算法的随机性和正则化的使用似乎并不重要。没有确凿证据表明(在固定参数数量下)网络深度对此有影响(除了由梯度爆炸/消失/破碎引起的数值问题外)。本节从不同角度——考虑损失函数的经验性质——来探讨同一主题。这些证据大部分来自全连接网络和 CNN;Transformer 网络的损失函数尚未被很好地理解。
20.3.1 多重全局极小值
我们期望深度网络的损失函数有大量等价的全局极小值。在全连接网络中,每层的隐藏单元及其关联权重可以被置换而不改变输出。在卷积网络中,适当地置换通道和卷积核不会改变输出。我们可以在任何 ReLU 函数之前将权重乘以一个正数,在其之后将权重除以同一个正数,而不改变输出。使用 BatchNorm 引入了另一组冗余,因为每个隐藏单元或通道的均值和方差会被重置。
上述修改对每个输入产生相同的输出。然而,全局最小值只取决于在训练数据点处的输出。在过参数化网络中,还会有些解族在训练数据点处表现相同但在其他地方表现不同。所有这些也都是全局极小值。
20.3.2 通往极小值的路径
Goodfellow et al.(2015b)考虑了初始参数和最终值之间的一条直线。他们表明沿这条线的损失函数通常单调递减(有时在起点附近有一个小隆起除外)。这种现象在多种不同类型的网络和激活函数中都可观察到(图 20.5a)。
当然,真实的优化轨迹不会沿着一条直线行进。然而,Li et al.(2018b)发现它们确实位于低维子空间中。他们将此归因于损失景观中存在大的、近凸的区域,这些区域在早期捕获轨迹并将其导入少数重要方向。令人惊讶的是,Li et al.(2018a)表明,即使优化被约束在一个随机的低维子空间中,网络仍然能良好训练(图 20.6)。
Li & Liang(2018)表明,训练期间参数的相对变化随着网络宽度增加而减小;对于更大的宽度,参数从更小的值开始,变化更小的比例,并在更少的步骤中收敛。

图 20.5 损失函数的线性切片。a) 在 MNIST 上训练两层全连接 ReLU 网络。从初始参数(
)到训练后参数( )的直线上的损失单调下降。b) 然而,在这个两层全连接 MaxOut 网络中,一个解( )和另一个解( )之间的直线上损失有增加。改编自 Goodfellow et al.(2015b)。

图 20.6 子空间训练。一个具有两个隐藏层、每层 200 个单元的全连接网络在 MNIST 上训练。参数使用标准方法初始化,但随后被约束在一个随机子空间中。当该子空间为 750 维(称为内在维度,即原始参数的 0.4%)时,性能达到无约束水平的 90%。改编自 Li et al.(2018a)。
20.3.3 极小值之间的连接
Goodfellow et al.(2015b)研究了两个独立发现的极小值之间直线上的损失函数。他们观察到它们之间损失有明显的增加(图 20.5b);好的极小值通常不是线性连接的。然而,Frankle et al.(2020)表明,如果网络初始训练相同,之后允许使用不同的 SGD 噪声和增强进行分叉,这种增加就会消失。这表明解在训练早期就被约束,某些极小值族是线性连接的。
Draxler et al.(2018)在 CIFAR-10 数据集上找到了性能良好(但不同的)极小值。然后他们表明可以构建从一个到另一个的路径,使得沿此路径损失保持很低。他们得出结论,存在一个单一连通的低损失流形(图 20.7)。随着网络宽度和深度的增加,这似乎越来越成立。Garipov et al.(2018)和 Fort & Jastrzębski(2019)提出了其他连接极小值的方案。

图 20.7 极小值之间的连接。DenseNet 在 CIFAR-10 上损失函数的一个切片。参数
和 是两个独立发现的极小值。它们之间的线性插值揭示了一个能量壁垒(虚线)。然而,对于足够深和宽的网络,可以找到两个极小值之间的弯曲低能量路径(青色线)。改编自 Draxler et al.(2018)。
20.3.4 损失面的曲率
随机高斯函数(其中点根据由距离核函数给出的协方差联合分布)有一个有趣的性质:对于梯度为零的点,函数向下弯曲的方向的比例在较低的损失值处变得更小(见 Bahri et al., 2020)。Dauphin et al.(2014)在神经网络损失函数中搜索鞍点,类似地发现损失与负特征值数量之间的相关性(图 20.8)。Baldi & Hornik(1989)分析了浅层网络的误差面,发现没有局部极小值而只有鞍点。这些结果表明很少或没有坏的局部极小值。
Fort & Scherlis(2019)在神经网络损失面上的随机点处测量了曲率;他们表明,当权重的

图 20.8 临界点与损失。a) 在随机高斯函数中,梯度为零的点(即鞍点)处函数向下弯曲的方向的数量随着函数值降低而减少,因此所有极小值都出现在低函数值处。b) Dauphin et al.(2014)在神经网络损失面上找到了临界点(即梯度为零的点)。他们表明负特征值的比例(向下的方向)随损失降低而减少。这意味着所有极小值(梯度为零且没有方向向下的点)都具有低损失。改编自 Dauphin et al.(2014)和 Bahri et al.(2020)。

图 20.9 Goldilocks 区域。在应用于 MNIST 的两层全连接 ReLU 网络中,随机子空间(维度
)内 Hessian 特征值大于零的比例(正曲率/凸性的度量),作为参数的平方半径 (相对于 Xavier 初始化)的函数。存在一个明显的正曲率区域,称为 Goldilocks 区域。改编自 Fort & Scherlis(2019)。

图 20.10 批大小与学习率比率。CIFAR-10 数据库上两个模型的泛化取决于批大小与学习率的比率。随着批大小增加,泛化降低。随着学习率增加,泛化提高。改编自 He et al.(2019)。
20.4 决定泛化的因素
前两节考虑了决定网络是否能成功训练的因素以及关于神经网络损失函数的已知知识。本节考虑决定网络泛化性能的因素。这补充了关于正则化的讨论(第 9 章),正则化明确旨在促进泛化。
20.4.1 训练算法
由于深度网络通常是过参数化的,训练过程的细节决定了算法收敛到退化极小值族中的哪一个。其中一些细节可靠地改善泛化。
LeCun et al.(2012)表明 SGD 比全批量梯度下降泛化更好。有人认为 SGD 比 Adam 泛化更好(例如,Wilson et al., 2017; Keskar & Socher, 2017),但更近期的研究表明,当超参数搜索仔细进行时差异很小(Choi et al., 2019)。Keskar et al.(2017)表明在不使用其他正则化形式时,深度网络使用较小批大小泛化更好。众所周知,较大的学习率倾向于泛化更好(例如,图 9.5)。Jastrzębski et al.(2018),Goyal et al.(2018)和 He et al.(2019)认为批大小/学习率比率很重要。He et al.(2019)表明这个比率与泛化程度之间有显著相关性,并证明了神经网络的一个泛化界,该界与这个比率正相关(图 20.10)。
这些观察与 SGD 隐式地向损失函数添加正则化项(第 9.2 节)的发现一致,其大小取决于学习率。参数的轨迹被这种正则化改变,它们收敛到损失函数中泛化性能良好的部分。
20.4.2 极小值的平坦度
至少可以追溯到 Hochreiter & Schmidhuber(1997a),有一种推测认为损失函数中的平坦极小值(flat minima)比尖锐极小值(sharp minima)泛化更好(图 20.11)。非形式化地说,如果极小值更平坦,那么估计参数中的小误差或训练和测试损失函数的对齐中的小误差就不那么重要了。这也可以从各种理论视角来论证。例如,最小描述长度理论建议用更少比特描述的模型泛化更好(Rissanen, 1983)。对于宽的极小值,存储权重所需的精度更低,因此它们应该泛化更好。
平坦度可以通过 (i) 训练损失相似的极小值周围连通区域的大小(Hochreiter & Schmidhuber, 1997a)、(ii) 极小值周围的二阶曲率(Chaudhari et al., 2019)或 (iii) 极小值邻域内的最大损失(Keskar et al., 2017)来衡量。然而,需要谨慎;由于 ReLU 函数的非负齐次性(Dinh et al., 2017),网络的平凡重参数化会影响估计的平坦度。
尽管如此,Keskar et al.(2017)改变批大小和学习率,表明平坦度与泛化相关。Izmailov et al.(2018)将学习轨迹中多个点的权重取平均。这既使极小值处的测试面更平坦,又改善了泛化。其他正则化技术也可以从这个角度来看。例如,平均模型输出(集成)也可能使测试损失面更平坦。Kleinberg et al.(2018)表明,训练过程中较大的梯度方差有助于避开尖锐区域。这可能解释了为什么减小批大小和添加噪声有助于泛化。
上述研究考虑的是单个模型和训练集的平坦度。然而,仅凭尖锐度不是预测跨数据集泛化的好标准;当 CIFAR 数据集的标签被随机化时(使泛化不可能),极小值并没有相应地变得更尖锐(Neyshabur et al., 2017)。

图 20.11 平坦极小值与尖锐极小值。平坦极小值被期望泛化更好。在估计参数或训练和测试损失函数对齐中的小误差在平坦区域中问题较小。改编自 Keskar et al.(2017)。
20.4.3 架构
网络的归纳偏置(inductive bias)由其架构决定,而明智的模型选择可以极大地改善泛化。第 10 章介绍了卷积网络,它们被设计用来处理规则网格上的数据;它们隐式假设输入统计在输入上相同,因此跨位置共享参数。类似地,Transformer 适合建模对排列不变的数据,图神经网络适合表示在不规则图上的数据。将架构与数据的属性匹配可以比通用的全连接架构改善泛化(见图 10.8)。
20.4.4 权重范数
第 20.3.4 节回顾了 Fort & Scherlis(2019)的发现,即当权重的
这一发现被 Liu et al.(2023c)用来解释 grokking 现象,即在训练误差已经为零之后很多 epoch 才突然出现泛化的改善(Power et al., 2022)(图 20.13)。他们提出,当权重范数初始太大时就会出现 grokking;训练数据拟合得很好,但数据点之间模型的变化很大。随着时间推移,隐式或显式正则化减小权重范数直到达到 Goldilocks 区域,泛化突然改善。

图 20.12 超球面上的泛化。一个具有两个隐藏层(每层 200 个单元,199,210 个参数)的全连接网络在 MNIST 数据库上训练。参数被初始化到给定的
范数,然后被约束保持该范数并位于一个子空间中(垂直方向)。网络在 Xavier 初始化定义的半径 (青色虚线)附近的小范围内泛化良好。改编自 Fort & Scherlis(2019)。

图 20.13 Grokking。当参数初始化使其
范数(半径)远大于 He 初始化指定的值时,训练需要更长时间(虚线),泛化需要更长时间(实线)。泛化的滞后归因于权重范数降回到 Goldilocks 区域所需的时间。改编自 Liu et al.(2023c)。
20.4.5 过参数化
图 8.10 表明泛化性能倾向于随着过参数化程度的提高而改善。结合偏差/方差权衡曲线,这导致了双重下降(double descent)。其假定的解释是,当模型过参数化时,网络有更多余地在训练数据点之间变得更平滑。
也可以用权重范数来解释双重下降。当参数数量与数据点数量相近时,权重的范数增加(因为模型扭曲自己以精确拟合这些点),导致泛化降低。随着网络变宽和权重数量增加,这些权重的整体范数减小;权重的初始化方差与宽度成反比(即 He 或 Glorot 初始化),且权重不需要大幅改变就能很好地拟合数据。
20.4.6 离开数据流形
到目前为止,我们讨论的是模型如何泛化到与训练数据来自同一分布的新数据。这对于实验来说是一个合理的假设。然而,部署在现实世界中的系统可能会遇到由于噪声、数据统计随时间变化或蓄意攻击而产生的意外数据。当然,对于这种情况更难做出确定的陈述,但 D'Amour et al.(2020)表明,使用不同种子训练的相同模型在受损数据上的变异性可以是巨大且不可预测的。
Goodfellow et al.(2015a)表明深度学习模型容易受到对抗攻击(adversarial attacks)的影响。考虑扰动一张被网络正确分类为"狗"的图像,使正确类别的概率尽可能快地降低直到类别翻转。如果这张图像现在被分类为飞机,你可能期望扰动后的图像看起来像狗和飞机的混合体。然而,在实践中,扰动后的图像看起来与原始狗图像几乎无法区分(图 20.14)。
结论是存在一些位置,它们接近但不在数据流形上,会被错误分类。这些被称为对抗样本(adversarial examples)。它们的存在令人惊讶;输入的微小变化怎么能对输出产生如此剧烈的变化?目前最好的解释是,对抗样本不是由于对数据流形外数据缺乏鲁棒性造成的。相反,它们利用的是训练分布中存在的一个信息源,这个信息源范数很小且对人类不可感知(Ilyas et al., 2019)。

图 20.14 对抗样本。在每种情况下,左图被 AlexNet 正确分类。通过考虑网络输出相对于输入的梯度,可以找到一个小的扰动(中间,为可见性放大 10 倍),将其添加到原始图像(右)后,导致网络将其错误分类为鸵鸟。尽管原始图像和扰动图像对人类来说几乎无法区分。改编自 Szegedy et al.(2014)。
20.5 我们需要这么多参数吗?
第 20.4 节论证了模型在过参数化时泛化更好。事实上,在复杂数据集上,几乎没有模型参数显著少于训练数据点的最先进测试性能的例子。
然而,第 20.2 节回顾了训练随着参数数量增加而变得更容易的证据。因此,不清楚是较小模型的某些根本属性阻止了它们表现良好,还是训练算法无法为小模型找到好的解。剪枝(pruning)和蒸馏(distilling)是两种减小已训练模型大小的方法。本节考察这些方法是否能产生保留过参数化模型性能的欠参数化模型。
20.5.1 剪枝
剪枝已训练的模型可以减小其大小从而减少存储需求(图 20.15)。最简单的方法是移除单个权重。这可以基于损失函数的二阶导数(LeCun et al., 1990; Hassibi & Stork, 1993)或(更实际地)基于权重的绝对值(Han et al., 2016, 2015)来完成。其他工作剪除隐藏单元(Zhou et al., 2016a; Alvarez & Salzmann, 2016)、卷积网络中的通道(Li et al., 2017a; Luo et al., 2017b; He et al., 2017; Liu et al., 2019a)或残差网络中的整层(Huang & Wang, 2018)。网络通常在剪枝后进行微调,有时这个过程会重复进行。
例如,Han et al.(2016)在保留 8% 权重的情况下维持了 VGG 网络在 ImageNet 分类上的良好性能。这显著减小了模型大小,但不足以证明过参数化不是必需的;VGG 网络的参数大约是 ImageNet 训练数据的 100 倍(不考虑增强)。
剪枝是一种架构搜索的形式。在他们关于彩票假说的工作中(见第 20.2.7 节),Frankle & Carbin(2019)(i) 训练网络,(ii) 剪除最小幅度的权重,(iii) 从相同初始权重重新训练剩余网络。通过迭代这个过程,他们将 VGG-19 网络(最初 1.38 亿参数)的大小在 CIFAR-10 数据库(60,000 个样本)上减少了 98.5% 同时保持了良好性能。对于 ResNet-50(2560 万参数),他们在 ImageNet(128 万个样本)上减少了 80% 参数而性能不降。这些演示很令人印象深刻,但(不考虑数据增强)这些网络在剪枝后仍然是过参数化的。

图 20.15 剪枝神经网络。目标是在不降低性能的情况下尽可能多地移除权重。这通常仅基于权重的幅度来完成。通常在剪枝后对网络进行微调。a) 示例全连接网络。b) 剪枝后。
20.5.2 知识蒸馏
参数数量也可以通过训练一个更小的网络(学生)来复制更大网络(教师)的性能来减少。这被称为知识蒸馏(knowledge distillation),至少可以追溯到 Buciluă et al.(2006)。Hinton et al.(2015)表明输出类别之间的信息模式很重要,并训练一个较小的网络来近似较大网络的 softmax 前 logits(图 20.16)。
Zagoruyko & Komodakis(2017)进一步鼓励学生网络的激活空间图在各个点处与教师网络相似。他们使用这种注意力迁移(attention transfer)方法,用 18 层残差网络(约 1100 万参数)来近似 34 层残差网络(约 6300 万参数)在 ImageNet 分类任务上的性能。然而,这仍然大于训练样本数量(约 100 万张图像)。现代方法(如 Chen et al., 2021a)可以改进这个结果,但蒸馏尚未提供令人信服的证据表明欠参数化模型可以表现良好。

图 20.16 知识蒸馏。a) 教师网络如常训练图像分类,使用多类别交叉熵分类损失。b) 较小的学生网络使用相同的损失训练,加上鼓励 softmax 前激活与教师相同的蒸馏损失。
20.5.3 讨论
当前证据表明过参数化确实是泛化所需的——至少对于当前使用的数据集的大小和复杂度而言。在复杂数据集上,没有参数显著少于训练样本的最先进性能的演示。通过剪枝或蒸馏训练好的网络来减小模型大小的尝试并未改变这一图景。
此外,最近的理论表明模型的 Lipschitz 常数和过参数化之间存在权衡;Bubeck & Sellke(2021)证明在
20.6 网络需要是深的吗?
第 3 章讨论了万能近似定理。它表明浅层神经网络可以在给定足够隐藏单元的情况下以任意精度近似任何函数。这自然引出了一个显而易见的问题:网络是否需要是深的。
首先,让我们考虑深度是否确实必要的证据。历史上,性能和深度之间一直有明确的相关性。例如,随着网络深度的增加,ImageNet 基准上的性能最初不断改善,直到训练变得困难。随后,残差连接和批归一化(第 11 章)允许训练更深的网络,并带来了相应的性能提升。在撰写时,几乎所有最先进的应用,包括图像分类(如视觉 Transformer)、文本生成(如 GPT3)和文本引导的图像合成(如 DALL·E 2),都基于具有数十或数百层的深度网络。
尽管有这一趋势,也有使用更浅网络的努力。Zagoruyko & Komodakis(2016)构建了更浅但更宽的残差神经网络,取得了与 ResNet 相似的性能。更近期,Goyal et al.(2021)构建了使用并行卷积通道的网络,仅用 12 层就达到了与更深网络相似的性能。此外,Veit et al.(2016)表明,驱动残差网络性能的主要是长度为 5-17 层的较短路径。
尽管如此,证据的天平倾向于深度至关重要;即使是具有良好图像分类性能的最浅网络也需要超过 10 层。然而,对于原因没有确定的解释。三种可能的解释是:(i) 深度网络可以表示比浅层网络更复杂的函数,(ii) 深度网络更容易训练,(iii) 深度网络施加更好的归纳偏置。
20.6.1 建模函数的复杂性
第 4 章表明,对于相同的参数数量,深度网络创建的函数具有比浅层网络多得多的线性区域。我们也看到已经识别出需要指数级更多隐藏单元才能用浅层网络而非深层网络建模的"病态"函数(例如,Eldan & Shamir, 2016; Telgarsky, 2016)。确实,Liang & Srikant(2016)发现了相当一般的函数族,深度网络可以更高效地建模。然而,Nye & Saxe(2018)发现其中一些函数在实践中不能被深度网络容易地拟合。此外,几乎没有证据表明我们正在近似的真实世界函数具有这些病态属性。
20.6.2 训练的可操作性
另一种解释是,具有实际数量隐藏单元的浅层网络可以支持最先进的性能,但很难找到一个既能很好拟合训练数据又能合理插值的好解。
展示这一点的方法之一是将成功的深度网络蒸馏到更浅(但更宽)的学生模型中,看性能是否能维持。Urban et al.(2017)将 16 个卷积网络的集成(用于 CIFAR-10 数据集的图像分类)蒸馏到不同深度的学生模型中。他们发现浅层网络无法复制更深教师的性能,且对于固定的参数预算,学生性能随深度增加而提高。
20.6.3 归纳偏置
大多数当前模型依赖于卷积块或 Transformer。这些网络为输入数据的局部区域共享参数,并且通常逐步在整个输入上整合这些信息。这些约束意味着这些网络能表示的函数不是通用的。深度网络优势的一个解释是,这些约束具有良好的归纳偏置,且难以诱导浅层网络遵守这些约束。
多层卷积架构似乎本身就有用,即使不经训练。Ulyanov et al.(2018)证明,未训练的 CNN 的结构可以作为低级任务(如去噪和超分辨率)的先验。Frankle et al.(2021)通过随机初始化卷积核、固定其值、仅训练批归一化的偏移和缩放因子,实现了良好的图像分类性能。Zhang et al.(2017a)表明,随机初始化的卷积滤波器提取的特征可以使用核模型支持后续的图像分类。
额外的证据来自 Urban et al.(2017),他们试图将卷积网络蒸馏到更浅的网络中。他们发现蒸馏到卷积架构系统性地比蒸馏到全连接网络效果更好。这表明卷积架构具有某些内在优势。由于卷积网络的顺序局部处理不能轻易被浅层网络复制,这论证了深度确实重要。
20.7 总结
本章论证了深度学习的成功是令人惊讶的。我们讨论了优化高维损失函数的挑战,并论证过参数化和激活函数的选择是使其在深度网络中可操作的两个最重要因素。我们看到,在训练过程中,参数通过低维子空间移动到一族连通的全局极小值之一,且局部极小值并不明显。
神经网络的泛化也随着过参数化而改善,尽管其他因素,如极小值的平坦度和架构的归纳偏置也很重要。看起来大量参数和多个网络层都是良好泛化所必需的,尽管我们还不知道原因。
许多问题仍未解答。我们目前没有任何规范性理论能让我们预测训练和泛化在什么情况下会成功或失败。我们不知道深度网络学习的极限,也不知道更高效的模型是否可能。我们不知道是否存在在同一模型内泛化更好的参数。深度学习的研究仍然由经验演示驱动。这些无疑令人印象深刻,但它们尚未与我们对深度学习机制的理解相匹配。