论文精读

精读:CARM——把响应级掩码的判据从净位移换成双向漂移

只加一个绝对值,把序列级 off-policy 掩码的汇总分数从「带符号对数比的平均」换成「对数比绝对值的平均」,并给出频率—严重度联合预算。本专栏逐项对账后发现:代码侧 headline 里 68% 的增量来自唯一一列,而 checkpoint 正是按那一列挑的;两条方法的阈值网格只在两点重叠,headline 是各自取最好再比;失配由「一个 rollout 批切 128 次更新」的配置造出来,全文没有扫这个旋钮

论文: CARM: Cancellation-Aware Response Masking for LLM Reinforcement Learning
作者: Yafei Zhang, Songshuo Lu, Sicong Liao, Zhi Chen, Yaohua Tang
arXiv: 2610.02039
GRPO off-policy 响应级掩码 重要性比 RLVR 后训练 信任域 cs.LG

1 论文概览

一句话总结:把「整条响应要不要参与这次更新」的判据,从「token 概率比的几何平均离 1 多远」换成「token 对数比绝对值的平均有多大」——只加了一个绝对值,就把一个会被正负抵消的净位移量,换成了一个双向漂移量。

核心问题:工业级 RL 后训练里,采样引擎与训练引擎不同、mini-batch 内策略连更新多次、actor 与 learner 之间有延迟,于是被优化的 πθ\pi_\theta 与真正采样出这条响应的 πrollout\pi_{\text{rollout}} 早就不是同一个分布。PPO/GRPO 的 token 级裁剪只改变「单个 token 怎么贡献梯度」,并不回答「整条响应该不该参与」。序列级掩码回答后者:先给每条响应算一个汇总失配分数,再按阈值决定留或丢。真正的分歧在这个汇总分数怎么算。主流做法(DeepSeek-V3.2 的 off-policy sequence mask,本文称 GeoMean)取长度归一化几何平均,等价于把带符号的 token 对数比先平均再取绝对值。本文指出这一步会抵消:

“Its signed log-ratios can cancel across positions, concealing substantial bidirectional policy drift.” —— 摘要

一个 token 比是 10、下一个是 0.1,几何平均恰好是 1,而每个位置的实际概率都变了一个数量级。

主要贡献:

  1. 把「抵消」写成命题(Proposition 1):对任意 B>1B>1 与 1<c<B1<c<B,存在一条偶数长响应,其中每一个 token 比都在带 [1/c,c][1/c,c] 之外,而 sGeoMean=1s_{\text{GeoMean}}=1。构造就是让比值在 BB 与 1/B1/B 之间交替。这不否定轨迹似然比 ∏trt\prod_t r_t 本身的正确性,否定的是「拿带符号聚合量做阈值」这件事。
  2. CARM 统计量:dCARM=1T∑t∣log⁡rt∣d_{\text{CARM}}=\frac1T\sum_t|\log r_t|,先取绝对值再平均,等价于每个 token 贡献 max⁡(rt,rt−1)\max(r_t,r_t^{-1}),上下对称、不可抵消。
  3. Proposition 2 的接受集包含关系:由三角不等式,sCARM≥sGeoMeans_{\text{CARM}}\ge s_{\text{GeoMean}} 恒成立,故同阈值下 CARM 接受集是 GeoMean 接受集的子集——同阈值下 CARM 只会更严。
  4. Proposition 3 的频率—严重度联合预算:若 sCARM≤τs_{\text{CARM}}\le\tau,则 p−b−+p+b++poutδˉout≤log⁡τp_-b_-+p_+b_++p_{\text{out}}\bar\delta_{\text{out}}\le\log\tau,把「阈值」翻译成「有多少比例的 token 越界、越得多远」。
  5. 两个任务的实测:Qwen3.5-4B / 9B 上数学(DAPO Math 训练,AIME 2024/2025/2026 + BeyondAIME),Qwen3.5-9B 上代码(TACO 训练,TACO test / LiveCodeBench-v6 / HumanEval+ / MBPP+ 评测),对 Null、IcePop、TRM、GeoMean 四条基线。

2 方法详解

掩码挂在代理损失之外

设 ri,t(θ)=πθ(yi,t∣x,yi,<t)/πrollout(yi,t∣x,yi,<t)r_{i,t}(\theta)=\pi_\theta(y_{i,t}\mid x,y_{i,<t})/\pi_{\text{rollout}}(y_{i,t}\mid x,y_{i,<t})。token 级代理损失仍是标准的不对称 PPO/GRPO:

ℓi,t(θ)=min⁡(ri,tA^i, clip⁡(ri,t,1−ϵlow,1+ϵhigh)A^i)\ell_{i,t}(\theta)=\min\big(r_{i,t}\hat A_i,\ \operatorname{clip}(r_{i,t},1-\epsilon_{\text{low}},1+\epsilon_{\text{high}})\hat A_i\big)

响应级掩码 Mi∈{0,1}M_i\in\{0,1\} 把它整体门控掉,损失按保留下来的 token 数归一化:

Lmasked(θ)=−∑iMi∑t=1Tiℓi,t(θ)∑iMiTi\mathcal L_{\text{masked}}(\theta)=-\frac{\sum_i M_i\sum_{t=1}^{T_i}\ell_{i,t}(\theta)}{\sum_i M_i T_i}

关键在于 MiM_i 是 stopgrad 的二值门:被拒的响应在这一步里不产生任何策略梯度,但采样它已经花掉的算力不会退回来。掩码与 token 级前向共用同一次当前策略的前向传播,阈值比较在优化器更新之前完成。

一行之差换了什么量

GeoMean:

dGeoMean=∣1T∑tlog⁡rt∣,sGeoMean=exp⁡(dGeoMean)d_{\text{GeoMean}}=\Big|\frac1T\sum_t\log r_t\Big|,\qquad s_{\text{GeoMean}}=\exp(d_{\text{GeoMean}})

CARM:

dCARM=1T∑t∣log⁡rt∣,sCARM=exp⁡(dCARM)d_{\text{CARM}}=\frac1T\sum_t\big|\log r_t\big|,\qquad s_{\text{CARM}}=\exp(d_{\text{CARM}})

两者测的不是同一件事:前者是平均位移的模,后者是位移模的平均。对 reciprocal 变化(rr 与 1/r1/r)两者都对称,区别只在符号相反的漂移是否相消。论文给的实测例子(附录 C,一条 8,619 token 的真实响应):dGeoMean=0.002502d_{\text{GeoMean}}=0.002502,dCARM=0.024486d_{\text{CARM}}=0.024486,相差 9.79 倍:

“signed aggregation cancels 89.78% of the absolute log-ratio mass.” —— 附录 C

最大单 token 只占绝对对数比质量的 0.43%,说明这不是一两个极端 token 撑起来的,而是整条响应上的双向漂移。在 1,024 条未过滤响应上重放(τGeoMean=1.005\tau_{\text{GeoMean}}=1.005、τCARM=1.02\tau_{\text{CARM}}=1.02):两者都接受 160 条、都拒绝 668 条、GeoMean 单独接受 195 条、CARM 单独接受 1 条。19% 的响应被 GeoMean 放行、被 CARM 拦下——这个比例不小。

阈值到底保证了什么:代入 τ=1.02\tau=1.02 实算

Proposition 3 的证明不复杂:把 ∑t∣log⁡rt∣\sum_t|\log r_t| 按越界与未越界拆开,越界项写成 b−+log⁡(ℓ/rt)b_-+\log(\ell/r_t) 或 b++log⁡(rt/u)b_++\log(r_t/u),丢掉非负的带内贡献,就得到 p−b−+p+b++poutδˉout≤log⁡τp_-b_-+p_+b_++p_{\text{out}}\bar\delta_{\text{out}}\le\log\tau。取 bmin⁡=min⁡(b−,b+)b_{\min}=\min(b_-,b_+) 后即 pout≤log⁡τ/bmin⁡p_{\text{out}}\le\log\tau/b_{\min}。

这一步的实质是马尔可夫不等式:E∣log⁡r∣≤log⁡τ\mathbb E|\log r|\le\log\tau 蕴含 Pr⁡(∣log⁡r∣≥b)≤log⁡τ/b\Pr(|\log r|\ge b)\le\log\tau/b,δˉout\bar\delta_{\text{out}} 那一项只是把超出边界的余量保留下来(证明的 Step 9 也给出丢掉它的纯频率版本)。推导是初等的,价值在于把阈值翻译成 token 级语言。

把论文自己的 operating point 代进去,看这个保证有多宽:

设定log⁡τ\log\tau带 [0.8,1.28][0.8,1.28] 的 poutp_{\text{out}} 上界c=1.1c=1.1 时的 pcp_c 上界c=1.05c=1.05 时的 pcp_c 上界
τ=1.02\tau=1.02(4B 用档)0.01988.88%20.8%40.6%
τ=1.025\tau=1.025(9B 最优档)0.024711.07%25.9%50.6%
τ=1.04\tau=1.04(最松档)0.039217.58%41.1%80.4%

在跑出最好数字的那一档,CARM 保证的是「最多 11% 的 token 落在 PPO 裁剪带之外、最多 26% 的 token 概率变化超过 10%」。而 PPO 裁剪本身已经让带外 token 的梯度归零——这个保证约束的那批 token,恰恰是被裁剪机制静默处理的那批。论文自己留了一句很诚实的话:

“This is a deterministic bound on the sampled-token ratios, not on the full conditional-policy KL divergence.” —— §3.4

所以「理论保证」这四个字的分量要打折:它给的是频率上界,不是更新幅度上界,且按马尔可夫不等式的性质,只在最坏情况下才紧。

与基线的区别

方法作用层判据阈值语义
PPO/GRPO 裁剪tokenrtr_t clip 到 [0.8,1.28][0.8,1.28]单 token 贡献封顶,不决定整条去留
IcePoptokentoken 比区间 [0.5,5.0][0.5,5.0]逐 token 过滤,比 PPO 带宽得多
TRM序列(最坏位置)max⁡t12(log⁡rt)2>0.05\max_t\frac12(\log r_t)^2>0.05 即拒长程信任域,看单点最坏值
GeoMean序列(聚合)$\big\frac1T\sum_t\log r_t\big
CARM序列(聚合)$\frac1T\sum_t\log r_t

CARM 与 TRM 的分野值得记:TRM 只看最坏的一个 token(取 max⁡\max),CARM 看平均;前者对单 token 尖峰敏感、对普遍小漂移迟钝,后者反过来。

3 实验结果

主表

数学(mean@16,%):

模型方法AIME24AIME25AIME26BeyondAIME四集平均
4BNull49.3848.3354.7922.2543.69
4BIcePop47.0840.8340.4219.3136.91
4BTRM66.6755.2165.0032.3154.80
4BGeoMean72.5064.3870.6238.8861.59
4BCARM77.0864.3869.7942.5663.45
9BNull76.6766.8867.7145.2564.13
9BIcePop70.4259.5866.6734.9457.90
9BTRM78.3367.0876.4645.8166.92
9BGeoMean80.4266.6775.0047.0667.29
9BCARM82.0871.0479.3849.1970.42

摘要里的「up to 3.13」出自 9B 四集平均(70.42 − 67.29),4B 只有 +1.86。三年 AIME 平均上,4B 是 69.17 → 70.42(+1.25),9B 是 74.03 → 77.50(+3.47)。

代码(Qwen3.5-9B,pass@1,%):

方法TACO(1000)LCB-v6(1054)HumanEval+(164)MBPP+(378)平均
Null34.5038.4685.5775.2258.44
IcePop45.8743.3692.6879.8165.43
TRM36.6044.9787.8076.7261.52
GeoMean46.0344.5092.2878.3165.28
CARM46.7051.2094.1181.2268.31

逐列重算:headline 由一列撑住

摘要写「average pass@1 across four code benchmarks by 2.88 points over the strongest evaluated baseline」,最强基线按宏平均取 IcePop。但逐列取最强基线时,TACO 与 LCB 的最强是 GeoMean,HumanEval+ 与 MBPP+ 的最强是 IcePop,四个差是 +0.67 / +6.70 / +1.43 / +1.41,平均 +2.55,比 2.88 少 0.33。

按两样本比例检验算 z(分母取差值标准误,不是单个方法的标准差):

列题数CARM − 该列最强基线z
TACO1000+0.670.30
LiveCodeBench-v61054+6.703.09
HumanEval+164+1.430.52
MBPP+378+1.410.49

四列里只有一列越过 2,其余三列都不到 0.6。四个差值的和是 10.21,LCB 一列占 6.70,即 66%。而附录 D.3 写明,代码实验的 checkpoint 是按「LiveCodeBench-v6 validation pass@1 最高」挑的——挑模型的指标,正是贡献了 68% 增量的那一列。数学侧同理:迭代按三年 AIME 均值挑,而 AIME 就是数学 headline 的来源。

数学侧的 z 更粗:AIME 每年只有 30 题。若把 16 次采样当独立样本(最宽松口径),9B 四列 z 落在 0.66 / 1.33 / 1.09 / 1.21;若按「题」为独立单位(n=30n=30,最严格口径),单方法标准误就有 7.4pp,差值标准误 10.5pp,全部 z 低于 0.4。真实值在两者之间,取决于聚类内的相关系数。

阈值扫描:best-on-own-grid 与共享阈值

表 4 是全文最该读的一张表(三年 AIME 均值):

模型GeoMean 网格CARM 网格
4B1.0025: 69.03 / 1.005: 69.17 / 1.01: 66.74 / 1.02: 52.57 / 1.03: 52.431.02: 70.42 / 1.025: 69.24 / 1.03: 67.99 / 1.04: 66.81
9B1.0025: 71.67 / 1.005: 74.03 / 1.01: 69.65 / 1.02: 71.67 / 1.03: 69.861.02: 72.99 / 1.025: 77.50 / 1.03: 73.82 / 1.04: 74.17

两条网格只在 1.02、1.03 处重叠。按共享阈值比:9B 在 τ=1.02\tau=1.02 是 72.99 对 71.67(+1.32),在 τ=1.03\tau=1.03 是 73.82 对 69.86(+3.96);headline 的 +3.47 来自 CARM@1.025 对 GeoMean@1.005——两条方法各自在自己网格上取最好,再比最好。这是常见做法,读 headline 时要知道它是 best-on-own-grid。

这张表还给出两个更硬的事实:

  • GeoMean 在 4B 上有悬崖:τ\tau 从 1.005 松到 1.02,成绩从 69.17 掉到 52.57,只比 Null 的 50.83 高 1.74。同一段区间里 CARM 从 70.42 平滑降到 66.81。CARM 的网格极差 3.61,GeoMean 的网格极差 16.74。稳健性而不是最高分,才是 CARM 最实的卖点。
  • 这个悬崖只在 4B 出现:9B 上 GeoMean 松到 1.02 / 1.03 仍有 71.67 / 69.86,没有崩。于是出现一个错位——抵消病态表现得最惨的模型(4B)恰恰是 CARM 余量最小的模型(+1.25),CARM 余量最大的模型(9B,+3.47)却是 GeoMean 根本没崩的模型。

消融与诊断

  • 过滤率(§5.1):4B 上 GeoMean 平均掩码 55.65%、CARM 54.52%;9B 上 52.75%、52.32%。CARM 少过滤 0.43–1.13 个百分点、分数反而更高,于是「赢在过滤更多」被排除。两个数字的口径要分清:3.3 节那次 1,024 条重放里 CARM 拒了 84.3%、GeoMean 拒了 65.3%,差 19 个百分点——那是在未加门控的批次上,漂移本来就大;训练期加了门控之后漂移被压住,两队过滤率才收敛到 1 个百分点以内。
  • 阈值预算差 4 倍:log⁡1.02/log⁡1.005=3.97\log 1.02/\log 1.005=3.97,CARM 的日志预算是 GeoMean 的近 4 倍,两队过滤率却几乎相同。这说明 dCARMd_{\text{CARM}} 的分布在量级上就比 dGeoMeand_{\text{GeoMean}} 大 4 倍左右(图 3 的配对差均值 0.0319 也印证)。CARM 不是「同一把尺子收紧了」,而是换了一把刻度不同的尺子,恰好与「这条响应有没有害」更相关。
  • 优势条件(§5.2):标准掩码 75.63 对「只掩码负优势响应」60.28(9B,三年 AIME),差 15.35。这一条直接对着 DeepSeek-V3.2 只掩码负优势的部署规则。问题是 75.63 不在表 4 的任何一格上(表 4 的 9B CARM 是 72.99 / 77.50 / 73.82 / 74.17),消融的控制臂复现不出任何一个已报告的 operating point。
  • 采样一致性(§5.3):best@16 与 worst@16 上 CARM 比 GeoMean 高 2.74 与 2.78。但 B^k=1−(1−c/16)k\hat B_k=1-(1-c/16)^k、W^k=(c/16)k\hat W_k=(c/16)^k 都是 cc 分布的确定性函数,k=1k=1 时两者都退化为 mean@16;worst@16 是 E[p^16]\mathbb E[\hat p^{16}],几乎只由接近全对的那批题决定。这两条曲线是与 mean@16 同源的再表达,不算独立证据。
  • 基线里有一条塌了:IcePop 在 4B 上三年 AIME 是 42.78,比 Null 的 50.83 低 8.05;9B 上 65.56,比 Null 的 70.42 低 4.86。一条已发表的 off-policy 方法在本设置里净亏,说明这套配置的失配形态相当特殊。

4 个人分析

亮点

  1. 诊断本身比方法更有价值。 Proposition 1 只用两行就说明白了一件工业界一直在含糊处理的事:几何平均掩码的阈值不能解释为「token 级偏离有多大」。这一条与模型、与任务无关,凡是用了带符号聚合掩码的训练栈都该回头查一遍。
  2. 改动成本几乎为零。 不需要额外模型、不需要额外前向(掩码与 token 代理共用同一次前向),只是把 abs() 挪到求和里面。这种「一行换统计量」的设计最容易落地。
  3. 阈值有了解释而不是玄学。 频率—严重度预算把 τ\tau 与「多少比例的 token 越界、越多远」接上,工程上调阈值时终于有一个说得清的刻度。
  4. 稳健性证据是真的。 表 4 里 GeoMean 在 4B 上两个网格点崩到 52 分,CARM 四个点全在 66.81 以上。对要上线跑几百步的系统,网格极差 3.61 对 16.74 比最高分重要得多。
  5. 消融对准了真实的部署规则。 §5.2 直接对 DeepSeek-V3.2 的「只掩码负优势」做对照,还给出 15.35 的差值——正优势的陈旧响应同样要查,这条对工程配置的提示很具体。

局限性

  1. 失配是被配置造出来的,论文没有扫这个旋钮。 表 3 给的是 128 prompts × 8 responses = 1,024 条响应一个迭代,而 PPO mini-batch size = 8——一次 rollout 批要切出 128 个 mini-batch,也就是 128 次优化器更新。在这个配置下,一个批次内部的策略漂移本来就极大,所以任何序列级掩码都能拿到巨大收益(4B 上 Null 50.83 → GeoMean 69.17,+18.3)。全文没有 mini-batch 数量的消融,也没有一个近似 on-policy 的臂。在接近 on-policy 的配置里,掩码一半响应大概率只是白扔数据。
  2. headline 由一列撑住,且那一列就是选模型的那一列。 代码四个基准里三列 z 低于 0.6,LCB-v6 单独 z = 3.09 并贡献 68% 的增量,而 checkpoint 正按 LCB-v6 挑。数学侧同理(按三年 AIME 挑、按 AIME 报)。选择噪声与真实效应叠在同一个数字上,复现时要打折。
  3. 同阈值保证与实测阈值不是一回事。 Proposition 2 的包含关系只在共享阈值下成立,而实验用的是 τGeoMean=1.005\tau_{\text{GeoMean}}=1.005 对 τCARM=1.02\tau_{\text{CARM}}=1.02/1.025——后者的日志预算是前者的 4 倍。所以「CARM 更严」这个由定理支撑的直觉,在实测 operating point 上并不成立(CARM 反而少过滤 0.43–1.13pp)。
  4. 缺一个「同过滤率随机掩码」臂。 §5.1 用 TRM 论证「过滤更多不等于更好」,可 TRM 在统计量与过滤率两个维度上都与 CARM 不同。要分离「挑对了哪些响应」与「扔掉了多少响应」,需要一条按 CARM 的掩码率随机丢弃的对照。没有它,「CARM 的增益来自判据质量」只能算一半论证。
  5. 门控与 GRPO 组基线的交互没有交代。 A^i\hat A_i 在式 (2) 里是预先算好的序列级优势。掩码扔掉约一半响应之后,保留子集的优势不再零和——只要掩码与奖励相关(§5.2 证明它相关,正负优势掩码差 15.35),更新方向就多出一个系统性漂移项。附录 B 只说「按训练实现的损失归一化方式门控」,没说优势是在全组上算还是在保留子集上重算,也没报被掩码响应与保留响应的奖励构成。这是本文最该补却没补的一张表。
  6. 成本侧完全空白。 掩码掉 52–55% 的已生成响应,而生成占 RL 墙钟的大头:每单位有用梯度的成本大约翻倍。实验部分 grep wall-clock、GPU-hour、throughput 零命中。论文用「update redundancy」把它讲成优点(少做更新反而更准),但省下的是更新侧,花掉的是生成侧。
  7. 基线 IcePop 全线劣于 Null,基线集的可靠性存疑。 一条已发表方法在两个模型上分别比「不加任何掩码」低 8.05 与 4.86,要么是本设置失配形态特殊(见第 1 条),要么是复现配置不对。无论哪种,这组基线的绝对水平都不宜外推。
  8. 消融的控制臂复现不出主表。 §5.2 的 75.63 不在表 4 的任意一个 9B CARM 格上(最接近的 74.17 出自 τ=1.04\tau=1.04)。消融与主表不在同一 operating point,对照结论的效力要打折。

对大模型领域的影响

响应级准入这条线,此前被 token 级裁剪的阴影盖住了:大家默认「只要 clip 住,失配就伤不到我」。CARM 把「整条响应是否合格」与「合格响应里每个 token 怎么贡献」彻底切成两层,前者用一个与方向无关的漂移量判定。这条切分成立之后,序列级掩码就不再只是 DeepSeek 那种工程缝合,而是一个有独立统计量、有阈值语义、可单独调的模块。

更实际的影响落在异步与大规模 rollout 的训练栈上。只要采样与训练解耦(一次采样多次更新、多 epoch 复用、跨节点延迟),失配就是常态而不是异常,响应级准入会变成与 PPO clip 并列的必配项。CARM 提供的具体增量是:判据要用双向漂移量而不是净位移量。

本文的证据也划出了适用边界:收益是在「一个 rollout 批切 128 次更新」这种极端失配下测出来的,代码侧只有一个模型尺寸,数学侧只有两个尺寸,且最大值出现在噪声最大的那一列。把 CARM 接入自己的训练栈之前,先量一下自己批内漂移的量级——如果 dCARMd_{\text{CARM}} 的 55 分位远小于 0.02,掩码基本不会触发,加了等于没加。

5 实践启示

可以借鉴的技术

  1. 先量分布,再定阈值。 把 dGeoMeand_{\text{GeoMean}} 与 dCARMd_{\text{CARM}} 在自己的 rollout 批上打出来(一张配对散点图加两个分位数),按目标过滤率反解 τ\tau。论文的 4 倍预算差说明两把尺子刻度不同,照抄 τ=1.02\tau=1.02 没有意义。
  2. 把「掩码率」当成一等训练指标上报。 本文最有说服力的图是过滤率随训练步的变化(附录图 9)。掩码率突然升高意味着策略漂移变大(学习率过高、批内更新次数过多、引擎数值不一致),是一个比损失曲线更早的告警信号。
  3. 正优势响应也要查,别照抄「只掩码负优势」。 §5.2 的 15.35 分差是这条的直接证据。正优势的陈旧响应会把一个已经在漂移的方向再推一把。
  4. 阈值按「频率—严重度」而不是按「分数」调。 报 τ\tau 时一并报 poutp_{\text{out}} 上界(相对自己的裁剪带)与实测越界比例,团队沟通成本会低很多。注意这个上界是马尔可夫式的,实测值通常远低于它。
  5. 稳健性优先于最高分。 选阈值时按网格极差选,不要按单点最高分选。GeoMean 在 4B 上从 69.17 掉到 52.43 这件事,比 CARM 的 +1.25 更值得记住。

潜在应用场景

  • 异步 RL 后训练栈:一次采样多次更新、多 epoch 复用、跨节点 actor–learner 延迟,凡是有批内漂移的地方都是 CARM 的直接适用区。
  • 引擎数值不一致的诊断:rollout 引擎与训练后端 kernel 不同导致的静默失配,用 dCARMd_{\text{CARM}} 的分位数比用 KL 更容易定位,因为它只看采样到的 token。
  • 长响应任务:数学与代码的响应动辄上万 token,几何平均对长度的归一化会让长响应的抵消更严重,8,619 token 那条响应就是例子。
  • 采样预算受限时的取舍:掩码等价于用约 2 倍生成成本换一次更干净的更新。生成贵、更新便宜的系统适合;反过来,先减少批内更新次数(调大 mini-batch)更划算——本文没有做这个对照,值得自己测。
  • 与其他 off-policy 控制的组合:CARM 与 token 级裁剪、重要性比收缩(本专栏 GMC-GRPO 那一路)作用在不同层,理论上可叠加,但组合后的总掩码率与有效样本量需要重新配平。

相关精读