← 返回 PaperDaily 视觉与图像

浙大最新:零差距≠真恢复!SA-PPG揭示基准污染修复被严重高估

评测行业深水炸弹:"零差距"可能根本不是修复成功,而是正负误差抵消的假象!浙大新作直指现有污染缓解指标G-AP的两大致命缺陷,并给出SA-PPG评估指标与RailCap缓解策略。多模型多基准验证下,旧方法的"完美修复"排名被彻底翻盘。做评测、做数据清洗的,这篇不能错过。

浙大最新:零差距≠真恢复!SA-PPG揭示基准污染修复被严重高估

paperdaily_reaction_gif


原论文信息如下:
论文标题:
Zero Gap Is Not Restoration: Stratified Per-Question Probability Evaluation and Step-wise Mitigation of Benchmark Contamination
发表日期:
2026年08月 发表单位:
浙江大学 原文链接:
https://arxiv.org/pdf/2608.07341v1.pdf

零差距≠真恢复:基准污染评估的致命误区

想象一个场景:大模型预训练语料里混进了公开评测集的测试题。模型把这些题的答案“背”了下来,评测分数狂飙,但真实能力并未提升。这就是基准污染(benchmark contamination)——大模型评测领域最头疼的问题之一。
为解决此问题,有一类“污染缓解策略”专门在解码阶段干预模型的生成过程,把被记住的答案“压”下去,期望恢复模型的真实水平。但问题来了——怎么判断一个缓解策略有没有真的把模型恢复好?
之前的评测指标叫G-AP(Gap of Aggregate Performance,聚合性能差距):先给每道题一个“对/错”的分数,然后求整个数据集上的平均值,再和干净模型的平均值做差。差越小,说明恢复得越好。这个指标看上去很合理,直到你看到这篇论文的标题——《Zero Gap Is Not Restoration》(零差距不是恢复)。
来自浙江大学的团队在这篇论文里直接拆穿了G-AP的老底:G-AP读数为零,完全不能证明每一个题目都被恢复好了。恰恰相反,“零差距”可能只是正负误差互相抵消之后呈现出来的假象。这篇论文提出了两个核心贡献:一个更严谨的评测指标SA-PPG,以及一个全新的缓解策略RailCap。下面龙哥带大家一层层拆开看。

现有指标G-AP的两大缺陷:离散读数与抵消陷阱

要搞懂这篇论文的贡献,得先看G-AP怎么算。设评测数据集为D,包含N道题;干净模型为M_cl,被污染的模型为M_co。某个缓解策略s在被污染的模型上做干预,得到的模型记为M_co^s。G-AP的做法是:给每道题打一个0/1分数,然后两边求平均,再取差的绝对值。
公式:离散0/1读数定义
公式(1)是G-AP使用的每道题读数:从模型M中采样一个回答o,如果o能解出这道题就记1分,否则记0分。这就是一个离散的0/1读数。
公式:G-AP定义
公式(2)就是G-AP的核心:先对全部题目取平均,再对两个模型的平均值做差,最后取绝对值。数值越小,说明缓解策略让被污染模型的整体表现越接近干净模型。
表面上看没什么问题,但论文指出了两个致命缺陷。
缺陷一:离散读数极不稳定。同一个模型、同一道题,在不同采样下可能一次答对、一次答错。0/1读数是随机的,单次采样完全不能代表这道题的真实水平。论文做了一个直观的对比实验(下图):用完全相同的干净模型,独立采样两批数据,如果用离散0/1读数,两批数据在每道题上的平均差距高达0.190;但如果用“解题概率”作为读数——即采样50次看正确比例——两批数据的平均差距骤降到0.041。同一道题,采样一次是掷骰子,采样50次才能看出真实水平。
图2:同一干净模型两次独立采样的逐题读数对比
图2:同一干净模型(Llama-2,GSM8K域)两次独立采样的逐题读数对比。左图是离散0/1读数(每批仅采1个样本,添加了微小垂直抖动避免重叠),右图是每批用50个样本估计的解题概率。可见概率读数远比离散读数稳定。
缺陷二:先平均后差,正负误差互相抵消。这是G-AP更隐蔽的陷阱。G-AP先对全部题目求平均,再对两个平均值的差取绝对值。数学上可以证明,这等价于把“被压过头”的损失和“没压够”的残留先互相抵消,再取余数。举例来说:假设有100道题,其中50道被缓解策略过度抑制(每道题的解概率被压低了0.1),另外50道抑制不足(每道题的解概率还比干净模型高0.1)。从G-AP看,平均差距为零——完美恢复!但实际上一道题都没恢复好,一半被压坏,一半没动。这个“零差距”完全是个数学幻影。
更麻烦的是,G-AP用了0/1离散读数之后,还叠加了一层采样噪声。你可能测一次G-AP是0.02,换一换随机种子重新测就变成0.05。这种指标做出来的“最优策略”,到底是真的最优,还是只是那一次采样运气好?

SA-PPG:分层逐题概率差距评估新指标

针对上述两个缺陷,论文一步一步构建了新的指标SA-PPG(Stratified Aggregate of Per-question Probability Gaps,分层逐题概率差距聚合)。
第一步:用解题概率替代0/1离散读数。定义每道题的解题概率为“采样出的回答能解出这道题的概率”,即0/1读数的期望值。实际操作中,对每道题独立采样m个回答,用其中回答正确的比例来估计解题概率。公式如下:
公式:解题概率定义
公式(3)将解题概率定义为0/1读数的数学期望。这个读数比单次0/1稳定得多,因为采样多次取平均后,随机性被抹平了。
第二步:逐题做差,先取绝对值再平均。定义每道题的“逐题概率差距”(PPG,Per-question Probability Gap)为缓解后模型与干净模型在解概率上的差值,然后对所有题目的绝对值取平均,得到A-PPG(Aggregate of Per-question Probability Gaps,逐题概率差距聚合):
公式:逐题概率差距定义
公式(4)计算每道题上缓解后模型与干净模型的解题概率之差。
公式:A-PPG定义
公式(5)为A-PPG的定义:先对每道题的差距取绝对值,再在全部N道题上取平均。这个指标有一个非常好的性质:A-PPG=0当且仅当每道题的解题概率都与干净模型完全一致。
但A-PPG还有一个隐患——等权平均给了“作弊策略”可乘之机。当干净模型本身不太强时,大多数题目的解题概率是0。比如Gemma-4-E2B在GSM8K上连四分之一的问题都解不出来。这种情况下,一个“躺平”策略——让被污染模型在所有题目上全部答错——在这些解题概率为0的题目上完美匹配,分差为零。而在少数解题概率较高的题上,哪怕差距巨大,也会被绝大多数零概率题目稀释。换句话说,只要把模型压到“全不会”,A-PPG也能得到很低的分数。
第三步:分层聚合,堵死捷径。为了禁止这种“往高频值上凑”的作弊行为,SA-PPG引入分组机制:先把[0,1]区间等分成B个区间,按干净模型的解题概率把题目分到对应的组;然后在每一组内先平均逐题差距的绝对值,再跨组取平均。这样,解题概率为0的题目虽然数量很多,但它们只能算一组,权重只是1/B,不再淹没其他组的信息。公式如下:
公式:SA-PPG定义
公式(13)为SA-PPG的定义:按干净模型解题概率将题目分组后,组内先平均、组间再平均。这一“分层”操作要求缓解策略在干净模型的每一个能力层级上都要完成恢复,任何一个频段上的失败都无法靠其他频段的大数量来掩盖。
SA-PPG同样继承了A-PPG的良好性质:只有当所有题目的解题概率都与干净模型一致时,SA-PPG才是零。这意味着一个策略必须逐题地把该压的压到位、该留的留下来,任何一处偏差都会如实反映在指标里。

RailCap:生成时逐步监督的污染缓解策略

有了更靠谱的标尺,论文开始审视现有的缓解策略。之前的方法(TED、LNE-blocking、Shortcut neuron patching)都有一个共同套路:先估计污染在哪里,再动手干预。比如TED先筛出“疑似背答案”的样本,LNE-blocking先按熵判断题目被污染的程度,Shortcut patching先定位编码污染的神经元。但是,这类方法的效果完全取决于估计的准确性——估错了,该压的没压掉,不该压的反而被误伤。
于是论文转向观察被污染模型自身的生成行为。下图展示了Llama-2在GSM8K上的实验结果——左边两列是“泄露题”(测试集混入训练数据的题),右边两列是“未泄露题”。上排画的是采样回答与贪心轨迹(greedy trajectory,即模型解码时每一步都取最大概率token所走出的路径)的ROUGE-L重叠度,下排是干净模型下一步token在被污染模型中的排名。
图1(a):泄露题上采样与贪心轨迹的重叠度
图1(a):泄露题上,被污染模型的采样回答与自身贪心轨迹的重叠度(ROUGE-L)。浅色点为单次采样,深色点为每道题的平均值。
图1(b):泄露题上干净模型token的排名
图1(b):泄露题上,在污染模型teacher-forced到干净模型贪心前缀后,干净模型下一个token在污染模型中的排名(仅统计两模型分歧的解码步,前10步)。
图1(c):未泄露题上采样与贪心轨迹的重叠度
图1(c):未泄露题上,采样回答与贪心轨迹的重叠度明显更低,说明未泄露题的生成路径更加分散。
图1(d):未泄露题上干净模型token的排名
图1(d):未泄露题上,干净模型的token在污染模型中排名相对靠后。两相对比可以清楚看到:泄露题的回答坍缩在贪心轨迹附近,未泄露题则散布在更宽的路径上。
这两个观察很有意思。第一,采样是否回落到贪心轨迹,本身就是“记忆”的在线信号——泄露题上,被污染模型采来采去都跳不出自己背下来的那条路径;未泄露题上,采样路径天然分散。第二,在两模型分歧的解码步上,干净模型选的token,大约有一半概率是被污染模型的第二名候选。也就是说,把轨迹token压到第二名,干净模型的偏好大概率就能浮出水面。基于这两点,论文提出了RailCap(本论文将其命名为“轨道封顶”策略):在生成的每一步,判断当前样本是否回落到贪心轨迹上;一旦回落,就把下一个轨迹token的概率封顶到第二名候选的水平。
RailCap的预处理很简单:对每道题额外做一次贪心解码,得到完整的贪心轨迹g,然后把轨迹上所有长度为n的连续窗口建成一个索引H,记录“窗口→下一个轨迹token”的映射关系:
公式:n-gram索引定义
公式(14)定义了n-gram索引H:任意长度n的连续子串映射到贪心轨迹上的后继token。这是RailCap全部预处理的内容,没有训练,没有额外的模型。
解码时,每生成一个token就检查:当前最后n个token是否落在索引H中。如果是,说明这个样本正在重新滑回贪心轨迹,那就找到索引对应的下一个轨迹token x,把它的logit压到当前step的第二大logit水平——让它和“第二名”平起平坐:
公式:RailCap的封顶操作
公式(15)为RailCap的封顶操作:将贪心轨迹token x的logit值设为当前step第二大logit值。这让模型大概率选择轨迹之外的token,从而暂时脱离轨迹。
如果当前最后n个token不在索引H中,则不做任何干预,正常采样。关键是,这个操作在生成的每一步重复进行:每次回落就封顶一次,抑制逐步累积,直到生成的响应分布足够分散。每道题受到的干预强度完全由生成过程实时决定,而不是像以前那样靠“事前估计”一刀切。整个过程用伪代码可以表示为:
    算法1:RailCap解码(单道题q)
    输入:M_co(被污染模型)、题目q、n-gram阈值n、采样数m、温度τ
    输出:m个响应
    
    1. g = 贪心解码(M_co, q)                  // 得到贪心轨迹
    2. H = {(g_k..g_{k+n-1}) → g_{k+n}}      // 建立n-gram索引
    3. for j = 1..m:                         // 采样m个响应
    4.     o = []; t = 1
    5.     repeat:
    6.         ℓ = 模型在(q, o)上的logits
    7.         if t > n 且 (o_{t-n}..o_{t-1}) ∈ H:
    8.             x = H[(o_{t-n}..o_{t-1})]   // 轨迹上的后继token
    9.             ℓ[x] = min(ℓ[x], v^{(2)})   // 封顶到第二名
    10.        o_t ~ Softmax(ℓ/τ)              // 采样下一个token
    11.        o = o + o_t; t = t + 1
    12.    until o_t == 结束符
    13.    o^{(j)} = o
    14. return {o^{(1)}, ..., o^{(m)}}
    这个设计的妙处在于:无需事先判断哪些题目被污染、哪些神经元有问题,一切判断都在生成过程中自然而然地进行。样本滑回轨迹就压一下,滑不回去就说明这里没有记忆需要压制——干预的时机和强度完全由数据说了算。

    实验验证:排名反转与全面最优

    实验设计上,论文考虑了三种不同架构的开源模型:Llama-2-7B、Gemma-4-E2B、Pythia-12B,并在两个污染域上验证:GSM8K(小学奥数应用题)和PQ(GSM8K的改写版,仅改写题干文字、保持数字与答案不变,构成更难的污染形式)。污染模型的构造方式是:先在训练集上微调得到干净模型,再混入660道测试集题目继续微调得到被污染模型。这一设置保证了对“泄漏”的完全观测——哪些题泄露了、哪些没有,实验者心里一清二楚。
    实验设置概览
    实验设置概览:涉及模型家族、污染域、泄露题/未泄露题划分、各缓解策略的超参数配置等。
    先看最核心的结果(下表)。这是Llama-2模型、GSM8K污染域上,同一批发响应分别用G-AP和SA-PPG计算得到的读数:
    表1和表2:G-AP与SA-PPG读数对比及分解分析
    表1:同一批响应在G-AP和SA-PPG下的读数对比(Llama-2,GSM8K污染域)。加粗为该列最优。表2:SA-PPG的分解分析——Δ⁺为欠抑制分量(残余污染),Δ⁻为过抑制分量(附带损伤),A-PPG=Δ⁺+Δ⁻,G-APP=|Δ⁺−Δ⁻|。All-Zero为让模型全部答错的合成策略。
    排名反转出现了。在G-AP下,LNE-blocking的读数是0.0235,接近“完美恢复”,是表中最优策略;但在SA-PPG下,LNE-blocking的成绩是0.2932,只比完全不干预的Identity(0.3261)好一点点,直接跌到倒数第二。而RailCap在G-AP下只有0.0728,排第二,在SA-PPG下则是0.1914,跃升为第一。同一批响应、同一个模型、同一种策略,仅仅换了一个度量标准,结论就彻底翻转。
    通过表2的分解,可以清楚看到G-AP把问题藏在了哪里。LNE-blocking的过抑制分量Δ⁻为0.0836,是RailCap(0.0420)的2倍,但在G-APP读数下,LNE-blocking反而以0.0207比RailCap的0.0794“好”了3.8倍——因为多出来的附带损伤和残余污染相互抵消了,抵消后的净读数反而更小。这就是G-AP“假完美”的来源。
    表2还展示了“All-Zero”这个合成策略的威力——它让模型在每道题上解题概率都为0。在A-PPG下,它的读数0.2190竟然优于Identity(0.3793)、TED(0.3536)和Shortcut(0.2399)——一个什么也不做的“躺平”策略居然能打败三个正儿八经的缓解方法!但在SA-PPG的分层聚合下,All-Zero是全场最差(0.4903)。这表明A-PPG的等权平均确实存在漏洞,而SA-PPG的分层设计成功堵住了它。
    接下来是多模型多基准的全面验证。论文在六个设置(两个污染域 × 三个模型)上比较了各个策略的SA-PPG,结果如下:
    表3:六种设置下各策略的SA-PPG对比
    表3:各缓解策略在六种设置(两个污染域 × 三个模型)下的SA-PPG。每列加粗为最优,每组1319道题,以同域干净模型为参照。RailCap在所有六个设置下全部取得最优。
    可以看到,RailCap在全部六个设置下都是最优,说明它不是只在某个模型上碰巧有效,而是具有一定通用性。值得注意的是,在更难的PQ(改写版)污染域上,所有策略的SA-PPG都偏高,说明对抗改写型污染确实更难——毕竟模型不是死记硬背原题,而是把解题模式也“背”下来了。
    论文还专门对RailCap做了消融实验,考察n-gram阈值的影响以及“封顶”与“硬禁”的差别:
    表4:RailCap消融实验
    表4:RailCap在Llama-2 × GSM8K上的消融实验。n行扫掠n-gram阈值;n=4的ban行将封顶改为硬禁(轨迹token概率直接置零,彻底禁止采样),作为抑制强度对照。S-Δₛ⁺与S-Δₛ⁻为分层后的欠抑制/过抑制分量,二者之和等于SA-PPG。
    消融实验说明两个问题:第一,n=4附近效果最好,n太小(比如2)意味着只要采样路径碰巧和贪心轨迹连续两个token相同就被压制,这会把很多正常生成也误伤为“记忆”,所以过抑制分量偏高;n太大则会导致落到n-gram窗口之外就无法触发压制,欠抑制分量上升。第二,“硬禁”(ban)比“封顶”(cap)更粗暴,虽然残余污染确实更少(S-Δₛ⁺更低),但附带损伤显著增大(S-Δₛ⁻翻倍),总分反而更差。这说明RailCap“把轨迹token压到第二”的温和操作是有意为之——不是彻底封死记忆路径,而是让干净模型的偏好有机会浮现出来。
    综合来看,本文的实验设计比较严谨:三个架构、两个污染域、四种对比策略加一个合成对照、消融实验完备。最有力的证据是那个“排名反转”——在G-AP下近乎完美的LNE-blocking在SA-PPG下只比什么都不做稍好,这说明G-AP确实系统性地高估了此前策略的恢复效果,而RAilCap在新指标下全面领先。

    龙迷三问

    下面是龙哥对于大家可能的一些问题的解答:
    这篇论文到底在解决什么问题?现有基准污染缓解评估指标G-AP因离散读数与抵消陷阱而失真。浙大提出SA-PPG分层逐题概率差距指标,揭示既有策略修复效果被系统性高估;并设计RailCap策略,在生成过程中逐步抑制记忆回溯,于多模型多基准上取得最低SA-PPG。
    这篇工作最值得看的点是什么?RailCap在所有六个设置(两个污染域×三个模型)中均取得最低SA-PPG;SA-PPG揭示G-AP对先前策略恢复能力的系统性高估
    这篇工作的边界或风险在哪里?优点:SA-PPG指标设计严谨,解决了G-AP的表示和聚合缺陷;RailCap无需预先估计污染位置,通过逐步监督实现动态干预,实验验证有效。缺点:RailCap需要额外一次贪心解码构建轨迹索引;n-gram阈值需调参;方法仅在数学推理任务上验证,泛化性待检验
    如果你还有哪些想要了解的,欢迎在评论区留言或者讨论~

    龙哥点评

    论文创新性分数:★★★★☆

    提出SA-PPG分层逐题概率差距评估指标,并设计RailCap解码时逐步监督的污染缓解策略,在生成过程中动态抑制记忆化响应。

    实验合理度:★★★★☆

    G-AP(Gap of Aggregate Performance)、SA-PPG(Stratified Aggregate of Per-question Probability Gaps)、A-PPG、G-APP

    学术研究价值:★★★★☆

    提出SA-PPG分层逐题概率差距评估指标,并设计RailCap解码时逐步监督的污染缓解策略,在生成过程中动态抑制记忆化响应;更关键的是问题定义是否可复用到同类任务。

    稳定性:★★★☆☆

    现有材料未提供充分的极端条件、重复运行或扰动测试,稳定性暂按中性评价。

    适应性以及泛化能力:★★★☆☆

    现有材料未完整展示跨数据集、跨场景或分布外实验,泛化能力仍需进一步验证。

    硬件需求及成本:★★★☆☆

    不适用(论文未报告具体FLOPs或推理速度)

    复现难度:★★★☆☆

    现有材料未确认完整代码、配置、数据处理脚本和权重是否齐备,复现难度暂按中性评价。

    产品化成熟度:★★★☆☆

    论文验证以研究实验为主,真实部署中的时延、成本、维护和异常场景仍需补充验证。

    可能的问题:RailCap需要额外一次贪心解码构建轨迹索引;n-gram阈值需调参;方法仅在数学推理任务上验证,泛化性待检验

    主要参考文献

    Cobbe K, Kosaraju V, Bavarian M, et al. Training verifiers to solve math word problems[J]. arXiv preprint arXiv:2110.14168, 2021.
    Dong Y, Jiang H, Hu H, et al. TED: Can a model remember what it should forget?[J]. arXiv preprint arXiv:2410.02765, 2024.
    Hou R, Li Y, et al. LNE-blocking: Length-normalized entropy blocking for benchmark contamination mitigation[J]. 2025.

    *本文仅代表个人理解及观点,不构成任何论文审核或者项目落地推荐意见,具体以相关组织评审结果为准。欢迎就论文内容交流探讨,理性发言哦~ 想了解更多原文细节的小伙伴,可以点击"阅读原文",查看更多原论文细节哦!       

    转发文章 微博 X LinkedIn Facebook
    龙哥读论文 · PaperDaily

    本文基于龙哥读论文 PaperDaily 数据库整理,结合论文原文与工程视角进行解读。

    LONGGE AI COMMUNITY

    把每天读到的论文,变成长期积累

    加入「龙哥读论文」知识星球,持续获取 AI 论文、资讯、开源项目、招聘与研究思路。

    加入龙哥读论文微信群:添加微信 kangjinlonghelper,备注“研究方向 + 地点 + 学校/公司 + 昵称”。

    龙哥读论文知识星球二维码 微信扫码加入知识星球