榜单排名可能是难度分布的幻觉:把基准测试看成"难度轴上的测度"之后

你有没有遇到过这种情况:RLVR 训练跑了两周,loss 在降,肉眼看着生成质量在变好,结果 AIME24 的分数纹丝不动。你开始怀疑训练出了问题,降学习率、换数据配比、回滚 checkpoint,折腾一圈,到头来发现——进步是真的,只是 AIME 那 30 道题恰好没覆盖到模型进步的那个难度区间。

或者另一种:两个模型在榜单上只差 0.3 分,公关稿写"性能相当",但你拿去跑自己业务里的难题,差距大得离谱。你翻一下这个基准的题目构成,发现 80% 都是简单题——两个模型在简单题上确实差不多,可榜单把这部分权重放大了。

这两种翻车场景,一篇 NeurIPS 2026 的论文给了统一的数学解释。结论很朴素:基准分数不只是模型的函数,也是题目难度分布的函数。你只看了前者,忽略了后者。

核心摘要

这篇论文把每个基准测试形式化成"难度轴上的一个经验测度"——每道题等价于在其难度位置放一个单位质量。在这个视角下,榜单失真被拆成两个可量化、可证明的失效模式:测度错配(基准难度分布偏离目标分布,用 Wasserstein 距离衡量)和覆盖缺口(难度轴上存在无题区间,用最大相邻间隙衡量,论文证明了它恰好是检测局部进步的精确 minmax 边界)。作者用 IRT 估了 25 个热门基准的题目难度,发现 10 个 DDM 超 0.10、8 个 Max Gap 超 0.10——AIME 全系的 top-5 间隙和接近 0.5,也就是说难度轴上一半的区域基本是盲区。诊断之后是干预:他们提出 BenchFill,一个难度定向的题目改写搜索算法,每个基准只插 3 道题就把 top-3 间隙和压掉 21% 到 39%,逼近理论 oracle。诊断思路干净,理论结果漂亮,还顺手开源了补齐版 AIME 数据集。我的评价:这不是什么惊天动地的底层突破,但它是"基准科学"里少见的一篇把直觉写成定理、把定理做成工具的扎实工作。

论文信息

  • 标题:Your Benchmark Is an Empirical Measure Over Difficulty
  • 作者:Yifan Sun, Naicheng Yu, Jiawen Gong, Jingyan Shen, Huan Zhang
  • 机构:University of Illinois Urbana-Champaign / UC San Diego / New York University
  • 发表:NeurIPS 2026,arXiv:2610.29927,2026 年 10 月 21 日提交
  • 链接:https://arxiv.org/abs/2610.29927
  • 代码:https://github.com/ASTRAL-Group/benchmark-difficulty-measure
  • 补齐数据集:https://huggingface.co/datasets/Yifan99/BenchFill

🎯 问题的根子:分数是积分,积分依赖测度

先把论文的核心形式化讲清楚,其实非常简单。

一个基准 \(B\) 有 \(n\) 道题,每道题 \(x_i\) 有个难度 \(z_i \in [0,1]\)。模型 \(\theta\) 在难度 \(z\) 上的条件表现是 \(s_\theta(z)\)(比如 pass@1)。基准分数就是大家熟悉的平均:

\[S_B(\theta) = \frac{1}{n}\sum_{i=1}^{n} s_\theta(z_i)\]

关键一步来了:这个平均恰好等于对某个测度的积分。定义基准诱导的经验测度

\[\nu_B = \frac{1}{n}\sum_{i=1}^{n} \delta_{z_i}\]

其中 \(\delta_z\) 是难度 \(z\) 处的单位点质量。于是 \(S_B(\theta) = \int s_\theta(z) \, d\nu_B(z)\)。

看着像符号游戏?不是。这一步把"题目集合"变成了"难度轴上的质量分布",榜单比较就被拆成两个独立对象的耦合:模型决定的 \(\Delta(z) = s_{\theta'}(z) - s_\theta(z)\),和基准决定的 \(\nu_B\)。两个模型在基准上的分差 \(D_B(\theta',\theta) = \int \Delta(z) \, d\nu_B(z)\)——同一个 \(\Delta\),换一个 \(\nu_B\),结论可以完全不同。

论文用一张 teaser 图讲了两个失效案例,我觉得这张图值得印在每个做评测的人脑子里:

图1:两种基准失效案例

图1:两种基准失效模式。上图 (a) Measure Mismatch:模型 A 和 B 在简单题上打平、在难题上拉开差距;基准质量集中在简单区(蓝色直方图),而你在意的分布偏重难题(橙色直方图),结果基准分 72.1 vs 72.4 "无法区分",目标分布下却是 61.8 vs 68.9 "差异明显"。下图 (b) Coverage Gap:模型在某个局部难度区间进步显著(绿色高亮),但基准在那个区间一道题都没有,观测分数只从 64.2 涨到 64.6,真实的训练进步被完全错过。

这两个案例分别对应论文的两个定理。

失效模式一:测度错配(Measure Mismatch)

引入目标分布 \(\mu\)(代表你真正想评估的难度构成),论文定义 DDM(Difficulty Distribution Mismatch)为基准经验测度与目标分布的 1-Wasserstein 距离:

\[\mathrm{DDM}(B;\mu) = W_1(\nu_B, \mu)\]

直觉上就是:要把基准的难度质量搬运成目标分布,平均得搬多远。Theorem 2.1 说,若 \(\Delta\) 是 \(L\)-Lipschitz 的,则

\[|D_B(\theta',\theta) - D_\mu(\theta',\theta)| \leq L \cdot W_1(\nu_B, \mu)\]

也就是说,Wasserstein 距离直接控制了"榜单分差"偏离"真实分差"的幅度。更进一步:只要 \(|D_\mu| > L \cdot W_1\),两边符号一定一致——排名不会翻转。这个界简单,但给了一个可操作的诊断:算出你基准的 DDM,就知道榜单结论在多大程度上可信。

还有一个绕不开的问题:\(\mu\) 到底选什么?如果我有明确的业务场景,\(\mu\) 就该编码那个场景的难度构成。但多数时候没有先验。Theorem 2.2 证明了:在"性能差异出现在难度轴哪个位置完全未知"的 agnostic 设定下,均匀分布是唯一的 maximin 选择——只有它保证最坏情况下保留的平均差异不缩水。所以论文后续实证统一用 Unif[0,1] 当中性参照。这里先埋个伏笔:这个"中性"选择本身也是有立场的,后面细说。

失效模式二:覆盖缺口(Coverage Gaps)

第二个问题更隐蔽。\(\nu_B\) 是离散测度,只在 \(n\) 个难度点上有质量——没有题的区间,质量严格为零。模型在这样的区间里进步再多,基准分数也一动不动。

论文用最大间隙 \(G(B)\) 来刻画:把难度点排序,找相邻两点(含边界)的最大距离。Theorem 2.3 是全文我觉得最漂亮的结果:把"训练有没有进步"形式化成假设检验(\(H_0\) 无进步 vs \(H_1\) 存在宽度 \(w\)、幅度至少 \(a\) 的区间性进步),则:

  • 若进步宽度 \(w \leq G(B)\):无论每道题重复评测多少次,任何水平 \(\alpha\) 的检验功效都只能是 \(\alpha\)——完全检测不到,最坏情况下进步对基准不可见;
  • 若 \(w > G(B)\):重复评测次数趋于无穷时,功效趋于 1。

\(G(B)\) 就是检测能力的精确相变边界。不是近似、不是上界,是 sharp 的。这个定理把"基准的局部分辨率"从一个模糊的抱怨变成了一个有精确刻度的量。


🏗️ 怎么落地:IRT 估难度 + 一条完整的诊断流水线

理论要落地,先得解决一个问题:每道题的 \(z_i\) 从哪来?直接用"多少模型做错了"当难度?论文明确反对这个做法——难度是相对于模型能力的:一道题如果只有顶级模型能做对,和一道题所有模型都做不对,失败率可能一样,但难度完全不同。

所以他们用了心理测量学的老工具 IRT(Item Response Theory),1PL 模型:

\[\Pr(Y_{ij}=1) = \sigma(\theta_j - b_i)\]

模型 \(j\) 有能力 \(\theta_j\),题目 \(i\) 有难度 \(b_i\),答对概率是逻辑斯谛函数。这个框架在 LLM 评测圈已经有不少先例——Rodriguez et al. 2021 就用 IRT 分析过榜单,Easy2Hard-Bench(NeurIPS 2024)用 IRT + Glicko-2 给题目打连续难度标签。这篇论文的增量不在 IRT 本身,而在于把 IRT 产出的难度喂给前面那套测度论诊断。

图2:难度估计与指标计算流水线

图2:完整流水线。第一步:让多个 LLM 在每道题上做 k 次采样,收集响应矩阵(元素是经验成功率);第二步:诊断响应矩阵(模型信息量、题目信息量、模型反转率、题目反转率四项检查);第三步:拟合 1PL IRT 模型并做贝叶斯诊断(\(\hat{R}\)、ESS、发散转移数、LOO 稳定性);第四步:难度归一化到 [0,1] 后计算两个指标——ECDF 与均匀参照围成的面积(Wasserstein 距离),和排序难度点的最大相邻间隙。

几个工程细节值得点赞:

  • 模型选择是分层的:非 agent 基准用了 12 个模型,从 SmolLM2-1.7B 一直到 Qwen3.5-397B-A17B,按 Text Arena 榜单能力排序后分层采样,两端加密。模型能力跨度不够,IRT 的难度轴就立不起来。
  • 每道题最多 32 次 rollout,用模型推荐温度——难度估计有随机性,这是在认真处理。
  • 诊断链条完整:拟合前查响应矩阵的信息量和单调一致性,拟合后查 MCMC 收敛(\(\hat{R}\)、ESS、发散转移),还做了留一稳健性(去掉任何一个模型,题目难度估计基本不变)。BIC 在 25 个基准里的 21 个上支持 1PL 而非 2PL。
  • 25 个基准 × 7 个领域(数学、代码、agent、逻辑、科学、指令跟随、医学),agent 类基准借用了 HAL 平台上 15-66 个闭源模型的评测结果。

说实话,这套流程的严谨程度超过我见过的大多数基准分析论文。难度估计这一步做扎实了,后面的诊断才有意义。


📊 诊断结果:榜单的水分在哪里

直接看主表(Table 1 的关键行,完整表在论文里):

基准 DDM ↓ Max Gap ↓ Top-5 Sum ↓ 题数
MATH-500 0.164 0.058 0.175 500
ScienceQA 0.178 0.045 0.175 4241
IFEval 0.159 0.046 0.189 541
MedQA 0.157 0.042 0.178 1273
HumanEval 0.148 0.165 0.423 164
AMC23 0.089 0.217 0.539 40
AIME24 0.077 0.179 0.502 30
AIME25 0.079 0.158 0.492 30
AIME26 0.085 0.119 0.507 30
SWE-bench-Mini 0.053 0.149 0.469 50
BBH-5 objects 0.099 0.128 0.332 250
CORE-Bench Hard 0.036 0.113 0.363 45

(加粗为论文标注的偏高值:DDM ≥ 0.10、Max Gap ≥ 0.10 或 Top-5 Sum ≥ 0.30)

几个观察,有些是论文自己讲的,有些是我自己的解读:

测度错配比想象中普遍。 25 个基准里 10 个 DDM ≥ 0.10——难度质量平均要搬过整个难度轴 10% 的距离才能变成均匀分布。最扎眼的是 ScienceQA,4241 道题、DDM 高达 0.178。题多不等于分布好,质量照样可以堆在一小块区域。HumanEval 这个老牌代码基准 DDM 0.148 + Max Gap 0.165 双高,164 道题的难度分布既偏又漏。

AIME 系列是覆盖重灾区,而它恰恰是 RLVR 训练监控的标配。 AIME24/25/26 的 top-5 间隙和都在 0.5 附近——把 [0,1] 难度轴切开看,一半的区域能被 5 个洞瓜分。结合 Theorem 2.3:如果你的模型进步恰好落在这 0.5 的洞里,AIME 分数就是不动,你重复评测一万次也没用。DeepSeek-R1、Qwen3 这些 RLVR 训练全都在用 AIME 监控进步,这件事想想还挺讽刺的。

有人会说:30 道题的基准有洞不是必然的吗? 论文专门回应了这个质疑,我觉得回应得不错:即使大间隙是小基准的统计必然,它依然是未覆盖区间,局部进步照样检测不到——问题是真的,不是伪命题。而且覆盖缺口不只是小基准的病:HumanEval(164 题)和 BBH-5 objects(250 题)的 gap 指标同样偏高,说明这不是纯粹的"题太少"问题,而是难度分布的结构性问题。

但也要说句公道话:AIME 只有 30 道题是历史形成的(每届竞赛就那么多题),用 0.10 这种绝对阈值去卡,小基准天然吃亏。论文的 Top-5 Sum 某种程度上是对题数敏感的指标,读表的时候要带着这个意识。作者自己也承认 Max Gap 内在地依赖基准规模,只是论证了"这反映的是真实的覆盖限制而非统计噪音"。

附录里还有个我觉得被低估的实验:分位数匹配校准。既然错配是病,那能不能靠剪枝治?作者设计了一个贪心算法——按目标分布的分位点取难度位置,每个位置挑最接近的未用题目——把 MATH-500 这类基准剪成校准子集,看剪完之后的模型排序是否更接近同域其他基准给出的参考排序。这个方向比 gap filling 更"省",虽然只是附录级的初步验证。


🔧 BenchFill:把诊断变成行动

诊断完了,下一步自然是怎么治。覆盖缺口的暴力解法是找专家出题——贵,而且慢。论文的方案是 BenchFill:用 LLM 改写现有题目,定向生成目标难度的变体。

图4:BenchFill 概览

图4:BenchFill 的改写-标注-更新闭环。左侧 Rewrite:以记忆中难度最接近目标的题目为父题,连同目标难度和邻近难度参照列表一起喂给改写模型,生成一批子题目(图中示例:把骰子乘积题加上"是完全平方数"、"2 的指数超过 3 的指数"等约束来调难度)。右上 Annotate:子题目经过有效性检查、多模型作答收集、在线 IRT 校准,得到标注难度。右下 Update Memory:新的题目-难度对进入记忆,目标难度(红星)附近的题目越攒越多,下一轮检索到的父题和参照就越来越准。

核心机制拆开看:

目标选择:默认填最大间隙,目标难度取间隙中点 \(z^\star = (z_L + z_R)/2\)——单点插入时中点对间隙的削减最大。

改写:用 MiniMax-M2.7 当改写器(温度 1.0),条件是父题 + 目标难度 + 参照列表。参照列表是关键设计:给改写器看 \(z^\star\) 附近上下各几道题及其难度(比如目标是 0.55,就给它看 0.48、0.50、0.60、0.62 的真实题目),让它知道"这个难度长什么样"。最多 8 轮,每轮 4 个父题 × 4 个子题,参照列表最多 16 对。

难度标注:子题不改 IRT 全模型,而是做在线校准——固定原来估好的模型能力 \(\hat\theta_j\),让 12 个模型在新题上各做若干次,只拟合新题的 \(b\):

\[\hat{b}(x) = \arg\max_{b} \sum_{j=1}^{m} \left[ c_j \log \sigma(\hat\theta_j - b) + (K_j - c_j) \log(1 - \sigma(\hat\theta_j - b)) \right]\]

这个设计把新题挂到原基准同一把 IRT 尺子上,省掉整个重拟合。

进化搜索:有效子题(GPT-5.4 当裁判验证答案正确性)的题目-难度对进记忆。哪道子题更接近目标,下一轮就更容易被检索为父题或参照——搜索是自适应的,改写器看到的例子随着搜索推进越来越贴合目标。

效果(Table 2):

基准 Baseline 削减 BenchFill 削减 Oracle 削减 BenchFill Target Dev
AIME24 6.90 35.57 35.57 0.005
AIME25 27.44 37.56 37.56 0.005
AIME26 17.94 33.04 33.04 0.002
AMC23 24.47 35.19 35.78 0.003
Gaokao2023en 11.45 38.88 45.47 0.004
BBH-3 objects 14.83 29.88 32.80 0.006
MMLU-Pro-Biology 22.23 30.13 36.84 0.006
IFEval 14.94 21.09 23.44 0.007
平均 17.52 32.67 35.06 0.005

(削减为 top-3 间隙和的相对降幅 %,越大越好;Target Dev 是选中题目难度与目标的平均绝对偏差,越小越好;Baseline 是预算匹配的均匀父题 best-of-N 改写;Oracle 是每次都精确插在当前最大间隙中点的理想上界)

每个基准只插 3 道题,top-3 间隙和平均压掉 32.67%,对 oracle 35.06% 的追得很紧;AIME 三个年份直接打平 oracle。Target Dev 全线低于 0.01——生成的题目确实落在目标难度上,不是靠量大瞎猫碰死耗子。

最有说服力的实验是 Table 12:光把 gap 指标降下来可能是自嗨,真正的问题是"补完之后,基准能不能检测到以前检测不到的进步"。作者做了个很直接的检验——对 AIME24/25/26 各选一个目标间隙,做轻度 SFT 让模型在那个难度区间有真实进步,然后看三种基准变体能不能用统计检验(分层随机化检验,p < 0.05)把这个进步检出来:

案例(模型) 基准变体 增益 p 值 检出
AIME24(Olmo-3.1-32B-Think) Original +0.104 0.5001 ✗
+ BenchFill +2.419 0.0059 ✓
+ Baseline +0.202 0.4580 ✗
AIME25(Phi-4) Original +1.042 0.1841 ✗
+ BenchFill +3.730 0.0005 ✓
+ Baseline +0.907 0.2142 ✗
AIME26(Llama-3.1-8B) Original +0.208 0.4184 ✗
+ BenchFill +3.427 0.0000 ✓
+ Baseline +0.101 0.4980 ✗

BenchFill 3/3 检出,原始基准和均匀改写 baseline 全军覆没(0/3)。这个实验设计我很喜欢——它证明 BenchFill 不是在优化自己定义的指标,而是真的提升了基准当"进步监视器"的能力。

改写质量的例子(Table 13)也挺有说服力:AMC23 的原题是"对多少个整数 \(n\),\(\sqrt{\frac{\log(n^2)-(\log n)^2}{\log n - 3}}\) 是实数",BenchFill 把分母里的 3 改成 1,难度从 0.535 精确挪到 0.597(目标 0.598);Gaokao 那题把 8×8 棋盘 6 个黑车改成 9×9 棋盘 7 个黑车,难度 0.864 → 0.886(目标 0.885)。改法克制、格式保持、难度可控——不是天马行空地乱造题。

质检流程:GPT-5.4 自动验证 + 人工终审,24 个最终入选题目全部通过人工审核,无替换。作者还基于此发布了社区资源:AMC23-BenchFill(40→80 题)、AIME24/25/26-BenchFill(30→50/52/53 题),全部人工复核。


🔬 我的判断

这篇论文值钱的地方在哪。

第一,Theorem 2.3 那个"最大间隙 = 精确 minmax 检测边界"的结果是真漂亮。把"基准看不见局部进步"从一个模糊的抱怨变成一个有相变结构的数学命题,而且结论是 exact 的不是 bound。做评测研究的人应该把这条定理贴墙上。

第二,它把散落的直觉串成了闭环:测度视角(概念)→ 两个诊断指标(工具)→ 25 基准普查(证据)→ BenchFill(干预)→ 干预有效性的因果验证(Table 12)。多数论文做到第三步就停了,这篇做到了第五步。

第三,工程严谨度在线。IRT 拟合前前后后七道诊断,LOO 稳健性、1PL vs 2PL 的 BIC 比较、后验不确定性分析,附录的实证功夫比很多正文都扎实。难度估计这个最容易被糊弄的环节,他们做的是教科书级的。

但有几个点我持保留意见。

一是均匀目标的立场问题。Theorem 2.2 论证了"无先验时均匀是 maximin 的",数学上没毛病,但现实里几乎不存在真正无先验的评估。你做代码助手,0.9 难度的题可能占你业务的 40%;你筛小学辅导模型,0.2 以下才是主战场。论文的框架完全支持自定义 \(\mu\)(这是它的优点),但主表全部用均匀参照,读者很容易把"偏离均匀"直接当"有问题"——其实错配只相对于你的目标分布才有意义。这一点论文其实写了("Non-uniformity is not inherently problematic when it matches the intended evaluation objective"),但传播过程中大概率会被简化成"DDM 高 = 基准差"。

二是IRT 难度的相对性。难度是相对于那 12 个模型的能力分布估出来的。这套估计在当前模型生态下有效,但模型世代更替之后呢?LOO 稳健性检查的是"去掉一个模型",不是"换一整代模型"。难度轴本身会漂移,这个漂移对 DDM 和 Max Gap 的影响,论文讨论得比较少。

三是改写题的生态位问题。BenchFill 生成的题目来自 LLM 改写,即使人工审核了正确性,它们和"人类竞赛出题"在风格微妙性上有没有系统性差异?模型在这些题上的表现能不能外推到真题上?更现实的一点:这些生成题一旦发布,未来就会进预训练语料(污染),而它们的生成过程依赖现有模型——这里面有个自我指涉的循环,论文没有展开。说实话这块我自己也没想清楚,但总觉得值得警惕。

四是成本。每道子题的在线校准要让 12 个模型各做若干次评测,8 轮 × 16 题 × 12 模型 × 32 rollouts 的评估账单不小。对 AIME 这种 30 题的小基准可行,要给 MATH-500 这种规模做系统性的 gap filling,成本要另算。

和同期工作比,IRT 用于 LLM 评测不是新东西(Rodriguez et al. 2021 的榜单分析、Easy2Hard-Bench 的难度标注都是前置工作),"基准不可靠"的大主题下也有污染、提示敏感、信噪比分析一堆文章。这篇的差异化定位在于:它不研究"分数为什么虚高"(污染那条线),而是研究"分数为什么失真"(分布那条线),并且给了定理级别的刻画。属于把一个大家隐约知道的现象做成了可计算、可修复的工程问题——是扎实的 formalization + tooling 工作,不是底层突破,但这类工作恰恰是领域最缺的。


💡 对工程的启发

如果你在做 RLVR 或后训练,监控基准的选择逻辑值得重做一遍:别只看"题目够不够难"(那是在看均值),要看难度分布的形状。AIME30 题的难度轴一半是洞,用它监控细粒度进步,Theorem 2.3 已经告诉你最坏情况下会漏掉什么。一个务实的做法:把论文开源的 25 个基准难度估计拉下来(GitHub 仓库 data/benchmarks 目录),算一下你监控组合的 gap 指标,或者直接把 AIME-BenchFill 系列加进监控面板。

如果你在设计新基准,交付物里应该带上难度分布图和这两个诊断指标——就像论文说的,基准是难度轴上的测度,那么测度的形状就是基准设计文档的一部分,而不是附赠的统计彩蛋。

还剩一个开放问题:难度轴是一维的,但模型进步是多维的(推理、知识、指令跟随各自进化)。多维 IRT 论文试了,拟合质量不佳(附录 Table 10,mixing 很差)。一维难度是当前工程上稳态的选择,但"进步落在哪个维度"这个问题,一维测度天然回答不了。这可能是"基准作为测度"这个视角下一个值得挖的方向。

论文链接再放一遍:https://arxiv.org/abs/2610.29927 ,代码和 25 个基准的难度标注都在 GitHub(ASTRAL-Group/benchmark-difficulty-measure),补齐版 AIME 在 HuggingFace(Yifan99/BenchFill)。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我