关于重要性采样系数,之前已经介绍过不少了,不过主要方案还是 clip,比如《GRPO“又一背锅侠”:Clip的各种拉扯 | 长琴[1]》中介绍的一系列文章,更进一步的优化是《GRPO优化在继续——CISPO和熵 | 长琴[2]》的 sg 和 特定 token mask,Minimax 后续模型也都用了自家的 CISPO,但是依然没有脱离 clip 和超参数设置。
Clip 有助于训练稳定,这没问题,但它最大的问题是会抑制来自高偏差策略样本的梯度,从而丢失有价值的学习信号。本文我们介绍的 SIS(Selective Importance Sampling)来自论文 Turning Off-Policy Tokens On-Policy: A Plug-in Approach for Improving LLM Alignment (arxiv:2607.04728)[3](文章图片、公式均来自此论文),在这个方向上再进一步。他们的出发点很简单——将那些 off-policy 的 token 转为 on-policy,自然就不需要 IS 了。具体怎么做的呢?他们将旧策略作为建议分布,执行 token 级别的拒绝测试:被接受的 token 自然就可以看作 on-policy 的,被拒绝的那就保持原来的 IS。
SIS 是即插即用的,仅修改重要性采样系数,而且它还有个正的外部性——提升训练的稳定性。关于稳定性我们在《GRPO“第一背锅侠”Token Level X:DAPO/DrGRPO与GSPO/GMPO的殊途同归 | 长琴[4]》提过,后面又专门写了两篇相关文章:《稳定压倒一切:MoE RL 训推不一致问题及解决策略 | 长琴[5]》、《MoE RL 训练不稳定性再思考:训推不一致,还是采样噪声? | 长琴[6]》,感兴趣的同学可以进一步阅读。
这里的问题或麻烦可能在于引入一个拒绝测试,不过论文给出了一个近似做法,使整个计算保持较低计算成本。效果和稳定性双全(见下表),值得一试。

核心图先放这里:

从off到on
来看看具体怎么做吧。对于每个位置 t,计算常数:
Mt=v∈Vmaxπθold (v∣x,y<t)πθ(v∣x,y<t)(1)
其中,V 表示词表,给定 token yt 和重要性系数:
wt(θ)=πθold (yt∣x,y<t)πθ(yt∣x,y<t)(2)
引入接受指示器:
zt∼Bernoulli(Mtwt(θ))(3)
zt=1 表示接受,意味着 yt 精确服从目标分布 πθ(yt∣x,y<t)。公式上来看,w 和 Mt 接近,接受的概率越大。简单理解,其实就是把原来 clip 的给放开了,告诉 policy,没关系,虽然 w 很大,但和咱们要的一样,你放心去更新。这里和 clip 还有个更本质的区别:clip 判断是否越界只看采样到的那一个 token 的比值,噪声很大;而拒绝测试的 Mt 是在整个词表分布上比较新旧策略,天然平滑得多。
wt(θ)={1,wt(θ),zt=1(on-policy, weight removed),zt=0(off-policy, weight retained),(4)
实验结果表明,无论是数学还是 agentic search,接受率都很高(后者偏低,因为交错使用多种工具会在策略之间引入更大的分布偏移),说明有相当大一部分 token 可以从 off-policy 转为 on-policy。
如上图 A 所示,这个比例比想象中要高不少。不过好像也正常,最近不是有些研究表明 RL 只需更新少量参数么……比如 Is One Layer Enough? Training A Single Transformer Layer Can Match Full-Parameter RL Training (arxiv:2607.01232)[7],之前也有过类似研究,就是说 RL 其实并不会更新很多参数。这个我们后面专门起一篇来聊。
近似计算
现在考虑计算问题,计算式 1 的最大常数需要在整个词表上进行,这不太现实,文章引入 top-K 近似。这里的依据是 LLM 的概率集中在词表的一个小子集上,因此可以通过将最大值计算限制在前 K 个词汇上来近似 Mt。
Mt=v∈VKmaxπθold(v∣x,y<t)πθ(v∣x,y<t),VK=TopK(πθold(⋅∣x,y<t),K)(5)
这里一个很自然的问题:K 取多少?请看上图 B,Agent 要的多一些,总体来看 Top10 就差不多 90% 了(ξK 是目标策略在 VK 外的概率质量 ),这可省了相当多计算。简单来说,不在 VK 内的 token 不参加拒绝测试,直接保留原 IS 系数;在 VK 内的 token 比值天然 ≤ Mt,接受概率恒合法。不过由于被接受 token 服从限制在 VK 上的条件分布(与真目标的 TV 距离恰好为 ξK),所以图 B 的 ξK 不只是“覆盖率指标”,也是近似版 SIS 的精确误差。
除了上面说的,SIS 还复用了生成过程中旧策略的 Logit 和训练过程中当前策略的 Logit,无需额外的模型前向传播。因此,每个 token 仅仅要「额外」做的是:在旧策略下选择 top-K 个候选,并从缓存的 Logit(注意,新策略不需要重新算)中计算它们的接受概率(K 个位置的 logprob 一减就行了),这只会增加每个 step ∼1% 的实际运行时间开销。
背景知识
我们先把目标写出来(简单起见,省略 KL):
J(θ)=Ex∼D,y∼πθ(⋅∣x)[r(x,y)](6)
写成求和(更准确的应该是积分)形式:
J(θ)=x∑P(x)y∑πθ(y∣x)r(x,y)(7)
对参数 θ 求导:
∇θJ(θ)=x∑P(x)y∑∇θπθ(y∣x)⋅r(x,y)(8)
注意,P(x) 和 r 都不含 θ。使用对数求导技巧:
∇θJ(θ)=x∑P(x)y∑[πθ(y∣x)⋅∇θlogπθ(y∣x)]⋅r(x,y)(9)
重新写成期望:
∇θJ(θ)=Ex∼D,y∼πθ(⋅∣x)[r(x,y)∇θlogπθ(y∣x)](10)
直接使用奖励 r(x,y) 会导致方差很大,所以一般都会减掉一个基线,用 A 代替(梯度期望不变),这点我们在《TRPO深度拆解:为什么做后训练应该读懂TRPO | 长琴[8]》等以往文章中提到过。
于是就得到下面这个常见的梯度形式:
∇θJ(θ)=Ex∼D,y∼πθ(⋅∣x)[A(x,y)∇θlogπθ(y∣x)](11)
有同学可能会问,这里好像没有重要性采样系数?是的,还没出来。因为梯度公式要求样本来自当前策略,但 rollout 来自旧策略,重要性采样系数就是用来把旧策略样本下的估计翻译回新策略。做法很简单,我们直接在公式 9 里面乘一个 πθold(y∣x)πθold(y∣x),得到:
∇θJ(θ)=x∑P(x)y∑[πθold(y∣x)πθold(y∣x)πθ(y∣x)⋅∇θlogπθ(y∣x)]⋅r(x,y)(12)
写成期望形式,并把 r 换成 A,我们就得到了最为常见的带重要性采样系数的梯度形式:
∇θJ(θ)=Ex∼D,y∼πθold(⋅∣x)[w(θ)A(x,y)∇θlogπθ(y∣x)](13)
其实相关背景知识我们在《为什么TRPO在LLM里不能用?——FiberPO的起点 | 长琴[9]》、《你可能没那么懂 SFT:SFT 与 RL 的爱恨纠葛 | 长琴[10]》、《TRPO深度拆解:为什么做后训练应该读懂TRPO | 长琴[8]》、《GRPO“第一背锅侠”Token Level X:DAPO/DrGRPO与GSPO/GMPO的殊途同归 | 长琴[4]》等多篇文章中已经做过介绍,这里无非就是再重复一遍。
Token 粒度代理估计为(注意不是恒等变形,后面会有进一步推导):
g~(θ)=Ey∼πθold(⋅∣x)[t=1∑Twt(θ)A(x,y)∇θlogπθ(yt∣x,y<t)](14)
我们在《为什么TRPO在LLM里不能用?——FiberPO的起点 | 长琴[9]》中提到过,虽然公式推导是严格的,但实际我们只能拿到近似结果,一是因为蒙特卡洛估计,另外就是策略偏离太远,w 太大会导致方差爆炸。所以,所有 TRPO 的变种算法都限制策略不能离得太远。
理论证明
好了,有了前面的背景知识,我们可以开始证明了。主要目的是回答这个核心问题:「当行为策略发生漂移时,token 级与序列级梯度估计之间的差距如何增长,SIS 能否在理论上证明有效缩小这一差距?」
为了回答这个问题,我们首先刻画近似误差 E=∥gseq−gtok∥,即采用序列级修正比 w(θ) 的真实梯度 gseq 与采用 token 级修正比 wt(θ) 的代理梯度 gtok 之间的差距。即公式 13 和公式 14 之间的差距。
首先看定理 1,对一个长度为 T 的序列,有:
E≤∣A(x,y)∣(eD−1)t=1∑T∥st∥(15)
其中,D=∑t=1T∣logwt(θ)∣,st=∇θlogπθ(yt∣x,y<t)。
现在来证明这个定理。给定一个 response,seq 级别的梯度式可以写为:
gseq=A(x,y)(j=1∏Twj(θ))(t=1∑Tst)(16)
先看后面那个括号,对比式 13,因为整句话的概率等于每个 token 条件概率的连乘,因此对全概率取对数后,其梯度会变成各个 token 梯度的求和。对两边同时求关于 θ 的梯度,得到:
∇θlogπθ(y∣x)=t=1∑T∇θlogπθ(yt∣x,y<t)=t=1∑Tst(17)
再看第一个括号的 w 连乘,这里和 st 的展开一个道理:
w(θ)=πθold(y∣x)πθ(y∣x)=j=1∏Tπθold(yj∣x,y<j)πθ(yj∣x,y<j)=j=1∏Twj(θ)(18)
而 gtok 可以写为:
gtok=A(x,y)t=1∑Twt(θ)st(19)
可以看到,它和式 16 非常相似,我们展开看就更直观了,先看 gseq:
gseq=A(x,y)⋅[(j=1∏Twj(θ))s1+(j=1∏Twj(θ))s2+⋯+(j=1∏Twj(θ))sT](20)
再看 gtok:
gtok=A(x,y)⋅[j=1∏Tw1(θ)s1+w2(θ)s2+⋯+wT(θ)sT](21)
这里的关键区别是:对 gseq 来说,在第 t 个 token 计算梯度 st 时,它的权重是整句话所有 token 的权重连乘。这意味着什么呢?意味着即使某些 token 新旧策略概率很接近,但只要这句话里其他任何一个地方的新旧策略漂了,这个连乘积就会爆炸或塌陷,导致那些概率接近的 token 梯度受到牵连,这就是方差爆炸的根源。也就是说,每一个 token 的梯度都在被迫承受“全序列所有 token 累积的分布漂移”。
所以,gtok 其实是退而求其次的做法,它强行把未来和过去的权重全砍了,只保留了当前 token 的权重。但这样做的结果是,当新旧策略发生偏差时,gtok 可能会严重高估或低估正确的梯度大小(理论值是序列连乘的),再考虑 clip,很多时候会导致过大或过小更新。而 SIS 的做法是让新旧策略接近的 token 放开更新,而且还是精准更新,没有偏差。
好了,言归正传,回到证明。两种梯度的差异可以写为:
E=A(x,y)t=1∑T(j=1∏Twj(θ)−wt(θ))st≤∣A(x,y)∣t=1∑T(j=1∏Twj(θ))−wt(θ)∥st∥(22)
令 R=∏j=1Twj(θ),根据logwt(θ)≤∣logwt(θ)∣ 和 ∣ex−1∣≤e∣x∣−1 有:
∣R−wt(θ)∣=wt(θ)j=t∏wj(θ)−1=wt(θ)e∑j=tlogwj(θ)−1≤wt(θ)(e∑j=t∣logwj(θ)∣−1)≤e∣logwt(θ)∣(e∑j=t∣logwj(θ)∣−1)=e∣logwt(θ)∣+∑j=t∣logwj(θ)∣−e∣logwt(θ)∣=e∑j=1T∣logwj(θ)∣−e∣logwt(θ)∣=eD−e∣logwt(θ)∣≤eD−1(23)
其中,D=∑j=1T∣logwj(θ)∣。代入式 22 就得到式 15。
可以看到,总对数重要性偏差 D 是控制近似误差的关键,这也和咱们刚刚的分析贴近,也解释了为什么当行为策略发生漂移时,off-policy 会迅速失稳。从公式上看,漂移导致 wt(θ)=1,进而 wt(θ)=w(θ)=∏wt(θ)。
SIS 情况会咋样呢?我们将 wt(θ) 换成式 4 的 wt(θ),定理 1(式15)变为:
E≤∣A(x,y)∣(eDSIS−1)t=1∑T∥st∥(24)
考虑式 4 的定义,有:
DSIS=t=1∑T∣logwt(θ)∣=t=1∑T(1−zt)∣logwt(θ)∣(25)
定义 C=∑t=1Tzt∣logwt(θ)∣≥0,有 DSIS=D−C≤D,因为 f(u)=eu−1 严格递增,有:
eDSIS−1=eD−C−1≤eD−1(26)
最终得到:
E≤∣A(x,y)∣(eDSIS−1)t=1∑T∥st∥≤∣A(x,y)∣(eD−1)t=1∑T∥st∥(27)
其实这点本身是非常直观的——w(θ)=∏wt(θ) 是由每个 off-policy 的 token 重要性系数 wt(θ) 共同贡献的,SIS 将大多数的 off-policy token 转为 on-policy token,这本来就减少了偏差,开头图里的 C 图也说明了这点。SIS 始终保持着比原始 GRPO 更低的偏差,这直接转化为更紧的近似误差界和更稳定的策略优化。论文甚至还做了个实验:完全关掉 clip,GRPO+SIS 依然胜过 clip 版 GRPO——标题的“不硬 clip”甚至可以是字面意思。
小结
本文主要介绍了 SIS(Selective Importance Sampling),它对重要性采样系数给出了新的优化思路——不 clip,哪怕动态的也不,而是通过 token 级拒绝测试,识别那些可以看作是 on-policy 的 token,剩余 token 保持原 clip 思路。最关键的是,这种 token 比例很高(60%-80%),这与“RL 只更新少量参数” 的研究相呼应,我们后面专门聊。工程上则通过 top-K 近似和新旧策略 logprob 复用,额外开销仅 ~1%。Clip 是稳定为先,但 SIS 告诉我们,稳定自然要,但不牺牲梯度也能获得。
Reference
[1] GRPO“又一背锅侠”:Clip的各种拉扯 | 长琴: https://yam.gift/2025/09/12/NLP/LLM-Training/2025-09-12-GRPO-Clip/
[2] GRPO优化在继续——CISPO和熵 | 长琴: https://yam.gift/2025/06/19/NLP/LLM-Training/2025-06-19-CISPO-and-Entropy/
[3] Turning Off-Policy Tokens On-Policy: A Plug-in Approach for Improving LLM Alignment (arxiv:2607.04728): https://arxiv.org/abs/2607.04728
[4] GRPO“第一背锅侠”Token Level X:DAPO/DrGRPO与GSPO/GMPO的殊途同归 | 长琴: https://yam.gift/2025/08/14/NLP/LLM-Training/2025-08-14-Token-Level-GSPO-GMPO/
[5] 稳定压倒一切:MoE RL 训推不一致问题及解决策略 | 长琴: https://yam.gift/2026/01/17/NLP/LLM-Training/2026-01-17-RL-MoE-Stable/
[6] MoE RL 训练不稳定性再思考:训推不一致,还是采样噪声? | 长琴: https://yam.gift/2026/01/22/NLP/LLM-Training/2026-01-22-RL-MoE-Stable-2/
[7] Is One Layer Enough? Training A Single Transformer Layer Can Match Full-Parameter RL Training (arxiv:2607.01232): https://arxiv.org/abs/2607.01232
[8] TRPO深度拆解:为什么做后训练应该读懂TRPO | 长琴: https://yam.gift/2026/05/11/NLP/LLM-Training/2026-05-11-TRPO/
[9] 为什么TRPO在LLM里不能用?——FiberPO的起点 | 长琴: https://yam.gift/2026/06/22/NLP/LLM-Training/2026-06-22-TRPO-Vanishing/
[10] 你可能没那么懂 SFT:SFT 与 RL 的爱恨纠葛 | 长琴: https://yam.gift/2026/06/01/NLP/LLM-Training/2026-06-01-SFT-vs-RL/