论文精读

精读:TAPO——把重要性比的记账区间从「当前 token」挪到「到当前位置为止的前缀」

TAPO 从 off-policy 策略梯度里推出长程自回归必需的状态分布校正,指出它在确定性转移下等于前缀似然比连乘,再用前缀几何平均与随位置收紧的裁剪把它压回可用方差;Qwen3-8B-Base 上数学四基准平均 41.0、代码四基准平均 58.6。本专栏逐项对账发现:摘要的 48% 参照的是表内最弱的 GRPO(27.7,低于次低基线 2.8 分),对最强基线 RIPO 数学只 +0.5 且输掉两列;理论要求的校正量是 R_t 而实际施加的是 R_t^(1/t),对数期望差 t 倍,且 E[R̃_t]→e^(-KL) 是一个与当前 token 无关的常数阻尼。

论文: Trajectory-Aware Policy Optimization: Closing the State Distribution Gap in Long-Horizon LLM RL
作者: Zhicheng Cai, Weinan Dai, Yuyan Zhou, Wei-Ying Ma, Ya-Qin Zhang, Hao Zhou
arXiv: 2610.13020
RLVR GRPO 重要性采样 状态分布校正 长程推理 训练稳定性 后训练

1 论文概览

一句话总结:TAPO 把 off-policy 策略梯度里那一项「状态分布比」单独拎出来,指出它在自回归 MDP 中退化为前缀 token 似然比的连乘,然后用「前缀几何平均 + 随位置收紧的裁剪边界」把这个理论上正确但方差指数爆炸的校正量塞回 PPO 代理目标。

核心问题:长程自回归 rollout 里,目标策略在位置 tt 面对的状态 st=(x,o<t)s_t=(x,o_{<t}) 是前面所有采样 token 累积出来的。每一点上的局部失配会沿轨迹传播,到后面位置累积成越来越大的状态分布漂移。GRPO 在 token 级做重要性校正,GSPO 把整条序列当成一个动作做序列级校正,两者都没有显式校正「前缀累积出来的状态分布比」。

主要贡献

  1. 把状态分布漂移形式化,并从 off-policy 策略梯度里推出它的校正项(Theorem 1):dtπ(st∣x)dtμ(st∣x)⋅π(ot∣st)μ(ot∣st)\frac{d_t^\pi(s_t\mid x)}{d_t^\mu(s_t\mid x)}\cdot\frac{\pi(o_t\mid s_t)}{\mu(o_t\mid s_t)},前一项是状态校正,后一项是动作校正。
  2. 证明这个校正在 LLM 上可算:状态转移确定性 ⇒ sts_t 唯一标识前缀 ⇒ 状态分布比 = 前缀似然比连乘,于是总校正就是 Rt=∏i≤tri\mathcal R_t=\prod_{i\le t} r_i。
  3. 给出方差定理并据此换估计量(Theorem 2):Var⁡μ(Rt)=etσ2−1\operatorname{Var}_\mu(\mathcal R_t)=e^{t\sigma^2}-1 指数爆炸,几何平均版 R~t=Rt1/t\widetilde{\mathcal R}_t=\mathcal R_t^{1/t} 的方差是 O(1/t)O(1/t)。
  4. 位置相关的裁剪边界(Theorem 3 + Eq.13):由集中不等式得 ϵt=σ2log⁡(2/δ)/t\epsilon_t=\sigma\sqrt{2\log(2/\delta)/t},据此让 ϵt\epsilon_t 沿 1/t1/\sqrt t 从 0.20.2 收紧到 0.00030.0003。
  5. 实验:Qwen3-8B-Base 上数学四基准平均 41.041.0、代码四基准平均 58.658.6,另有 1.7B / 4B 两档尺度验证,基线共 10 个(GRPO / DAPO / DCPO / SAPO / CISPO / Clip-Cov / DPPO / RIPO / GSPO / GMPO)。

“neither explicitly corrects for the state distribution shift induced by the preceding trajectory.” ——§1 Introduction

2 方法详解

架构概述:采样、奖励、优势估计全部沿用 GRPO 一套(8 条 rollout 一组,A^tg=(Rg−mean)/std\hat A_t^g=(R^g-\mathrm{mean})/\mathrm{std},二值奖励,无 KL 惩罚,双重裁剪 [0.5,10][0.5,10])。TAPO 只替换进入 PPO 裁剪代理的那个重要性比。

关键创新点一:把状态分布比算出来。Theorem 1 从 off-policy 策略梯度出发,先写出轨迹级 IS,再把「当前位置之后」的那一段用 QπQ^\pi 吸收掉,留下位置 tt 处需要的校正。LLM 的转移是确定性的,p(st+1∣st,ot)=1p(s_{t+1}\mid s_t,o_t)=1,所以

dtπ(st∣x)dtμ(st∣x)=∏i=1t−1π(oi∣si)μ(oi∣si),Rt=∏i=1tri.\frac{d_t^\pi(s_t\mid x)}{d_t^\mu(s_t\mid x)}=\prod_{i=1}^{t-1}\frac{\pi(o_i\mid s_i)}{\mu(o_i\mid s_i)},\qquad \mathcal R_t=\prod_{i=1}^{t} r_i .

这一步是整个论文的立身之本:它把一个 MDP 里通常不可算的状态分布比,化成了每个实现里都已经算好的逐 token 似然比的连乘。

关键创新点二:几何平均换方差。Theorem 2 在 log⁡ri∼N(−σ2/2,σ2)\log r_i\sim\mathcal N(-\sigma^2/2,\sigma^2) 下算出 Var⁡μ(Rt)=etσ2−1\operatorname{Var}_\mu(\mathcal R_t)=e^{t\sigma^2}-1,而 Var⁡μ(R~t)=e−σ2+σ2/t(eσ2/t−1)=O(1/t)\operatorname{Var}_\mu(\widetilde{\mathcal R}_t)=e^{-\sigma^2+\sigma^2/t}(e^{\sigma^2/t}-1)=O(1/t)。指数方差对指数方差的对数,这是硬结论:完整的 ∏i≤tri\prod_{i\le t} r_i 在长程上不可用。

关键创新点三:位置相关的裁剪。Theorem 3 给的是 Pr⁡(∣log⁡R~t−Elog⁡R~t∣≥ϵ)≤2exp⁡(−tϵ2/2σ2)\Pr(|\log\widetilde{\mathcal R}_t-\mathbb E\log\widetilde{\mathcal R}_t|\ge\epsilon)\le 2\exp(-t\epsilon^2/2\sigma^2),反解出置信半径 ϵt=σ2log⁡(2/δ)/t\epsilon_t=\sigma\sqrt{2\log(2/\delta)/t}。Eq.13 把它映射到区间 [1,T][1,T]:

ϵtl=ϵmin⁡l+(ϵmax⁡l−ϵmin⁡l)1/t−1/T1−1/T,ϵmax⁡=0.2, ϵmin⁡=0.0003.\epsilon_t^{l}=\epsilon_{\min}^{l}+(\epsilon_{\max}^{l}-\epsilon_{\min}^{l})\frac{1/\sqrt t-1/\sqrt T}{1-1/\sqrt T},\qquad \epsilon_{\max}=0.2,\ \epsilon_{\min}=0.0003 .

与基线方法的区别。把三者的校正量并排写出来最清楚:

方法校正量用到的 token裁剪边界
GRPOrt=π(ot∣st)/μ(ot∣st)r_t=\pi(o_t\mid s_t)/\mu(o_t\mid s_t)只当前 token常数 0.20.2
GSPOsg=(∏i=1∣og∣ri)1/∣og∣s^g=\big(\prod_{i=1}^{\lvert o^g\rvert} r_i\big)^{1/\lvert o^g\rvert}全序列,含当前位置之后的 token单一常数
TAPOR~tg=(∏i=1tri)1/t\widetilde{\mathcal R}_t^g=\big(\prod_{i=1}^{t} r_i\big)^{1/t}到当前位置为止的前缀1/t1/\sqrt t 递减

TAPO 的最终实现还套了一层与 GSPO 同构的 stop-gradient 构造:R^tg=sg⁡[R~tg]⋅π(otg∣x,o<tg)/sg⁡[π(otg∣x,o<tg)]\widehat{\mathcal R}_t^g=\operatorname{sg}[\widetilde{\mathcal R}_t^g]\cdot\pi(o_t^g\mid x,o_{<t}^g)/\operatorname{sg}[\pi(o_t^g\mid x,o_{<t}^g)],前向值与 R~tg\widetilde{\mathcal R}_t^g 相同,梯度只有 ∇θR^tg=R~tg∇θlog⁡π(otg∣x,o<tg)\nabla_\theta\widehat{\mathcal R}_t^g=\widetilde{\mathcal R}_t^g\nabla_\theta\log\pi(o_t^g\mid x,o_{<t}^g)。前缀校正退化成一个标量系数乘在当前 token 的 score 上,梯度不穿过前缀。

“Although R^tg\widehat{\mathcal R}_{t}^{g} has the same forward value as R~tg\widetilde{\mathcal R}_{t}^{g}, its gradient satisfies ∇θR^tg=R~tg∇θlog⁡π(otg∣x,o<tg)\nabla_{\theta}\widehat{\mathcal R}_{t}^{g}=\widetilde{\mathcal R}_{t}^{g}\nabla_{\theta}\log\pi(o_{t}^{g}\mid x,o_{<t}^{g})” ——§3.2.3 Trajectory-Aware Policy Optimization

本专栏的位置:此前三十五期改的是训练信号的内容、记账口径、时间有效性、数据分布、响应级准入、策略容量、跨分词器对齐口径、监督目标本身、正则项接在哪条边、教师信号从哪条通道进 RL。这一期动的是重要性比覆盖多长的前缀——把校正的记账区间从「当前 token」与「整条序列」两个端点,挪到「到当前位置为止的前缀」,并让裁剪边界随这个长度一起收紧。

3 实验结果

设置:Qwen3-8B-Base,数学训 DAPO-Math-17k、代码训 Eurus-Code-25k;每 query 8 条 rollout,最大响应长度 20k token;每轮 1024 条 rollout、train batch 128、更新 8 次、mini-batch 16;AdamW 常数学习率 1×10−61\times10^{-6},750 步,8×H20,VeRL。评测 avg@8,取每个算法的最佳 checkpoint。

表 1(Qwen3-8B-Base,Avg@8,括号内为相对 GRPO)

方法粒度AIME24AIME25BRUMO25SMT25数学均CodeforcesCCodeTACOAPPS代码均
Base—3.83.315.010.88.232.332.116.532.128.3
GRPOtoken34.620.833.321.927.7 (+0.0%)61.957.436.254.252.4 (+0.0%)
DAPOtoken45.027.537.528.534.6 (+24.9%)64.059.137.456.854.3 (+3.6%)
DCPOtoken36.327.542.831.634.6 (+24.9%)63.558.736.857.254.1 (+3.2%)
SAPOtoken37.328.741.732.335.0 (+26.4%)63.757.037.555.953.5 (+2.1%)
CISPOtoken31.723.838.328.030.5 (+10.1%)61.654.635.153.951.3 (−2.1%)
DPPOtoken46.732.542.534.239.0 (+40.8%)63.558.637.655.653.8 (+2.7%)
RIPOtoken47.932.547.534.240.5 (+46.2%)68.262.339.358.957.2 (+9.2%)
GSPOseq42.928.736.332.535.1 (+26.7%)63.857.936.656.353.7 (+2.5%)
GMPOseq41.730.035.833.035.1 (+26.7%)64.059.237.456.854.4 (+3.8%)
TAPOtraj49.633.347.233.841.0 (+48.0%)70.264.540.758.958.6 (+11.8%)

表 2(数学,Avg@8):1.7B 上 TAPO 14.6 对 GRPO 11.1(+31.5%)、对 RIPO 14.3(+0.3);4B 上 TAPO 29.5 对 GRPO 24.2(+21.3%)、对 RIPO 28.3(+1.2)、对 GMPO 27.0(+2.5)。

逐列对账(本专栏算)。摘要的「48%」是相对 GRPO,而 GRPO 的 27.7 是表内 10 个基线里最低的一个(次低 CISPO 30.5,组内极差 12.8 分)。换成表内最强基线 RIPO:

对比AIME24AIME25BRUMO25SMT25数学均相对
TAPO − RIPO+1.7+0.8−0.3−0.4+0.5+1.2%
TAPO − GRPO+15.0+12.5+13.9+11.9+13.3+48.0%
TAPO − GSPO+6.7+4.6+10.9+1.3+5.9+16.8%

数学四列里 TAPO 输掉两列(BRUMO25、SMT25)。代码四列对 RIPO 是 +2.0 / +2.2 / +1.4 / 0.0,符号一致——代码域的证据比数学域整齐。

按 30 题、avg@8、q≈0.4q\approx0.4 估单列标准误约 3.2 分(论文未报题数、方差与种子),四列宏平均的差值 SE 约 2.2 分:TAPO 对 GRPO 的 +13.3 约 z=5.9z=5.9,扛得住;对 RIPO 的 +0.5 约 z=0.2z=0.2,与噪声不可区分。

消融:只有图 3 的两组训练曲线,没有一张分数表。校正比四个变体(原始 Rt\mathcal R_t、GMPO 式剔除 [e−0.4,e0.4][e^{-0.4},e^{0.4}] 外的样本 R‾t\overline{\mathcal R}_t、只对状态部分做几何平均 R~t−1⋅rt\widetilde{\mathcal R}_{t-1}\cdot r_t、对全长做几何平均 R~t\widetilde{\mathcal R}_t)中,前三个都不稳定,只有 R~t\widetilde{\mathcal R}_t 稳定上升。裁剪四个变体(不裁剪 / 固定 0.2 / 固定 0.0003 / 动态)中,不裁剪直接崩,固定 0.2 后期 KL 与熵失控,固定 0.0003 前期熵掉太快。

4 个人分析

亮点

  • 「状态分布比」这一层被点名了,而且被化成了可算的量。过去大家默认重要性比只管动作,TAPO 指出在树上型 MDP 里状态比也是连乘,且恰好是同一个连乘的前 t−1t-1 项。这个观察干净、可复用。
  • Theorem 2 是硬的,也是否定性的。Var⁡μ(Rt)=etσ2−1\operatorname{Var}_\mu(\mathcal R_t)=e^{t\sigma^2}-1 直接宣判了完整前缀连乘在长程上的死刑——它解释了为什么之前没人这么做,也给后来者设了一道必过的关。
  • 因果化是一个被说清的差别。GSPO 的 sgs^g 用了整条序列的连乘,位置 tt 的校正里混进了 tt 之后的 token;TAPO 只用前缀。这条差别在方法对比表里一目了然,此前文献没把它挑明。
  • 基线组够厚,且最强基线是同组的前作。10 个基线覆盖 token 级与序列级两族,TAPO 相对 RIPO 的 +1.2% / +2.4% 也写进了正文,没有只报 GRPO 那一档。
  • 工程代价接近零。校正量是现有实现里已经算好的逐 token 比,加一个前缀累积与一个 1/t1/\sqrt t 调度即可,不需要额外前向、不需要 value head。

局限性

  • 理论要求的量与实际施加的量差一个 tt 倍:需要的是 Rt\mathcal R_t,实际施加的是 Rt1/t\mathcal R_t^{1/t}。位置 tt 需要的状态校正对数期望是 −(t−1)σ2/2-(t-1)\sigma^2/2,TAPO 施加的对数期望是 −σ2/2-\sigma^2/2,比值 1/(t−1)1/(t-1)。t=1000t=1000 时只施加了理论值的 0.1%;t=1t=1 时才精确相等,t=2t=2 时连乘里的两项都已被开方。论文自陈这是方差换偏差的取舍(Theorem 2 就是这么来的),可摘要与正文的说法是 “explicitly incorporates the state-distribution correction”。
  • 几何平均的期望不是 1,是一个常数。Eμ[R~t]=exp⁡(−σ2/2+σ2/2t)→e−σ2/2\mathbb E_\mu[\widetilde{\mathcal R}_t]=\exp(-\sigma^2/2+\sigma^2/2t)\to e^{-\sigma^2/2}。又因 Eμ[log⁡r]=−KL(μ∥π)\mathbb E_\mu[\log r]=-\mathrm{KL}(\mu\|\pi),有 σ2=2 KLper-token\sigma^2=2\,\mathrm{KL}_{\text{per-token}},于是长程位置上的系数收敛到 e−KLe^{-\mathrm{KL}}:每 token KL 为 0.01 nats 时是 0.990,0.05 时 0.951,0.2 时 0.819。这等于一个随漂移自动增强的全局阻尼——训练越久、KL 越大,后期 token 的更新被压得越狠。图 2 的「KL 受控、分数稳升」与这条推导同向。缺一条「直接把后期 token 乘 e−KLe^{-\mathrm{KL}} 常数」的对照臂,就无法区分「校正更准」与「自适应退火」。
  • 当前 token 的重要性比被稀释:log⁡R~t=1t∑i≤tlog⁡ri\log\widetilde{\mathcal R}_t=\frac1t\sum_{i\le t}\log r_i,log⁡rt\log r_t 的系数是 1/t1/t。t=1000t=1000 时当前 token 的似然比对校正的贡献只剩千分之一。叠加 ϵt→0.0003\epsilon_t\to0.0003 的裁剪,长程位置上状态校正不起作用,动作校正也不起作用——恰好在论文指认漂移最严重的位置,校正被自己关掉了。
  • 裁剪调度按长度归一,定理里没有这个量。Theorem 3 给的是 ϵt=σ2log⁡(2/δ)/t\epsilon_t=\sigma\sqrt{2\log(2/\delta)/t},只依赖绝对位置 tt;Eq.13 的 (1/t−1/T)/(1−1/T)(1/\sqrt t-1/\sqrt T)/(1-1/\sqrt T) 额外引入了响应长度 TT。后果是同一绝对位置上,短响应的裁剪带比长响应更紧——这个跨响应的差异不是定理给的,论文也没消融 TT 的取法(实际响应长度还是 20k 上限)。
  • 集中界的中心与裁剪中心错开:。界给的是绕 Elog⁡R~t=−σ2/2\mathbb E\log\widetilde{\mathcal R}_t=-\sigma^2/2 的偏离,裁剪区间却是绕 log⁡1=0\log 1=0 的 [1−ϵt,1+ϵt][1-\epsilon_t,1+\epsilon_t]。σ\sigma 一大,R~t\widetilde{\mathcal R}_t 的整个分布落在下界之外,而 PPO 的 min 形式对正优势并不约束下侧,于是一侧完全失效、另一侧必触发。
  • headline 参照了表内最弱的基线。GRPO 的 27.7 落后第二名 CISPO 2.8 分、落后 RIPO 12.8 分,是表里唯一低于 30 的。1.7B 那一组 DAPO 是 −0.7%(低于 GRPO),BRUMO25 上 9.2 分低于 Base 的 11.3 分——基线组内部有塌到基座以下的格子,说明这批复现的 operating point 未必齐整。
  • 种子、误差棒、显著性、墙钟,四个都没有。全文 “seed” 零命中(唯一一次出现在机构名 ByteDance Seed),无置信区间、无 wall-clock / GPU-hour。评测取每个算法的最佳 checkpoint,却没写 best 是按训练分还是按验证分挑;在一个以「基线会崩」为动机的叙事里,这个选择直接决定 headline 读到的是崩前还是崩后。
  • 消融没有分数。图 3 两组各四个变体,一张数字表都没有。裁剪那一组更有结构性问题:两个固定端点 0.20.2 与 0.0003/0.00040.0003/0.0004 恰好就是动态调度的两个端点,所以这条消融只能证明「两端之间取个中间值好过两端」,证明不了 1/t1/\sqrt t 这个形状,也没有扫 ϵmin⁡,ϵmax⁡\epsilon_{\min},\epsilon_{\max}。
  • 失配程度是配置自造的。每轮 1024 条 rollout 配 8 次更新、mini-batch 16,μ\mu 与 π\pi 的落差由这份配置决定。没有「把 mini-batch 调大」或「每轮只更新一次」的对照,就无法分离「TAPO 校正得更准」与「TAPO 把自造的 staleness 压住了」——后者对任何序列级收缩方法都成立。

对大模型领域的影响:这篇把「重要性比覆盖多长前缀」变成了一个公开可调的维度,此前只有 token 级与序列级两个端点。它给出的两条结论会成为后续工作的地基:一是完整前缀连乘的方差是 etσ2e^{t\sigma^2} 量级,任何想用真·轨迹级 IS 的方案得先过这一关;二是一切方差压缩后的替代估计量,在长程上都会收敛到一个常数系数,于是「校正」与「阻尼」的界限需要在实验里被分开测。裁剪边界从常数变成位置函数这件事,也会外溢到异步 RL 与 agent 多轮轨迹上。

顺带一条消歧:TAPO 这个名字在 2026 年已被用过两次——Transition-Aware Policy Optimization(agent 侧,用 rollout 三元组做状态转移预测监督)与 Trajectory-Augmented Policy Optimization(自蒸馏侧,构造微反思轨迹)。本篇是第三个 TAPO,检索时按 arXiv 号认。

5 实践启示

可以借的技术

  1. 长程 IS 估计量默认做长度归一化。∏\prod 的方差是指数的,∏1/t\prod^{1/t} 的方差是 O(1/t)O(1/t),这个换算可以直接搬。凡是要把多个 token 的似然比连乘起来当权重的地方,先问一句要不要开 tt 次方。
  2. 裁剪边界按 Theorem 3 标定,但要用绝对位置。ϵt=σ2log⁡(2/δ)/t\epsilon_t=\sigma\sqrt{2\log(2/\delta)/t} 里没有响应长度,把 TT 引进归一化的那一步缺少依据。真要按响应长度归一,得单独做一次消融。
  3. 裁剪的中心要对齐估计量的均值。R~t\widetilde{\mathcal R}_t 集中在 e−σ2/2e^{-\sigma^2/2} 附近而不是 1 附近,把区间挪到这个中心,两侧裁剪才对称生效。
  4. 因果化那条可以直接搬进 GSPO / GMPO 的实现。序列级 IS 比里剔除当前位置之后的 token,改动量是一个下标,语义上更干净。
  5. 诊断做法:把 log⁡R~t\log\widetilde{\mathcal R}_t 的实测均值与标准差按位置打出来。均值偏离 −σ2/2-\sigma^2/2 说明高斯假设不成立,标准差随 tt 不按 1/t1/\sqrt t 收说明独立性假设不成立。这两个数是判断「校正还剩多少信息」最快的一张图,论文没给。
  6. 任何长程收缩方法都要配一条常数缩放对照臂。e−KLe^{-\mathrm{KL}} 这个推导说明,看上去是「按轨迹自适应校正」的系数,与「按全局漂移统一衰减」并排放在一起时才看得出差别。不加这条臂,稳定性的归因永远悬着。

潜在应用场景

  • 20k token 以上的长思维链 RL,尤其是 mini-batch 更新次数多、μ\mu 与 π\pi 落差大的配置——落差越大,e−KLe^{-\mathrm{KL}} 的阻尼越强,收益也越容易来自阻尼而非校正。
  • 多轮 agent 轨迹 RL:状态里含工具返回与外部观测时,前缀漂移比纯文本更快,前缀几何平均的因果形式与这类场景契合。
  • 异步 / 流水线 RL 的 staleness 补偿:把「滞后步数」映射成一个等效前缀长度,就能复用同一套 1/t1/\sqrt t 调度。
  • 落地前要先补三样东西:σ\sigma(或每 token KL)的实测值、ϵ\epsilon 调度形状的扫描、以及那条常数缩放对照臂。

参考文献

Cai, Z., Dai, W., Zhou, Y., Ma, W.-Y., Zhang, Y.-Q., & Zhou, H. (2026). Trajectory-Aware Policy Optimization: Closing the State Distribution Gap in Long-Horizon LLM RL. arXiv:2610.13020 [cs.LG]. SIA-Lab of Tsinghua AIR and ByteDance Seed / AIR, Tsinghua University.

相关精读