双重下降:为什么过拟合之后模型反而变好了
双重下降:为什么过拟合之后模型反而变好了
统计学教科书说模型太复杂会过拟合。深度学习实践说模型越大越好。谁在说谎?答案是:都没有,但各自只说了一半的故事。
一个让统计学家困惑的现象
假设你是一个统计学老师,正在教学生多项式回归。你有 20 个数据点,底层规律是一个三次多项式加上一些噪声。
你会告诉学生:
- 用一次多项式(直线)拟合?太简单了,欠拟合——捕捉不到曲线的弯曲。
- 用三次多项式拟合?刚刚好,恰到好处——既抓住了规律又没被噪声带偏。
- 用 20 次多项式拟合?太复杂了,过拟合——完美穿过每个点,但在训练点之间疯狂震荡。
这就是经典的偏差-方差权衡 (bias-variance tradeoff):模型太简单有高偏差(欠拟合),模型太复杂有高方差(过拟合)。最好的模型在中间某处。
这个故事在统计学教科书里讲了几十年,没人质疑。直到——
深度学习来了。
GPT-3 有 1750 亿参数,训练数据只有几百亿个 token。参数远远多于数据——按经典理论,这应该过拟合得一塌糊涂。然而它工作得非常好。更诡异的是,人们发现模型越大,效果越好。
到底哪里出了问题?
偏差-方差权衡的”完整版”
让我们回到那个多项式回归的例子。你有 20 个数据点,用的是 20 次多项式——它可以完美穿过所有训练点(这叫插值 (interpolation))。效果很差,曲线在训练点之间剧烈震荡。
但如果我们不停在这里呢?如果我们用 100 次多项式呢?1000 次呢?
直觉上这似乎荒谬——已经过拟合了,再加复杂度不是雪上加霜吗?
然而 2019 年,OpenAI 的研究员们做了大量实验,发现了一个惊人的现象:当模型复杂度继续增加,远远超过刚好能拟合训练数据的程度时,测试误差竟然又开始下降了。
测试误差的曲线不是经典的 U 形,而是一个更复杂的形状:先下降,再上升(到达峰值),然后再次下降。这就是双重下降 (Double Descent)。
图中的粉色实线是实际观测到的行为:测试误差经历了两次下降。灰色虚线是经典教科书预测的行为:只有一次 U 形。
那个误差飙升到峰值的位置,叫做插值阈值 (interpolation threshold)——大约在模型参数数量等于训练数据点数量的时候。这是模型”刚好能完美拟合训练数据”的临界点。
为什么在插值阈值处误差最大?
这是理解双重下降最关键的直觉。让我用一个比喻:
想象你是一个设计师,需要画一条曲线穿过纸上的若干个点。
情况一:你手里的”自由度”远少于点的数量。 你画不出穿过所有点的曲线,所以你画出一条”最接近”所有点的平滑曲线。虽然不完美,但因为你的工具有限,曲线自然是平滑的——这就是欠拟合区域,模型被迫保持简单。
情况二:你的自由度刚好等于点的数量。 你恰好有”唯一”一条曲线能穿过所有点。不管点里有没有噪声、有没有异常值,你被迫完美拟合它们所有人,包括那些被噪声污染的错误点。你没有任何”余地”来选择一条更平滑的路径——唯一的解就是那条疯狂震荡的曲线。这就是插值阈值:被迫拟合噪声,且无路可选。
情况三:你的自由度远多于点的数量。 现在有无数条曲线都能穿过所有点。你可以选择!梯度下降这类优化算法有一个隐含的倾向:它们会在所有完美拟合训练数据的解中,选择最”简单”的那个(在数学上是范数最小的解)。这就像在无数条能穿过所有点的路径中,选了那条最平滑、最不折腾的。
这就是双重下降背后的核心直觉:
在插值阈值处,模型被迫用唯一的方式拟合噪声数据——这是最糟糕的情况。一旦模型远远过参数化,它有无穷多种方式拟合数据,优化算法会帮它选一个平滑的解。
三种”维度”的双重下降
OpenAI 2019 年的论文揭示了一个更深层的统一:双重下降不只发生在模型大小这一个维度上。它实际上沿着至少三个轴出现:
1. 模型维度双重下降 (Model-wise)
这是最经典的版本:固定训练数据,逐渐增加模型参数数量。在 ResNet18 上的 CIFAR-10 实验中,随着网络宽度增加,测试误差先降后升再降。
2. 训练时间双重下降 (Epoch-wise)
固定一个足够大的模型,观察它在训练过程中的表现。测试误差先下降(学到了有用的模式),然后上升(开始记住噪声),然后——如果你继续训练足够久——又开始下降!
这解释了一个实践中的困惑:为什么有时候训练更久反而效果更好?因为模型可能正在经历 epoch-wise 的双重下降。
3. 样本维度双重下降 (Sample-wise)
这个最反直觉:固定模型大小,增加训练数据量——有时候更多数据反而让效果变差!
为什么?因为增加数据会把插值阈值推向右边(需要更大的模型才能拟合更多数据)。如果你的模型大小恰好在新的插值阈值附近,你就掉进了那个”峰值陷阱”。
Nakkiran 等人提出了一个统一的解释框架:定义有效模型复杂度 (Effective Model Complexity, EMC) 为模型在给定训练过程下能够”刚好拟合”的最大样本数。当 EMC ≈ 训练样本数 $n$ 时,你正处于插值阈值,误差最大。无论你通过增加参数、增加训练时间还是减少数据来让 EMC 远远大于 $n$,误差都会重新下降。
噪声是”催化剂”
一个重要的实验发现:双重下降在有标签噪声时最为明显。 如果训练数据完全干净(没有错误标签),双重下降的峰值很小,甚至可能看不到。但一旦加入 10-20% 的标签噪声,峰值就变得非常显著。
为什么?回到之前的比喻:
- 如果所有点都”说的是真话”(无噪声),那么被迫完美拟合它们其实问题不大——你确实应该经过这些点。
- 但如果有些点”在撒谎”(标签噪声),你被迫完美拟合它们就是灾难——你在认真对待错误信息。
在插值阈值处,模型必须把所有计算能力都用来”相信”每一个训练样本——包括那些有噪声的。它没有任何余量来”质疑”异常值。而在过参数化区域,模型有足够的容量以一种”温和”的方式拟合所有点,不需要为了拟合噪声点而扭曲整个函数。
这也解释了为什么现代 LLM 的训练数据清洗如此重要——不是因为模型会过拟合(模型足够大,处于深度过参数化区域),而是因为噪声数据仍然会消耗模型容量、影响学到的表示质量。
隐式正则化:梯度下降的”偏好”
双重下降故事里最精彩的部分,是它揭示了梯度下降并不是一个”中性”的优化器。
当模型过参数化时(参数远多于数据),存在无穷多个能完美拟合训练数据的解。梯度下降不会随机选一个——它有一个隐含的偏好。
对于线性模型,这个偏好有精确的数学描述:从零初始化开始的梯度下降,收敛到所有插值解中$\ell_2$ 范数最小的那个。翻译成人话就是:在所有完美答案中,选权重最”小”的那个。
\[\hat{w} = \arg\min_w \|w\|_2 \quad \text{subject to} \quad Xw = y\]这个最小范数解可以写成 $\hat{w} = X^{\dagger}y$(Moore-Penrose 伪逆)。
为什么最小范数意味着平滑?因为小权重意味着模型对输入的微小变化不会产生剧烈反应——函数变化是温和的。这本质上等价于加了一个无穷小的 L2 正则化(ridge regression,正则化系数 $\lambda \to 0^+$)。
这就是隐式正则化 (implicit regularization):你不需要手动添加正则化项,梯度下降本身就帮你选了一个”好”的解。
但有一个关键条件:这种隐式正则化只在过参数化区域才有效。在插值阈值处(唯一解),没有选择的余地,隐式正则化无从发挥。
从线性模型到深度网络
你可能会问:以上分析都是关于线性模型的,深度神经网络也是这样吗?
答案是:深度网络的情况更复杂,但基本直觉相同。
Neural Tangent Kernel 视角
在极宽(参数极多)的限制下,深度网络的训练动态可以用神经切线核 (Neural Tangent Kernel, NTK) 来近似描述。在 NTK 体制下,网络的行为类似于一个核方法,梯度下降会收敛到再生核希尔伯特空间 (RKHS) 中范数最小的插值函数。
这给了我们同样的故事:过参数化的网络通过隐式正则化选择了”平滑”的解。
但实际网络更有趣
实际的深度网络不完全在 NTK 体制中工作。它们会经历特征学习 (feature learning)——网络会主动学习好的数据表示,而不只是在固定特征上做线性拟合。
这意味着实际网络的隐式正则化比”最小范数”更强大:它们不只是选择平滑的函数,还会选择与数据结构对齐的解。这也是为什么深度学习在实践中表现远超核方法的原因之一。
实际影响:对训练 LLM 意味着什么
双重下降现象对大语言模型的训练有几个重要的实践启示:
1. “大即是好”有了理论解释
现代 LLM 参数量远超训练数据量,它们深处过参数化区域的”第二次下降”阶段。Scaling Laws 之所以成立——模型越大效果越好——部分原因就是这些模型远离了插值阈值,享受着充分的隐式正则化。
2. 早停不总是最优
传统做法是用验证集监控,一旦验证误差开始上升就停止训练。但 epoch-wise 双重下降告诉我们:如果你在第一次上升时就停下来,可能错过了后面的第二次下降。
当然,这不意味着永远不要早停——但你需要知道你的模型处于双重下降曲线的哪个位置。
3. 正则化改变了双重下降的形状
适当的显式正则化(如 weight decay)可以消除双重下降的峰值,让曲线变成单调下降。这是因为正则化相当于远离了”纯插值”状态,哪怕在参数等于数据点的地方,模型也不会被迫完美拟合每一个噪声。
研究表明,最优的正则化强度也会随着模型大小展现出双重下降行为:对于过参数化模型,最优 weight decay 通常非常小——这与”模型越大需要越强正则化”的直觉相反。
4. 数据质量在阈值附近格外重要
当你的模型大小恰好在插值阈值附近时,标签噪声的影响会被放大到最大。这在实践中意味着:如果你用的是中等大小的模型(不是极端过参数化),数据清洗的回报特别高。
更深的问题:为什么教科书错了那么久?
双重下降的发现暴露了统计学习理论的一个历史盲区:经典理论只研究了”欠参数化”那一半的故事。
原因很实际:在计算资源有限的时代,没有人会用 1000 个参数去拟合 20 个数据点——那太浪费了。经典统计学的全部智慧都是在”参数是稀缺资源”的假设下建立的。
但深度学习翻转了这个假设:参数是廉价的(GPU 提供了巨大的计算量),数据才是稀缺的。在这个新世界里,过参数化是常态,插值阈值只是通往更好泛化的一个需要跨过的”中间阶段”。
这并不意味着偏差-方差权衡是错的——它在经典区域内依然正确。双重下降是对偏差-方差权衡的扩展,把故事从 U 形补完成了一个先 U 后降的完整图景。
与 Grokking 的关系
如果你读过我们系列的前几篇文章,可能注意到双重下降和 Grokking(过拟合后突然泛化)有相似之处。确实如此:
- 双重下降 关注的是:跨过插值阈值后,模型泛化为什么变好
- Grokking 关注的是:在训练后期(远超过拟合点),模型突然从”记忆”转变为”理解”
两者都涉及”过拟合不是终点”这个核心洞察。区别在于:双重下降通常是渐进的(测试误差平滑下降),而 Grokking 是突然的(测试准确率突然跳升)。Grokking 被认为与模型内部从”记忆电路”到”泛化电路”的相变有关,而双重下降更多与解空间的几何性质有关。
总结
双重下降现象告诉我们的核心故事是:
- 经典智慧没有错,但只说了一半。 在欠参数化区域,偏差-方差权衡完全成立。
- 插值阈值是最危险的地方。 模型”刚好够大”反而最糟糕——被迫拟合噪声,无路可选。
- 过参数化带来了自由度。 无穷多个解中,优化算法的隐式偏好帮你选了一个好的。
- 梯度下降不是中性的。 它有内建的”奥卡姆剃刀”——在所有完美解中倾向简单的。
- 深度学习之所以有效,部分原因是它跳过了危险区。 现代大模型远在插值阈值右边,享受着过参数化带来的”第二次下降”红利。
下次有人问你”为什么 GPT 有 1750 亿参数但没过拟合”,你可以回答:因为它太大了,以至于过拟合变成了一件好事。 它有足够的自由度以一种”优雅”的方式拟合数据——而梯度下降会帮它选那条最平滑的路。
进一步阅读
- Belkin et al. (2019). “Reconciling Modern Machine Learning Practice and the Classical Bias-Variance Trade-off.” PNAS.
- Nakkiran et al. (2019). “Deep Double Descent: Where Bigger Models and More Data Can Hurt.” arXiv:1912.02292.
- Bartlett et al. (2020). “Benign Overfitting in Linear Regression.” PNAS.
- Neal (2019). “On the Bias-Variance Tradeoff: Textbooks Need an Update.” MSc Thesis.