第 20 章 深度学习为什么有效?(Why does deep learning work?)
本章一句话:深度学习能成功是一件“不该发生却发生了”的怪事——既不该这么容易训练,也不该这么会泛化;本章不给定论,而是把已知的因素、现象和假说(过参数化、损失曲面、彩票假说、grokking、双下降等)一一摆出来,坦诚承认我们的理解仍然有限。
读这章的收获:理解为什么“拟合成功”和“泛化成功”都令人惊讶,知道哪些因素真正重要(过参数化、激活函数、架构、权重范数),看清深度学习目前还是被实验现象推着走的领域,建立对开放问题的清醒认识。
本章速览
- 这一章不一样:前面各章讲“已知的结论”,这一章讲“未解的问题”。教科书很少这么做,但作者强调:尽管书名叫《理解深度学习》,我们对深度学习的理解其实仍然有限。
- 两件怪事:① 任意非凸函数找全局最小值是 NP 难的,深度网络却能可靠、高效地训练成功;② 训练数据相比所有可能输入只是沧海一粟(维度灾难),模型参数还远多于数据,却依然能泛化得很好。先验地看,深度学习本不该奏效。
- 影响拟合的因素:真正重要的是过参数化和激活函数;令人意外的是,数据集本身、训练算法的随机性、是否加正则化都不太重要——连完全随机的标签都能被训练到零误差。
- 损失曲面的样子:存在大量等价的全局最小值;从初始点到解的直线上损失大体单调下降;训练轨迹其实落在低维子空间里;足够宽深的网络里,不同的好极小值之间能用低损失的弯曲路径连起来;坏的局部极小值很少或没有。
- 影响泛化的因素:训练算法的隐式正则化(SGD、批大小/学习率之比)、极小值的平坦度、架构的归纳偏置、权重的 ℓ₂ 范数(“金发姑娘区”),以及过参数化本身。
- 几个著名现象:彩票假说(大网络里藏着可单独训练好的“中奖子网络”)、grokking(训练误差早已为零、很多轮之后泛化才突然变好)、双下降(参数越多反而泛化越好)、对抗样本(人眼无法察觉的微小扰动让网络彻底分类错误)。
- 两个老问题:要这么多参数吗?(剪枝、蒸馏都还没能造出“参数远少于数据却同样强”的模型,过参数化看来是必要的。)网络必须深吗?(证据偏向“深度确实关键”,但还没人能确切说清为什么。)
20.1 反对深度学习的理由(The case against deep learning)
作者先唱反调:我们早已把“给足够多隐藏单元,深度网络几乎能完美拟合任何训练集,而且还能泛化到新数据”当成理所当然。但仔细想想,训练能成功和模型能泛化这两件事,没有一件是显然的。
20.1.1 训练为什么是个奇迹
以 MNIST-1D 为例(只有 40 维输入、10 维输出),一个两层全连接网络,每层有 43 个隐藏单元(约 4000 个参数)就能把 10000 个训练点分类得完美无缺。
可问题是:任意非凸函数找全局最小值是 NP 难的(Murty & Kabadi, 1987),某些神经网络损失函数也被证明如此(Blum & Rivest, 1992)。拟合算法竟然不被局部极小值困住、不卡在鞍点附近,还能高效地调动多余的模型容量去拟合任何位置的数据——这本身就很惊人。
“参数远多于数据所以才容易”这个解释也站不住脚:AlexNet 约 6000 万参数、约 100 万张图(但每张又做了 2048 种数据增强);GPT-3 有 1750 亿参数、3000 亿 token——很难说它们究竟有没有过参数化,可它们都被成功训练了。
结论:能可靠、高效地拟合深度网络本身就出人意料。要么数据、要么模型、要么训练算法,或三者的某种组合,必定具备某种特殊性质。
20.1.2 泛化更是匪夷所思
如果说高效拟合已经令人吃惊,那泛化简直让人目瞪口呆。三个理由:
- 维度灾难:典型数据集相比所有可能输入小得可怜。若把 MNIST-1D 的 40 个输入各量化成 10 个值,就有 \(10^{40}\) 种可能输入——比训练样本多了 \(10^{36}\) 倍。凭这点数据,凭什么能刻画整个输入/输出映射?
- 函数极其复杂:两个宽度 400 的隐藏层,能造出多达 \(10^{42}\) 个线性区域,平均每个训练样本摊到约 \(10^{38}\) 个区域。训练时绝大多数区域里根本没有数据;但奇妙的是,那些碰到了数据点的区域,会约束其余区域也表现得合情合理。
- 参数越多泛化越好:上面那个模型有 177201 个参数。即便一个参数拟合一个样本,也还剩约 16 万“自由度”——这些富余本可以让模型在数据点之间胡作非为,它却偏偏表现得很规矩。
20.1.3 “不合理的有效性”
总结:既不显然我们能拟合深度网络,也不显然它们该泛化。先验地说,深度学习不该奏效,可它就是奏效了。 本章就来探讨为什么——20.2~20.3 讲拟合与损失函数,20.4~20.6 讲泛化。
20.2 影响拟合性能的因素(Factors that influence fitting performance)
非线性模型的损失函数既有局部极小值也有鞍点(图 6.4),但我们偏偏能可靠地把深度网络拟合到复杂训练集上。这一节逐一检查可能的解释。
20.2.1 数据集(不重要)
我们并非什么函数都能学:若是一个从每张 28×28 二值图到 10 类的完全随机映射,毫无结构可言,唯一办法是死记 \(2^{784}\) 条对应关系。可现实里训练 MNIST 却很容易。一个自然的猜想是:因为现实世界要逼近的函数本来就相对简单。
Zhang 等人(2017a)用实验检验了这个猜想:把 AlexNet 在 CIFAR-10 上训练,但 (i) 把每张图换成高斯噪声,或 (ii) 把 10 个类的标签随机打乱。结果训练变慢了,但网络照样能把这个有限数据集拟合得很好。
这说明:数据集的性质并不是关键——连毫无结构的随机数据都能被拟合。
20.2.2 正则化(不重要)
另一个猜想:L2 正则化(权重衰减)之类能让损失曲面更平、更接近凸。但 Zhang 等人发现,拟合随机数据时既不需要 L2 也不需要 Dropout。这没排除“有限步长带来的隐式正则化”(见第 9 章),但那种效应随学习率增大而增强,而事实是学习率越大拟合并没有变容易。
20.2.3 训练算法的随机性(不重要)
第 6 章曾说 SGD 的随机性也许能让优化轨迹在不同“山谷”间穿梭。但 Keskar 等人(2017)用 5000~6000 的超大批量(几乎消除了随机性)照样能把多种网络拟合到近乎完美。
更极端的实验(图 20.2):用全批量(确定性)梯度下降,对 4000 个随机标签的 MNIST-1D 训练,固定小学习率 0.0025(尽量压低隐式正则化),无任何显式正则化。结果训练误差仍然降到零。
真实映射毫无结构、训练确定、毫无正则化,误差却归零——这暗示这些损失函数可能真的没有局部极小值。
20.2.4 过参数化(重要!)
过参数化几乎肯定是“易于训练”的重要原因。它意味着存在一大族等价(退化)解,所以几乎总能找到一个方向把损失再降一点。Sejnowski(2020)有句妙喻:过参数化让问题从“大海捞针”变成了“一整堆草垛里到处是针”。
实践中网络常被过参数化一两个数量级(图 20.3,ImageNet 上的卷积网络大多比数据多 10~100 倍参数)。但数据增强让“到底有没有过参数化”很难说清——增强能把数据放大几个数量级,可那只是对已有样本的变形,并非真正独立的新数据。
理论上也有一批收敛性结果:在网络足够过参数化时,随机初始化的(随机)梯度下降会收敛到全局最小值(Du 等人 2019a/b;Zou 等人 2020;Allen-Zhu 等人 2019 分别覆盖浅层 ReLU、深层/残差/卷积、hinge 损失等情形)。还有结果说:若网络宽到能记住任意固定大小的数据集,则所有驻点都成了全局最小值;网络越深越宽,局部极小值处的损失越接近全局最小值(Kawaguchi 等人 2019)。
但要泼盆冷水:这些理论大多对网络结构做了不现实的假设。比如要求宽度达到 \(\Omega[I^4 K^2]\)(\(I\) 是数据量、\(K\) 是深度),或要求宽度大于数据集规模——现实中几乎不可能。过参数化看来很重要,但理论还无法解释实际的拟合表现。
20.2.5 激活函数(重要!)
激活函数也明显影响训练难度。只在输入很窄一段里变化的激活函数更难训练:sigmoid、tanh 的两侧尾巴梯度极浅,激活近乎常数时训练梯度接近零,改进模型的“着力点”极弱。相比之下,ReLU(在一半输入范围内变化)和 Leaky ReLU(在全范围变化)就好训得多。
20.2.6 初始化(不太关键)
Xavier/He 初始化是否把参数放到了“好优化”的位置?对很深的网络,这种初始化是避免梯度爆炸/消失所必需的——这个意义上它当然关键。但对较浅的网络,初始权重方差就没那么要紧:Liu 等人(2023c)发现,把方差从 He 推荐值往上调,只是需要更多迭代才能拟合(图 20.4),但最终都能拟合成功。
所以初始化对“为什么拟合容易”这个问题帮助不大;它真正揭示的,是哪些初始化会因有限精度算术下的梯度爆炸/消失而让训练变难。
20.2.7 网络深度(证据不明,引出彩票假说)
网络太深时确实更难拟合,原因是梯度爆炸/消失(图 7.7)和梯度破碎(图 11.3)——但这些(可以说)是实际数值问题。没有确凿证据表明:固定参数量时,损失函数本身会随深度变得更凸或更不凸。图 20.2 里更深的网络迭代更少就能拟合随机标签,但这或许只是因为深网梯度更陡、或 He 初始化让浅而宽的网络起点离最优更远。
彩票假说(lottery ticket hypothesis):Frankle & Carbin(2019)对 VGG 这类小网络发现一套神奇流程——(i) 训练网络,(ii) 剪掉绝对值最小的权重,(iii) 用同一套初始权重重新训练剩下的子网络,性能不降反升;但若把剩下的权重随机重新初始化,就行不通了。
他们由此推断:原本那个过参数化网络里,藏着一个本身就可训练好的小子网络,足以提供全部性能。这种子网络被称为“中奖彩票(winning ticket)”。这暗示“有效子网络的数量”可能在拟合中扮演关键角色,但精确刻画仍然欠缺。
20.3 损失函数的性质(Properties of loss functions)
上一节从“哪些因素”入手,这一节换个角度——直接看损失函数的经验性质(证据主要来自全连接网络和 CNN,Transformer 的损失曲面理解得还很少)。
20.3.1 多个全局最小值
我们本就预期深度网络有一大族等价的全局最小值,因为有大量对称/冗余:
- 全连接网络里,每层的隐藏单元连同权重可以任意置换而不改变输出;
- 卷积网络里,相应地置换通道和卷积核也不改变输出;
- ReLU 前的权重乘一个正数、ReLU 后的权重除以同一个数,输出不变;
- 用 BatchNorm 又会重设每个单元的均值方差,带来另一组冗余。
以上都对每一个输入都给出相同输出。而全局最小值只看训练数据点上的输出;在过参数化网络里,还存在另一些解:它们在数据点上表现完全一样,在数据点之间却各不相同——这些也都是全局最小值。
20.3.2 通往最小值的路
Goodfellow 等人(2015b)考察了“从初始参数到最终参数”的一条直线,发现沿线损失通常单调下降(偶尔起点附近有个小鼓包),多种网络和激活函数都如此(图 20.5a)。
真实优化轨迹当然不是直线,但 Li 等人(2018b)发现它落在低维子空间里,归因于损失景观中存在“大片近乎凸的区域”,早早捕获轨迹并把它引向少数几个重要方向。更惊人的是 Li 等人(2018a):即便把优化强行约束在一个随机低维子空间里,网络照样训得好(图 20.6)——在 MNIST 上一个两层各 200 单元的网络,只用 750 维子空间(约占原参数的 0.4%)就达到无约束水平的 90%,这个维度被称作“内在维度(intrinsic dimension)”。
此外,网络越宽,训练中参数的相对变化越小:起点更小、变动比例更小、收敛步数更少(Li & Liang, 2018)。
20.3.3 极小值之间的连接
Goodfellow 等人(2015b)还沿“两个独立找到的极小值之间”的直线看损失,发现中间损失明显升高(图 20.5b)——好的极小值一般不是线性相连的。但 Frankle 等人(2020)发现:若两个网络先一起训练、后期才用不同的 SGD 噪声/增强分道扬镳,这道“能垒”就消失了。这说明解在训练早期就被基本定下,某些极小值族之间确实线性相连。
Draxler 等人(2018)在 CIFAR-10 上找到性能都不错但各异的极小值,证明可以在它们之间构造一条损失始终很低的弯曲路径(图 20.7)——也就是说存在一个连通的低损失流形。网络越宽越深,这一点越成立。
20.3.4 损失曲面的曲率
随机高斯函数有个有趣性质:在梯度为零的点上,函数往下弯的方向比例,会随该点损失越低而越小——也就是说极小值都出现在较低的损失值处(Bahri 等人 2020)。Dauphin 等人(2014)在真实神经网络损失面上找驻点,同样发现损失越低、负特征值(向下方向)的比例越小(图 20.8);Baldi & Hornik(1989)分析浅层网络误差面,发现只有鞍点、没有局部极小值。
这些结果共同暗示:坏的局部极小值很少、甚至没有。
金发姑娘区(Goldilocks zone):Fort & Scherlis(2019)测量损失面上随机点的曲率,发现当权重的 ℓ₂ 范数落在某个特定区间时,曲面曲率“异常地正”(即异常凸,图 20.9)。而 He 与 Xavier 初始化恰好落在这个区间里——这为它们为何好用提供了一个线索。
20.4 决定泛化的因素(Factors that determine generalization)
前两节关心“能否训练成功”,这一节关心“训练好之后能否泛化”。它与第 9 章(正则化,显式地鼓励泛化)互为补充。
20.4.1 训练算法(隐式正则化)
既然网络通常过参数化,训练过程的细节决定了算法最终落到那一族退化解中的哪一个,而有些细节会可靠地改善泛化:
- SGD 比全批量梯度下降泛化更好(LeCun 等人 2012)。
- SGD 是否比 Adam 泛化更好曾有争论,但更晚近的研究表明:只要超参搜索做得仔细,差别不大(Choi 等人 2019)。
- 在不加别的正则化时,更小的批量泛化更好(Keskar 等人 2017);更大的学习率往往泛化更好。
- 关键也许是批大小 / 学习率之比:这个比值越小(批越小、学习率越大)泛化越好(图 20.10),He 等人(2019)还证明了一个与该比值正相关的泛化界。
这些观察与“SGD 隐式地往损失里加了正则化项、其强度取决于学习率”(第 9.2 节)一致——隐式正则化改变了参数轨迹,把它们引向一个泛化好的区域。
20.4.2 极小值的平坦度
从 Hochreiter & Schmidhuber(1997a)起就有人猜测:平坦的极小值比尖锐的泛化更好(图 20.11)。直觉是:极小值越平,参数估计的小误差、或训练/测试损失面对齐的小偏差,影响就越小。最小描述长度理论也支持这点——平坦极小值存储权重所需精度更低,按“用更少比特描述的模型泛化更好”,自然更会泛化。
平坦度可以用 (i) 损失相近的连通区域大小、(ii) 极小值处的二阶曲率、或 (iii) 邻域内的最大损失来衡量。但要小心:由于 ReLU 的非负齐次性,平凡的重参数化会人为改变“估计出的平坦度”(Dinh 等人 2017)。
尽管如此,证据仍偏向平坦度有用:Keskar 等人发现平坦度与泛化相关;Izmailov 等人(2018)把训练轨迹上多个点的权重平均起来(SWA),既让极小值更平也提升了泛化;集成(平均多个模型输出)也可视作让测试损失面更平。Kleinberg 等人(2018)指出训练中大的梯度方差有助于避开尖锐区域,这也解释了为何减小批量、加噪声有利于泛化。
但注意:单看尖锐度不足以跨数据集预测泛化——把 CIFAR 标签随机打乱(泛化已不可能)时,极小值并没有相应变尖锐(Neyshabur 等人 2017)。
20.4.3 架构(归纳偏置)
网络的归纳偏置由架构决定,选对架构能大幅改善泛化:卷积网络为规则网格数据而设计(假设输入各处统计相同,于是跨位置共享参数);Transformer 适合对排列不变的数据;图神经网络适合不规则图上的数据。让架构匹配数据的性质,泛化就胜过通用的全连接网络。
20.4.4 权重的范数(金发姑娘区)
20.3.4 提到:权重 ℓ₂ 范数落在某区间时曲率异常正。Fort & Scherlis(2019)进一步发现,范数落在这个“金发姑娘区”时泛化也好(图 20.12)。这并不奇怪:权重范数间接关联模型的 Lipschitz 常数——范数太小,模型变化不够快、抓不住底层函数的变化;范数太大,模型在数据点之间过分起伏、无法平滑插值。
用权重范数解释 grokking:Liu 等人(2023c)以此解释了 Power 等人(2022)发现的 grokking 现象——训练误差早已为零、过了很多很多轮之后,泛化才突然大幅改善(图 20.13)。其解释是:初始时权重范数太大,数据虽拟合得好,但数据点之间起伏剧烈;随着(隐式或显式)正则化不断把范数压回金发姑娘区,泛化便会“顿悟”般突然变好。
20.4.5 过参数化(双下降)
图 8.10 显示:过参数化程度越高,泛化往往越好。把这条曲线和经典的偏差/方差权衡曲线拼在一起,就得到了 双下降(double descent)。直觉解释是:模型越过参数化,在数据点之间就越有余地变得平滑。
权重范数也能解释双下降:当参数量与数据量相当时,模型为了精确穿过每个点会“扭曲”自己,权重范数升高,泛化变差;而网络越宽、权重越多,整体范数反而下降(因为 He/Glorot 初始化方差与宽度成反比,权重也不必为拟合数据剧烈变化),于是泛化回升。
20.4.6 离开数据流形(对抗样本)
前面都假设新数据与训练数据同分布。但真实部署中会遇到噪声、统计漂移、蓄意攻击。D’Amour 等人(2020)发现,在受损数据上、用不同随机种子训练的“同款模型”,表现的差异可能巨大且不可预测。
对抗样本(adversarial examples):Goodfellow 等人(2015a)证明深度模型对对抗攻击毫无招架之力。给一张被正确分类为“狗”的图,沿“让正确类概率下降最快”的方向加一点扰动,直到类别翻转。你或许以为翻成“飞机”后图片会像狗与飞机的杂交体,但实际上扰动后的图与原图几乎无法分辨(图 20.14,扰动放大 10 倍才看得见)。
这意味着:在贴近但不在数据流形的位置,存在被错分类的点。为何输入的微小改动能让输出剧变?目前最好的解释是(Ilyas 等人 2019):对抗样本并非“对训练流形外数据缺乏鲁棒性”,而是利用了训练分布里确实存在、但范数很小、人眼无法察觉的信息。
20.5 我们需要这么多参数吗?(Do we need so many parameters?)
20.4 说过参数化有利于泛化;复杂数据集上几乎没有“参数远少于数据却仍达到 SOTA”的先例。但 20.2 又说参数越多越好训练。于是问题成了:究竟是小模型有某种根本缺陷,还是只是训练算法找不到小模型的好解? 剪枝和蒸馏是两种给训练好的模型“瘦身”的办法。
20.5.1 剪枝(Pruning)
剪枝在保性能的前提下尽量去掉权重,从而减小存储(图 20.15)。最简单是按权重绝对值(或损失的二阶导)删单个权重;也可剪隐藏单元、卷积通道、甚至残差网络里的整层。通常剪完再微调,有时反复进行。
- Han 等人(2016)在 ImageNet 上让 VGG 只保留 8% 权重仍保持好性能——模型显著变小,但仍不足以证明“不需要过参数化”:VGG 的参数仍是 ImageNet 训练数据的约 100 倍。
- 用彩票假说的迭代流程(训练→剪小权重→用同一初始权重重训),Frankle & Carbin(2019)把 VGG-19(1.38 亿参数)在 CIFAR-10 上削掉 98.5%、把 ResNet-50 在 ImageNet 上削掉 80%,性能不降。令人印象深刻,但(不算数据增强的话)剪完仍是过参数化的。
20.5.2 知识蒸馏(Knowledge distillation)
另一条路是训练一个小网络(学生)去复刻大网络(教师)的表现。Hinton 等人(2015)指出“各输出类之间的信息分布”很关键,于是让学生去逼近教师 softmax 之前的 logits(图 20.16)。Zagoruyko & Komodakis(2017)进一步用“注意力迁移”让学生在多处的空间激活图也贴近教师,用约 1100 万参数的 18 层残差网络逼近约 6300 万参数的 34 层网络——但其参数量仍多于约 100 万的训练样本数。蒸馏至今也没能给出“欠参数化模型也能很好”的有力证据。
20.5.3 讨论
当前证据表明:在如今数据集的规模和复杂度下,泛化确实需要过参数化。 没有“参数远少于数据却 SOTA”的范例,剪枝和蒸馏也没改变这一图景。
更有甚者,Bubeck & Sellke(2021)证明:在 \(D\) 维空间里,平滑插值所需的参数是单纯插值的 \(D\) 倍。他们由此主张,当前面向大数据集(如 ImageNet)的模型还不够过参数化,继续加大容量也许正是提升性能的关键。
20.6 网络必须深吗?(Do networks have to be deep?)
第 3 章的通用逼近定理说:只要隐藏单元够多,浅层网络也能逼近任意函数。那为什么还要深?
支持“深度必要”的证据:历史上性能与深度有明确相关——ImageNet 上性能随深度提升,直到难以训练;残差连接和批归一化(第 11 章)让更深的网络可训,性能又随之提升。如今几乎所有 SOTA 应用(ViT、GPT-3、DALL·E-2 等)都是几十上百层的深网。
也有人尝试更浅的网络:Zagoruyko & Komodakis(2016)用更浅但更宽的残差网络达到与 ResNet 相近的性能;Goyal 等人(2021)用并行卷积通道、仅 12 层就接近深网性能;Veit 等人(2016)甚至发现残差网络里主要起作用的是 5~17 层的较短路径。
但总体证据仍偏向深度是关键——连表现好的最浅图像分类网络也需要 >10 层。只是没人能确切说清原因。三种可能的解释如下。
20.6.1 能表示更复杂的函数
第 4 章表明,同样参数量下,深网能造出比浅网多得多的线性区域;也存在“病态”函数,用浅网建模需要指数级更多的隐藏单元(Eldan & Shamir 2016;Telgarsky 2016)。但 Nye & Saxe(2018)发现其中一些函数实践中深网也不易拟合;而且几乎没有证据表明我们要逼近的真实世界函数具有这种病态性质。
20.6.2 更易训练
也许浅而宽的网络(隐藏单元数实际可行)本可达到 SOTA,只是很难找到既拟合训练数据又合理插值的好解。Urban 等人(2017)把 16 个卷积网络的集成蒸馏到不同深度的学生模型,发现浅网无法复刻深教师,且固定参数预算下,学生性能随深度上升。
20.6.3 更好的归纳偏置
卷积块和 Transformer 都对输入的局部区域共享参数、再逐步整合到全局,因此能表示的函数并不通用。一种解释是:这些约束自带好的归纳偏置,而很难逼浅层网络遵守同样的约束。
支持这点的证据很多:Ulyanov 等人(2018)发现未经训练的 CNN 结构都能当先验,用于去噪、超分辨率(“深度图像先验”);Frankle 等人(2021)随机初始化卷积核并冻结、只训 BatchNorm 的偏移和缩放,也能取得不错的分类性能;Zhang 等人(2017a)发现随机初始化卷积滤波器的特征足以支撑后续分类。Urban 等人还发现,蒸馏进卷积架构总是比蒸馏进全连接更好——这说明卷积架构有内在优势,而其顺序的局部处理浅网难以复刻,这又反过来支持“深度确实重要”。
本章小结
本章论证了:深度学习的成功是一件令人惊讶的事。
- 拟合:高维非凸损失函数本该难优化,但深网却能可靠训练。最重要的两个因素是过参数化和激活函数的选择;令人意外的是,数据集、训练算法的随机性、显式正则化都不太重要,固定参数量时深度也没有确凿影响(除了梯度爆炸/消失/破碎这类数值问题)。
- 损失曲面:训练时参数沿一个低维子空间移动,抵达一族相互连通的全局最小值之一;坏的局部极小值并不明显。
- 泛化:同样随过参数化改善;此外极小值的平坦度、架构的归纳偏置、权重的 ℓ₂ 范数(金发姑娘区) 也都重要。要泛化好,似乎既需要大量参数、也需要多层——但我们还不知道为什么。
- 要这么多参数吗?要这么深吗? 目前证据都倾向“是”,剪枝、蒸馏、浅宽网络的尝试都没能推翻这一结论。
许多问题仍未解答:我们没有任何指导性理论能预测训练和泛化何时成功、何时失败;不知道深度学习的能力极限,也不知道是否存在效率高得多的模型;不知道同一模型里是否存在泛化更好的参数。深度学习至今仍由经验演示驱动——这些演示无疑令人惊艳,却尚未被我们对其机制的理解所匹配。
关键术语对照
| 中文 | English | 一句话含义 |
|---|---|---|
| 过参数化 | Overparameterization | 参数远多于(拟合所需的)数据,留出大量自由度 |
| 不合理的有效性 | Unreasonable effectiveness | 深度学习“本不该奏效却奏效”的现象 |
| 维度灾难 | Curse of dimensionality | 输入空间随维度指数膨胀,数据相对极稀疏 |
| 局部极小值 / 鞍点 | Local minimum / Saddle point | 梯度为零但非全局最优 / 既非极大也非极小的点 |
| 全局最小值 | Global minimum | 本章宽松地指“所有数据都被正确分类”的解 |
| 彩票假说 | Lottery ticket hypothesis | 大网络里藏着可单独训练好的“中奖子网络” |
| 中奖彩票 | Winning ticket | 那个足以提供全部性能的小子网络 |
| 内在维度 | Intrinsic dimension | 训练实际所需的最小子空间维度 |
| 金发姑娘区 | Goldilocks zone | 权重 ℓ₂ 范数“不大不小”、曲率/泛化都最好的区间 |
| 平坦 / 尖锐极小值 | Flat / Sharp minimum | 平坦极小值通常泛化更好 |
| 隐式正则化 | Implicit regularization | SGD、有限步长等隐含带来的正则化效果 |
| 归纳偏置 | Inductive bias | 架构对“偏好哪类函数”的内在假设 |
| Grokking | Grokking | 训练误差早已为零、很久后泛化才突然变好 |
| 双下降 | Double descent | 参数过了插值点后,泛化反而再次改善 |
| 对抗样本 | Adversarial example | 人眼无法察觉的微扰却让模型彻底分类错误 |
| 知识蒸馏 | Knowledge distillation | 小“学生”网络模仿大“教师”网络 |
| 剪枝 | Pruning | 删去多余权重以压缩模型 |
| 通用逼近定理 | Universal approximation theorem | 浅网只要够宽就能逼近任意函数 |
返回目录 | 上一章:第 19 章 强化学习 | 下一章:第 21 章 深度学习与伦理