涨分不等于变强:一套逐题审计框架,把 LLM benchmark 增益的来源扒了个底朝天
上周团队里有人在复盘一次 RL 训练,抛出一句很典型的话:"DAPO 训完涨了 14.7 分,模型明显变强了。"我当时差点就点头了——直到刷到这篇新论文,看到同一组实验的另一面:可达上限同时掉了 13.3 分。涨的分数是真的,但"变强"这个词,可能从根上就用错了。
核心摘要
这篇论文干的事,说到底就是给"模型能力提升"这个模糊说法做一次法医式解剖。作者建立了一套逐题审计框架,在固定预算、温度和答案格式下,把每道题分成两类:模型默认部署就能答对的,叫 realized(已实现);给一个固定预算的 probe 能采到正确答案的,叫 reachable(可达)。一个是"实际产出",一个是"能力上限"。然后用三组实验轮番拷问:推理时的层路由实验里,随机路由在全部 43 个干净设置上追平甚至反超结构化搜索,而这部分增益几乎完全依赖"事后看答案"的 oracle 选择——answer-blind 的程序一点都留不下来;MLP 因果干预实验里,沉默一个定位到的 MLP block 能修复 68% 到 92% 的"认得答案却写不对"型失败;最扎心的是 RLVR 实验,deployed 分数涨 1.7 到 14.7 分的同时,可达上限持平甚至下降。我的判断:这不是一篇反对 RL 的论文,而是一篇逼着整个领域把"涨分"这两个字拆开说的测量学论文。做评测、做训练复盘的人都值得细读。
论文信息
- 标题:Reachability Is Not Realization: Tracing the Sources of LLM Benchmark Gains
- 作者:Yanchao Li, Wanhao Liu, Jiaqing Xie, Ben Gao, Yanbo Wang, Tianfan Fu, Yuqiang Li
- 发表:2026 年 8 月 4 日,arXiv: 2608.03219(cs.AI; cs.CL)
- 代码:https://github.com/LiZaiyuan0619/reachability-not-realization
一个被聚合分数掩盖的问题
先说清楚这篇论文戳的痛点在哪。
我们平时看 benchmark 分数,看到的都是聚合值:1000 道题答对 600 道,60 分。训练完变成 650 道,65 分。涨 5 分,开香槟。
但你有没有想过,这多出来的 50 道题,有两种完全不同的来历。第一种,模型真的"开窍"了——以前怎么采样都答不对的题,现在能答对了,能力边界向外推了。第二种,模型只是"手更稳"了——那些题它本来偶尔就能蒙对、或者在 200 次采样里能碰到正确答案,只是默认贪心解码时产不出来,训练把分布削尖了,正确答案从"偶尔出现"变成"稳定出现"。
这两种变化对工程的意义天差地别。前者是新能力,后者是可靠性提升。可靠性提升当然有价值——部署时你要的就是稳定产出——但如果你拿着第二种增益去宣称"模型能力扩展了",那就是在误导后续所有的技术决策。
聚合分数分不清这两者。这就是全部问题的起点。
说实话,这个争论不是今天才有的。去年那篇拿了 NeurIPS 2025 最佳论文亚军的工作(Does Reinforcement Learning Really Incentivize Reasoning Capacity in LLMs Beyond the Base Model,arXiv 2504.13837)就用 pass@k 曲线证明过:RLVR 训出来的模型在小 k 上碾压 base model,但 k 拉到几百之后,base model 全面反超。当时结论是"RLVR 提升的是采样效率,不是推理边界"。
今天这篇论文,是把这条线往下又推了一大步——不只是看 pass@k 曲线交叉,而是建立一套严格的逐题审计协议,把"实现"和"可达"变成两个可以独立追踪的指标,然后一路做到因果干预层面。格局不一样了。
两个核心概念:Realization 与 Reachability
先把定义钉死,不然后面所有讨论都是空中楼阁。
对第 \(i\) 道题,记 \(g_i(a) \in \{0,1\}\) 为答案 \(a\) 在任务评分规则下是否正确。
- Realized(已实现):默认部署程序的输出 \(\hat{y}_i^{\mathrm{dep}}\) 答对了,即 \(d_i = g_i(\hat{y}_i^{\mathrm{dep}}) = 1\)。这就是平时 benchmark 报的分数。
- Reachable(可达):指定 probe 在固定预算 \(K\) 内采出的 \(K\) 个候选里,至少有一个正确,即 \(o_i(K) = \max_{1 \le k \le K} g_i(c_i^{(k)}) = 1\)。
聚合之后就是两个指标:deployed performance \(D = \frac{1}{n}\sum_i d_i\),以及 reachable ceiling \(O_K = \frac{1}{n}\sum_i o_i(K)\)。两者的差 \(O_K - D\) 就是 oracle–deployment gap——模型"能做但做不到"的部分。
这里有几个限定我觉得作者讲得相当克制,值得拎出来:
第一,reachability 是相对于评估协议的量。probe 在预算 \(K\) 内没找到正确答案,只能叫"该协议下未观察到",不能说模型绝对做不到。这跟 2504.13837 用 pass@k 当能力上限代理是同一个逻辑,也都是同一个软肋——但作者主动承认了。
第二,oracle 是诊断工具,不是可部署方案。它生成之后用正确性标签挑答案,现实里你没有标签。所以 oracle 分数高不代表产品能做好,它只代表"上限在这"。
第三,作者还单独定义了一个辅助读出叫 recognition:把题改成多选,看模型在似然排序下能不能把正确选项排第一。注意,recognition 对、direct generation 错的题,就是后面 MLP 干预实验的猎物。
有了这套语言,"训练让模型变强了吗"这个问题就可以拆成两个独立的问题:\(D\) 涨了吗?\(O_K\) 涨了吗?两个答案可以不一样。这就是整篇论文的题眼。
实验一:层路由——结构化搜索被随机路由当场打平
第一组实验问的是一个推理时的问题:如果我们不改权重,只在前向传播时动态选择跑哪些层(layer routing),能不能扩展 reachability?
这个方向最近挺热——把不同层组合当成搜索空间,用 MCTS、爬山、遗传算法去找"最优路径",报告出来的增益看着都挺漂亮。但作者提了一个让我拍大腿的控制实验:随机路由。
道理其实很朴素,来自 NAS 领域的老教训——神经架构搜索早就发现,很多花哨的搜索算法打不过随机采样加充分预算。如果结构化搜索找到的"结构"真有价值,它在同预算下必须赢过随机路由。赢不了,那增益就不是"结构"带来的。
实验设置严格匹配:结构化路径和随机路径共享问题集、评分规则、解码长度、初始完整路径和候选预算 \(K\)。

图1:四个 model–task 组合下,随机路径 oracle(深蓝实线)与结构化搜索 oracle(虚线)的可达率随预算 \(K\) 的变化。所有程序共享同一个 \(K=1\) 起点。注意看 panel a:Llama-3.2-3B 在 ARC-Challenge 上,随机路径 oracle 一路爬到 \(K=200\) 时的 100%,而结构化搜索在 76.7% 就饱和了。粉色的可部署投票线则几乎趴在基线上不动——这个对比后面要考。
结果干净利落:全部 43 个干净 model–task cells 里,随机路由匹配或超过结构化搜索(另有 3 个 format-collapse cells 被排除)。

图2:panel a 把 43 个干净 cells 按"随机减结构化"的 oracle 差值排序,最小 +2.7%(Qwen2.5-14B/BoolQ),最大 +37.6%(Llama-3.2-3B/HellaSwag),43/43 全部大于零。panel b 显示这个优势跨三种路由动作空间(Native 46/46、POLAR 23/23、SKIPONLY 10/10)都成立,对爬山搜索的中位优势 19.4 个点,对遗传算法 4.2 个点。
到这里你可能会想:随机路由 oracle 这么猛,那是不是说明层路由这条路大有可为?
等等。注意图 1 里那条粉色线——那是 answer-blind 的可部署投票,基本没涨。oracle 涨得欢,是因为它在事后用正确答案挑候选。真正的拷问来了:不看答案,这些增益还能留下多少?
作者测了 6 种 answer-blind 选择通道在 \(K=32\) 下对 oracle–greedy gap 的恢复率,定义是 \((\mathrm{selector}-\mathrm{greedy})/(\mathrm{oracle}-\mathrm{greedy})\):
| 选择通道 | gap 恢复率(干净 cell 中位数) |
|---|---|
| Self-verification | +2.2% |
| Genetic search | −1.9% |
| Majority vote | −2.2% |
| Confidence | −8.9% |
| MCTS vote | −23.3% |
| Hill climbing | −23.5% |
6 个里 5 个是负的,唯一为正的自验证也只有 2.2%。

图3:panel a 展示 6 种 answer-blind 通道的 gap 恢复率分布,大部分沉在零线以下,有的甚至比贪心基线还差 80 个点。panel b 更有意思:采样温度越高,oracle 与多数投票的差越大——3B 模型在 DART 上温度从 0.7 升到 1.3,gap 从 23% 拉大到 48% 左右。可达的正确答案变多了,但你越来越认不出它。
这组实验的结论我认为是全文最锋利的一刀:路由实验里报告的那些增益,不是"结构"的胜利,而是"选择"的胜利。候选池里确实有正确答案(reachability 扩展了),但扩展的部分需要事后看答案才能兑现。一旦要求 answer-blind 地挑,增益瞬间蒸发。
而且这不只是层路由的特例。作者在普通采样(不动层)上复现了同样的选择差距:GSM8K 上 Llama-3.1-8B 采 8 次,oracle@8 是 44.7%,多数投票只有 18.7%,26 个点的 gap 摆在那——答案明明采得到,就是挑不出来。
说实话,看到这里我第一反应是:那些年在各种 test-time search 论文里看到的 oracle 曲线,有多少也藏着同样的水分?
实验二:沉默一个 MLP block,修好七成到九成的"会而不答"
第二组实验换了个方向:既然 realized 和 reachable 之间有 gap,那 gap 是怎么产生的?有没有具体的机制?
作者盯上了一类特别拧巴的失败:recognition 对、generation 错。同一道题,改成多选让模型排序,模型能把正确答案排第一;让它自己生成,写出来的却是错的。模型"认得"答案,但"说不出"答案。这种题就是从 reachable 池子掉进 unrealized 的典型。
在 284 个唯一 checkpoint–task cells 的 303 条记录里,作者找到了 35 条满足预定义失败标准的记录(对应 27 个 cells)——失败不是满大街都是,但有界且可复现。

图4:panel a 的散点图横轴是直接生成分数、纵轴是辅助 recognition 分数,偏离对角线 \(y=x\) 的粉色点就是"认得但写不出"的失败记录。panel b 是两个剪枝构造的案例:Llama-3.1-8B 在第 20 层沉默 MLP 后修复率冲到 96.6% 的尖峰,而 Qwen2.5-7B 在第 12、16 层呈现更宽泛的响应——失败可以被因果定位,但不总是集中在单一一层。
然后是最精彩的部分:作者对每个案例定位出一个 MLP block,把它沉默(输出置零),看失败题能不能被修好。而且不是修好了就完事,而是配了一整套对照——同层 attention 沉默、整层沉默、健康题面板的破坏率、反向扰动、块内 unit 级分析。这个实验设计的严谨程度,在 interpretability 领域也算上乘。
核心结果:
| 案例 | 失败集修复率(MLP) | 同层 attention | 整层 | 健康题破坏率 |
|---|---|---|---|---|
| Gemma-31B / LogiQA / L39 | 90.0% | 0.0% | 80.0% | 4.2% |
| Gemma-12B / LogiQA / L29 | 85.9% | 23.6% | 62.3% | 12.0% |
| Gemma-12B-QAT / LogiQA / L29 | 83.1% | 4.2% | 67.0% | 10.7% |
| Qwen2.5-0.5B / PIQA / L10 | 87.5% | 17.5% | 75.0% | 2.9% |
| Llama-3.2-3B / ARC-C / L20 | 67.6% | 33.8% | 78.6% | 1.3% |
| Llama-3.1-8B-pruned / PIQA / L20 | 92.0% | 36.0% | 90.7% | 0.0% |
跨 0.5B 到 31B 的 6 个案例,MLP block 沉默修复 67.6% 到 92.0% 的失败集,同时对原本答对的健康题只造成 0% 到 12% 的破坏。选择性相当好。

图5:panel a 对比三种沉默方式的修复率(粉色圆点 zMLP、空心方块 zAttention、蓝色菱形整层),MLP 沉默几乎总是最优。panel b 把修复率(粉点)和健康破坏率(红框)放在一起看,两者的距离就是"选择性"的证据。panel c 是块内分析:方向性 top-32 个 units 在 4/6 案例中恢复了至少 88% 的整块修复效果,但另外两个案例只有 34% 和 6%——所谓的"稀疏电路"并不普遍。
还有一个我特别喜欢的设计:互反扰动。对同一个 block,沿负方向 \(-\alpha v\) 推是 rescue(修复失败题),沿正方向 \(+\alpha v\) 推是 induction(在健康题上诱发同样的失败)。比如 Gemma-12B-QAT 案例里,\(-8v\) 修复 97.5% 的失败题,\(+4v\) 能搞坏 95% 的健康题。一来一回,因果链条就闭合了——这个方向确实是"认得答案却写不出"这种失败的因果载体,不是相关性的巧合。
不过作者在这里表现得异常克制,克制的程度让我有点意外:他们明确说不支持"通用稀疏电路"的叙事,也不声称存在一个"专门的失败层"。panel c 里那两个只恢复 34% 和 6% 的例外,换别的论文可能就藏到附录里了,他们直接画在主图里。这种态度我认。
实验三:RLVR 到底把分数从哪变出来的
压轴实验回到开头那个问题:RLVR 训练涨的分数,来源是什么?
方法上,作者把 base 和训练后的 checkpoint 按题目 ID 逐题对齐,在匹配的答案格式、温度、预算、评分规则下,追踪每道题的命运:新实现的、丢失的、进入可达集的、退出可达集的。
结果一句话就能概括,但这句话很重:4 个干净匹配 cells 里,训练后新产出的 11 到 68 个答案,全部——是全部——都在 base 模型中已经可达;同时有 6 到 24 个原本能产出的答案被训丢了。

图6:panel a 的横条图里,绿色是新获得(全部来自 base-reachable 池),红色是丢失,净增 = 绿 − 红。注意 DAPO/DART 那条:新增 68 题的同时丢了 24 题。panel b 更直观:粉点是 deployed 变化(+1.7 到 +14.7),空心方块是 oracle 变化——DAPO/DART 的 oracle 掉了 13.3 个点。Deployed 在涨,可达上限在缩。
数字再钉一遍:
| 匹配对 | base D/O | trained D/O | 可达题数变化 |
|---|---|---|---|
| Qwen2.5-32B → DAPO-32B(DART) | 55.0 / 96.0 | 69.7 / 82.7 | −40 |
| Qwen2.5-Math-7B → SimpleRL-Zero(DART) | 68.3 / 94.0 | 80.3 / 93.3 | −2 |
DAPO 那个案例:deployed 涨 14.7 分,reachable ceiling 掉 13.3 分,少了 40 道可达题。而且作者做了预算控制——把 \(K\) 从 200 加到 400,DAPO 的可达性损失一点没收回来(gap 从 10.0 扩大到 10.7 个点)。这不是采样预算不够的伪影,是真的收缩。
那训练后新实现的题有什么特征?看 base 模型对它们的"倾向性":在 base-reachable 但最初未产出的题里,base 采样命中率超过 35% 的那一档,训练后有 85.2% 到 92.3% 被实现了;低命中率档的实现率整体低得多。

图7:横轴是 base 模型的采样命中率分箱,纵轴是训练后的实现率。右上方高亮区(命中率大于 35%)里三个系统的实现率都冲到 85% 以上,而左侧低命中率区基本趴地。RLVR 干的活,就是把 base 已经频繁采到的答案"焊死"成默认输出。
这个图景跟 2504.13837 的 pass@k 结论完全咬合,但说得更细:RLVR 不是"学会新东西",而是把已有的高概率正确路径的概率质量进一步集中。增益是对既有可达池的重新加权。
有两个补充实验值得知道。一是训练配方控制:OLMo 谱系上,数学专用 RLVR 把 deployed 从 12.7% 拉到 25.3% 但 oracle 从 74.0% 掉到 60.7%;而含 SFT 的两个变体(thinking-SFT 62.0%/82.0%,full-instruct 67.3%/85.3%)则连可达上限一起抬升了。所以"上限收缩"是 RLVR 这条配方的特征,不是所有训练方式的宿命——蒸馏/SFT 引入了外部信息,是真能扩边界的,这点也跟 2504.13837 的蒸馏实验呼应。二是提示格式控制:共享 base 提示能保留 41.4% 到 50.0% 的原生格式增益,说明格式对齐解释了一部分涨分,但远不是全部。
我的判断
这篇论文的价值,我认为不在某个单点发现,而在于它把"能力"这个词从黑话变回了可测量对象。
三个实验各自成立,但串起来的逻辑更硬:推理时,路由增益依赖事后选择(选择问题);机制上,一类"会而不答"的失败可以因果定位到单个 MLP block(产出通道可以被局部修复);训练时,RLVR 的涨分全部来自既有可达池的重新加权(没有新增可达答案)。三个视角指向同一件事——realization 和 reachability 是两个可以脱钩的轴,而过去我们只在其中一个轴上读数。
它跟 2504.13837 的关系值得说两句。那篇用 pass@k 曲线交叉给出了"RLVR 不扩边界"的宏观证据;这篇把分析粒度压到逐题,还往前走了两步——一是把"选择"从"生成"里剥离出来(路由实验的 answer-blind 对照),二是把失败定位到了具体组件(MLP 干预)。可以说 2504.13837 回答了"是不是",这篇在回答"在哪里、为什么"。
但批判性的地方也得说。
第一,reachability 终究是个协议相对量。\(K=200\) 的 probe 找不到的答案,\(K=20000\) 也许找得到。论文用 \(K=400\) 做了控制,确实缓解了疑虑,但"可达上限"这个名字本身就比它实际测到的东西要大——它测的是"该 probe 该预算下的可达",不是模型的终极边界。作者自己承认了,但读者很容易忘掉这层限定。
第二,MLP 干预那部分,6 个案例的样本量其实不大,而且失败集是"预定义标准"筛出来的 35/303——也就是说结论只覆盖这一类特定失败,不能外推成"realization gap 都能靠沉默一个 block 修好"。panel c 里那两个 top-32 只恢复 34% 和 6% 的例外,也在提醒机制的异质性。
第三,三个实验之间没有统一机制——这是作者自己声明的局限,我觉得这个坦诚反而加分。它们共享的是测量框架,不是机理。如果有人引用这篇论文说"研究证明了所有 benchmark 增益都是虚假的",那就是典型的过度引申。改善 realization 是实打实的工程价值,部署场景要的就是稳定产出;论文反对的只是把它包装成"能力扩展"。
对工程的启发很直接:如果你在做 RL 训练复盘,除了报 pass@1 的提升,顺手测一下匹配预算下的 oracle/pass@k 变化。deployed 涨、reachable 平或降,那你在做可靠性工程,很好,但别写成"能力提升";deployed 和 reachable 同涨,那才是真的边界外推。这个审计成本不高,一份采样日志的事。
还有一个更刺的想法没解决:如果 RLVR 天然只能在可达池内重新加权,那想真的扩边界,是不是只有引入新信息这一条路——蒸馏、工具、检索、课程?这篇论文的 Table 7 里 SFT 变体抬升了 oracle,算是一点微弱的旁证。但更本质的问题还开着:有没有不引入外部信息的训练方式能推高 reachable ceiling?我目前没看到让人信服的答案。
收尾
一句话收束:这篇论文给所有看 benchmark 分数的人递了一把手术刀——涨分的时候先问一句,是 reachability 涨了,还是只是 realization 涨了。两个答案,是两种完全不同的人生。
实践建议清单: - 训练复盘时同时报告 deployed performance 和匹配预算下的 reachability(pass@k/oracle),两者拆开解读 - 评估 test-time search 方法时,随机基线和 answer-blind 对照必须安排上,oracle 曲线单独标注"诊断用途" - 遇到"模型认得答案但生成不对"的失败,可以考虑定位 MLP block 做定向干预,但别指望通用的单层修复
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我