跳转到内容

Double Descent — 模型越大越准,过参数化时代的反常识曲线

是什么

经典统计学告诉我们:模型越复杂越容易过拟合,所以测试误差会先降后升,呈 U 型。日常类比:你写考试答案,写得太短会漏(欠拟合),写得太长会东扯西扯(过拟合),中间长度刚刚好。

但 2018 年开始,深度学习圈出现一个让统计学家睡不着的现象:模型大到训练误差归零之后,测试误差不仅没爆,反而又开始降。Belkin 这篇 2019 PNAS 把它画成一条曲线——先降→在某个临界点冲一个尖峰→然后再降。这条曲线叫 double descent(双下降)。

那个尖峰所在的临界点叫 插值阈值(interpolation threshold),意思是:模型容量恰好够把训练集精确背下来。

再换一个类比:想象你在背一本词典。

  • 容量太小(欠参数):根本背不全,考试输——经典 U 型左侧
  • 容量刚好等于词典大小(插值阈值):勉强背下来,但只有一种背法,稍微换个题就崩——这就是峰
  • 容量远超词典(过参数):可以用很多种方式把词典记住,你大脑会自动挑最简洁那种,反而能举一反三——这就是过参数区的再次下降

这个现象之所以反直觉,是因为整个 20 世纪的统计学只看到前两段。

为什么重要

不理解 double descent,下面这些事都讲不通:

  • 为什么 GPT-3 用 1750 亿参数训练,参数远超训练 token 数,却没过拟合
  • 为什么 ResNet 加宽加深,测试准确率一直在涨,没看到经典 U 型
  • 为什么 scaling-laws 缩放律敢说『模型越大、loss 越低』——背后的机制就是双下降的右半段
  • 为什么 1990 年代神经网络一度被『过拟合教条』压制了 20 年——大家以为参数多必过拟合,没人敢推到过参数化区域

这篇论文是把 经典统计学习理论现代深度学习实践 第一次正式对账的工作。

这篇论文之所以重要,不在于它发现了新现象(1990s 早就有人零星看到过),而在于它把现象画成一张让所有人都能记住的图,并且明确给出了三段式结构。

核心要点

把模型容量从小到大扫一遍,测试误差长这样:

  1. 欠参数区(参数 < 样本数):经典 U 型——容量小欠拟合,容量增加误差降,再增加方差大误差升
  2. 插值阈值(参数 ≈ 样本数):训练误差刚好降到零,但只有唯一一组零误差解,方差爆炸,测试误差冲上尖峰
  3. 过参数区(参数 >> 样本数):有无穷多个零训练误差解,优化器(SGD、最小范数解)隐式偏好简单解,测试误差再次下降,可以低于经典 U 型最低点

关键洞察:经典 U 型只是双下降的左半段。统计学家 100 年来只看到这半段,因为算力不够,没人敢把模型推到右半段。

横轴是 模型容量 / 训练样本数,不是单纯参数量。

为什么过参数区会下降?论文给出三个互相补充的视角:

  • 多解视角:N > n 时方程组『欠定』,零训练误差解构成一个高维流形,优化器从这个流形里挑一个解
  • 隐式正则视角:SGD、最小二乘最小范数解都偏好『范数小』的解,等价于在做隐式 L2 正则
  • 维度祝福视角:高维空间中『随机选两个点几乎正交』,特征间冗余降低了相互干扰

这三个视角都不算完整,但都能解释一部分现象。完整理论至今未定。

实践案例

案例 1:Random Fourier Features

最干净的实验设置。用一组随机傅里叶基函数拟合数据:

  • 基函数数 N < 训练样本 n:误差按经典 U 型走
  • 基函数数 N = n(插值阈值):测试误差冲尖
  • 基函数数 N > n:测试误差掉下来,最后比 U 型谷底还低

这是统计学家最难接受的——明明已经背下训练集了,加更多基函数反而更准

为什么?因为 N > n 时存在无穷多组零训练误差解。最小二乘的最小范数解会自动挑出范数最小的那个——这个隐式偏好恰好近似『简单 = 泛化好』的奥卡姆剃刀。Belkin 论文的精髓不在于发现峰,而在于指出右半段下降的机制就是『多解 + 隐式偏好』

案例 2:现代神经网络(ResNet on CIFAR)

论文展示 ResNet18 在 CIFAR-10 上随着宽度(每层通道数)变化的曲线:

  • 宽度小:欠拟合
  • 宽度中等:训练 loss 降到 0,测试 loss 出现一个清晰的峰
  • 宽度大:测试 loss 重新降到比中等宽度还低的水平

后续 Nakkiran 等人 2019 Deep Double Descent 把这个现象拆得更细:模型大小、训练 epoch、训练样本数 这三个维度都能看到双下降。

更违反直觉的是『样本数』维度——加训练数据有时反而让测试误差变差!原因是:原本你在过参数区(容量 >> 样本),加数据后落到了插值阈值附近的峰。这条结论在工程里直接颠覆『数据越多越好』的朴素信念。

案例 3:你写过的回归代码里其实就有

线性回归用最小二乘解 (X^T X)^{-1} X^T y,当特征数等于样本数时,X^T X 几乎奇异,解的方差爆炸——这就是插值阈值。当特征数远超样本数,改用 最小范数解 X^T (X X^T)^{-1} y,反而稳定。

很多统计教科书提到『多重共线性』时其实在描述插值阈值附近的方差爆炸,只是从来没把右边那段画出来。

自己上手验证最快:随便造一组 50 个样本的回归数据,特征数从 5 扫到 500,画测试误差曲线。在特征数 ≈ 50 时一定能看到一个尖峰。这是 10 行 NumPy 就能复现的现象,但能让你对现代 ML 的『过参数化为什么不爆』有体感。

踩过的坑

  1. 不是『下降-上升-下降』,是『下降-峰值-下降』:峰值很窄,刚好落在插值阈值。一旦你扫的容量步长太粗,会直接错过峰,看上去像单调下降
  2. 横轴不是参数量,是 容量 / 样本数比值。同样一个模型,训练集变小,峰值会左移
  3. 正则化(weight decay、dropout、early stopping)会抹平峰:所以现实工程里很多人没观察到双下降,但不代表现象不存在——它被你打的补丁盖住了
  4. 不要把 double descent 和 grokking-2022 混淆:double descent 是『模型容量』维度上的非单调,grokking 是『训练步数』维度上的非单调。坐标轴不同
  5. 过参数化能泛化的功劳不全在模型容量:还在于优化器偏好(SGD 隐式偏向小范数解)、数据本身的低维结构、初始化分布。论文是描述现象,机制至今还在被研究
  6. 不要拿『参数数 / 样本数』直接套深度网络:神经网络的『有效容量』远低于参数量(被架构、初始化、激活函数压缩)。Nakkiran 后续工作专门定义『effective model complexity』来更准确定位插值阈值
  7. 集成(ensemble)不是双下降的反例:多个过参数模型平均后泛化更好,本质上是把『多解 + 隐式偏好』再叠一层,与双下降同源

适用 vs 不适用场景

适用

  • 解释为什么大模型(LLM、ViT、扩散模型)敢用过参数化训练而不爆
  • 设计实验时,避开插值阈值附近的容量配置(不稳定)
  • 理解为什么剪枝、蒸馏后的小模型有时反而泛化更差——可能落进峰里了
  • 调试『加了数据反而变差』『模型变大反而 loss 上升』这类反常事故——先怀疑是不是落进峰

不适用

  • 直接当训练指南——它是描述现象,不告诉你怎么调参
  • 解释所有泛化谜团——双下降只是过参数化泛化的一部分线索
  • 强正则化场景——峰被 weight decay / dropout 抹平,曲线退化成单调下降

历史小故事(可跳过)

  • 1990s:Loog、Krogh-Hertz、Opper 等人在统计物理框架里其实早就观察到类似现象,但被淹没在『过拟合教条』里没人重视。Vapnik 的 VC 维理论(1970s-90s)成了主流,给所有人灌输『复杂度上限 = 泛化上限』的直觉
  • 2014-2017:Zhang 等人 Understanding Deep Learning Requires Rethinking Generalization 用『神经网络能记住随机标签』戳穿经典理论——同一个网络既能完美拟合真实标签也能完美拟合随机标签,VC 维上界给的预测误差是 100%,但实测 5%。但这篇论文只是『戳穿』,没给『替代』
  • 2018 年 12 月:Belkin 把现代深度学习现象 + 1990s 老观察 + 一组干净的 random feature 实验拼成一篇论文,挂上 arXiv,双下降这个名字第一次被广泛传播。论文最大贡献是给出可视化的曲线——以前所有人在概念上吵,现在有图了
  • 2019 年 12 月:Nakkiran 等人发布 Deep Double Descent,把现象拆到 epoch / 样本数 / 模型大小三个维度,让现象彻底跑出统计圈进入深度学习主流
  • 2020 年起:成为缩放律 scaling-laws / chinchilla / lottery-ticket-2019 等后续工作的理论起点。GPT-3、PaLM、Llama 这些过参数化巨兽的诞生,本质上都建立在『右半段会继续下降』的赌注上
  • 2022 至今:双下降被推广到对比学习、扩散模型、in-context learning 等场景;机制层面的解释(NTK、特征学习、隐式正则)仍是开放问题

学到什么

  1. 过参数化不等于过拟合——容量足够大、有合适隐式偏好的优化器,泛化反而更好
  2. 经典理论不是错,是只看到了左半段——U 型曲线在欠参数区仍然成立
  3. 插值阈值是个真实的危险区——做实验调容量时要避开
  4. 现象先于机制:这篇论文没『解释』为什么过参数化能泛化,只是把曲线画出来。但有了曲线,整个领域才能开始追问机制
  5. 统计学经验外推到深度学习要小心——『参数 < 样本数』这条经验法则在 2010 年代后基本失效,但很多教材还在教
  6. 画图是科研最低成本的革命:Belkin 这篇论文数学不复杂、实验也不豪华,靠一张图把领域共识翻了。画图能力被严重低估

这给一条朴素的研究启示:当所有领域专家都『确信』某件事时,去试试反方向。整个统计学界 50 年都没人把模型容量推到样本数右边——不是不会,是『不敢』,因为教条说不可以。

延伸阅读

关联

  • grokking-2022 —— 同样是非单调泛化曲线,但维度(步数 vs 容量)不同
  • scaling-laws —— 缩放律的机制基础就是双下降的右半段单调下降
  • lottery-ticket-2019 —— 解释过参数化里为什么能找到稀疏强子网络
  • chinchilla —— 在过参数化时代重新平衡参数量与训练 token
  • adam-2014 —— 过参数化能泛化的部分功劳归优化器隐式偏好