REACTOR
Y01 Overfitting 机器与前沿 · REV.3

SELF-TEST OK · REACTOR v3 · LOADING [ Y01 ]…

过拟合

训练集就是你的 eval。

机器学习给 Goodhart 定律起了另一个名字:过拟合(overfitting)。统计学习理论描述的是同一件事,只是不用 Goodhart 这个词。

你见过这样的学生。备考就是把往年真题和答案背得滚瓜烂熟,拿真题做模拟考,回回满分;上了考场,卷子是新出的,当场垮掉。他没有学会规律,他背下了那一批题。

机器学习里是同一幕。你有一批数据(训练集,给模型学的例题),想让模型学出规律。不断提高模型容量(它能记多少、拟合曲线能弯多少下,比如多项式的次数),训练集上的误差一路下降,好像越学越好。可拿一批没见过的新数据(测试集)一考,误差先降后升:过了某个点,模型不再学规律,开始背这批例题特有的巧合和噪声。高次多项式穿过每一个样本点、却在样本点之间剧烈振荡,就是这种背诵最直观的画像。训练集上的完美,是拿真实泛化(在新数据上的表现)换来的。

这个现象有一副干净的代数骨架,1992 年 Geman 等人写成经典的偏差-方差分解:模型的期望误差拆成三份。偏差:模型太简单,规律没学全,怎么练都差一截。方差:模型太灵活,把这批数据碰巧有的花纹也当成规律,换批数据就翻车。再加一份数据本身的噪声,谁也消不掉。容量上升,偏差降、方差升,两项之和先降后升,教科书那条 U 形曲线就是这么来的。它与 Goodhart 的对应一眼可见:训练误差是你能直接优化的代理指标,泛化误差是你真正在乎的目标。容量还小时,降的主要是偏差,训练误差和泛化误差一起往下走,两者同向;容量一过临界点,方差接管,训练误差照样能压得更低,泛化误差却掉头上升,代理和目标就此脱钩。

FIG.01 训练集就是你的 eval SIM

把映射逐项写清楚:训练集 = 你优化的代理指标;真实分布 = 你真正想要的目标;模型容量 = 优化压力。「在训练集上过拟合」和「把一个 benchmark 分数刷到虚高」(benchmark:给模型统一出题打分的公开题库)是同一件事的两个名字。

这个同构还可以往下压一层。蓝支 B08 把 Goodhart 崩塌分成四型,其中两型不需要任何人作恶,纯统计就会发生,过拟合正好把它们演示齐了。回归型:测试分数 = 真实能力 + 噪声,你从一堆候选里挑分数最高的,会系统性挑中噪声恰好偏高的那个,于是榜首的真实能力在期望上低于它的分数,这也叫优化者诅咒(B13 专讲)。极值型:把分数推到分布极端处,代理与目标的相关在极端处断裂,一个被刷到 99% 的基准上,最后那一个百分点度量的往往已经不是能力。另外两型(厂商定向刷榜的对抗型、改动不改善真实效用的因果型)要到 Y11Y03 才有戏份。

机器学习社区为此发展出一套三分纪律:训练集用来调参数;验证集(从数据里再切出的一块)用来挑模型、挑超参数;测试集只在最后看一次,当成绩单。三分里最容易被忽略的角色是验证集:它承担了全部日常挑选,每一次调参、挑模型,都是在照着它的分数做决定。照得越多,你捕捉到的就不只是模型之间的真实差异,还有它自己的噪声——这就是它最先被用旧。你在它上面挑出的最优配置,一部分正是这噪声的最优解,这正是最终报告必须回到测试集的原因。

而「只看一次」不是洁癖,是有定价的。Dwork 等人 2015 年在 Science 上给出严格版本:每一次拿测试集做决定,都是对它的一次适应性查询,都在消耗它的统计有效性。他们同时给出解药 Thresholdout:用差分隐私机制(一种故意把查询结果弄模糊、限制每次泄漏信息量的技术)中介对测试集的访问,可以在指数级多次查询下仍保持泛化保证。模糊的作用很直白:读数糊到不足以定位测试集的噪声,噪声就灌不进你的决策。测试集因此更像一个账户而不是一面镜子:余额有限,每看一眼都在扣款,只是账单从不主动寄给你。

那笔账在现实里到底被透支了多少,有一组出人意料的测量。Recht 等人 2019 年按原始流程重造了一套新的 ImageNet 测试集(ImageNet:深度学习时代最重要的图像识别基准),让历年模型全部重考。结果所有模型普遍掉分:CIFAR-10 与 ImageNet 两项研究合计掉了约 3% 到 15%,ImageNet 约 10%。乍看像十年集体过拟合的铁证。

但关键结论恰恰相反:模型的相对排名几乎完好保留。掉分主要来自新测试集稍难的分布漂移,而不是整个社区在同一测试集上迭代十年造成的适应性透支。这个细节值得咀嚼:分布漂移对所有模型近似同向地扣分,像整场考试换了一份更难的卷子,谁都掉几分但名次不变;而适应性过拟合应当偏爱被挑选次数最多的模型,让它们在新卷子上摔得更重。后者没有出现,就是透支有限的证据。

这给「eval 用多了就退化」画了一条经验上界:账本是真的,最坏情况的理论保证也是真的,但在题目足够丰富、社区靠换架构而非纯刷分推进的场景里,透支速度远低于恐慌。退化在不同场景里快慢不同。Y02 是坏得快的那一侧:优化压力高度集中于单一目标时,退化变得剧烈。Y03 是最字面的版本:测试题直接进了训练语料,过拟合不再需要任何统计机制,背诵即可。防御侧的处方是 G03 的留出与动态评测:既然每看一眼都在扣款,就把一部分题库锁进优化循环永远看不到的地方。

留一个问题:良性过拟合表明,超大模型可以一字不差地拟合含噪训练集却依然泛化良好,那「过拟合」的边界到底该画在哪里?画在「拟合了噪声」,还是画在「拟合了只属于这套题、换一套题就蒸发的东西」?后一种画法正是 Y02Y03 采用的口径。

一句话带走:在例题上的完美是可以买的,代价是新题上的真实;你的 eval 就是那批例题。

来源 / 延伸阅读
  • Geman, Bienenstock & Doursat (1992). "Neural Networks and the Bias/Variance Dilemma." Neural Computation(偏差-方差分解)。
  • Vapnik, V. (1995). The Nature of Statistical Learning Theory;Hastie, Tibshirani & Friedman (2009). The Elements of Statistical Learning(VC 维、正则化)。
  • Belkin et al. (2019). 双下降,arXiv:1812.11118(PNAS);Nakkiran et al. (2019). "Deep Double Descent." arXiv:1912.02292;Bartlett et al. (2020). 良性过拟合,PNAS
  • Dwork et al. (2015). "The Reusable Holdout." Science 349:636;STOC 版 arXiv:1411.2664(适应性查询的统计定价)。
  • Recht et al. (2019). "Do ImageNet Classifiers Generalize to ImageNet?" arXiv:1902.10811(十年重测:掉分但排名稳)。
  • research/13(Y01 简报)、research/05 §五、research/deep/D4 主线一。
接下来去哪