精读: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 无关的常数阻尼。
1 论文概览
一句话总结:TAPO 把 off-policy 策略梯度里那一项「状态分布比」单独拎出来,指出它在自回归 MDP 中退化为前缀 token 似然比的连乘,然后用「前缀几何平均 + 随位置收紧的裁剪边界」把这个理论上正确但方差指数爆炸的校正量塞回 PPO 代理目标。
核心问题:长程自回归 rollout 里,目标策略在位置 面对的状态 是前面所有采样 token 累积出来的。每一点上的局部失配会沿轨迹传播,到后面位置累积成越来越大的状态分布漂移。GRPO 在 token 级做重要性校正,GSPO 把整条序列当成一个动作做序列级校正,两者都没有显式校正「前缀累积出来的状态分布比」。
主要贡献
- 把状态分布漂移形式化,并从 off-policy 策略梯度里推出它的校正项(Theorem 1):,前一项是状态校正,后一项是动作校正。
- 证明这个校正在 LLM 上可算:状态转移确定性 ⇒ 唯一标识前缀 ⇒ 状态分布比 = 前缀似然比连乘,于是总校正就是 。
- 给出方差定理并据此换估计量(Theorem 2): 指数爆炸,几何平均版 的方差是 。
- 位置相关的裁剪边界(Theorem 3 + Eq.13):由集中不等式得 ,据此让 沿 从 收紧到 。
- 实验:Qwen3-8B-Base 上数学四基准平均 、代码四基准平均 ,另有 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 一组,,二值奖励,无 KL 惩罚,双重裁剪 )。TAPO 只替换进入 PPO 裁剪代理的那个重要性比。
关键创新点一:把状态分布比算出来。Theorem 1 从 off-policy 策略梯度出发,先写出轨迹级 IS,再把「当前位置之后」的那一段用 吸收掉,留下位置 处需要的校正。LLM 的转移是确定性的,,所以
这一步是整个论文的立身之本:它把一个 MDP 里通常不可算的状态分布比,化成了每个实现里都已经算好的逐 token 似然比的连乘。
关键创新点二:几何平均换方差。Theorem 2 在 下算出 ,而 。指数方差对指数方差的对数,这是硬结论:完整的 在长程上不可用。
关键创新点三:位置相关的裁剪。Theorem 3 给的是 ,反解出置信半径 。Eq.13 把它映射到区间 :
与基线方法的区别。把三者的校正量并排写出来最清楚:
| 方法 | 校正量 | 用到的 token | 裁剪边界 |
|---|---|---|---|
| GRPO | 只当前 token | 常数 | |
| GSPO | 全序列,含当前位置之后的 token | 单一常数 | |
| TAPO | 到当前位置为止的前缀 | 递减 |
TAPO 的最终实现还套了一层与 GSPO 同构的 stop-gradient 构造:,前向值与 相同,梯度只有 。前缀校正退化成一个标量系数乘在当前 token 的 score 上,梯度不穿过前缀。
“Although has the same forward value as , its gradient satisfies ” ——§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 常数学习率 ,750 步,8×H20,VeRL。评测 avg@8,取每个算法的最佳 checkpoint。
表 1(Qwen3-8B-Base,Avg@8,括号内为相对 GRPO)
| 方法 | 粒度 | AIME24 | AIME25 | BRUMO25 | SMT25 | 数学均 | Codeforces | CCode | TACO | APPS | 代码均 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Base | — | 3.8 | 3.3 | 15.0 | 10.8 | 8.2 | 32.3 | 32.1 | 16.5 | 32.1 | 28.3 |
| GRPO | token | 34.6 | 20.8 | 33.3 | 21.9 | 27.7 (+0.0%) | 61.9 | 57.4 | 36.2 | 54.2 | 52.4 (+0.0%) |
| DAPO | token | 45.0 | 27.5 | 37.5 | 28.5 | 34.6 (+24.9%) | 64.0 | 59.1 | 37.4 | 56.8 | 54.3 (+3.6%) |
| DCPO | token | 36.3 | 27.5 | 42.8 | 31.6 | 34.6 (+24.9%) | 63.5 | 58.7 | 36.8 | 57.2 | 54.1 (+3.2%) |
| SAPO | token | 37.3 | 28.7 | 41.7 | 32.3 | 35.0 (+26.4%) | 63.7 | 57.0 | 37.5 | 55.9 | 53.5 (+2.1%) |
| CISPO | token | 31.7 | 23.8 | 38.3 | 28.0 | 30.5 (+10.1%) | 61.6 | 54.6 | 35.1 | 53.9 | 51.3 (−2.1%) |
| DPPO | token | 46.7 | 32.5 | 42.5 | 34.2 | 39.0 (+40.8%) | 63.5 | 58.6 | 37.6 | 55.6 | 53.8 (+2.7%) |
| RIPO | token | 47.9 | 32.5 | 47.5 | 34.2 | 40.5 (+46.2%) | 68.2 | 62.3 | 39.3 | 58.9 | 57.2 (+9.2%) |
| GSPO | seq | 42.9 | 28.7 | 36.3 | 32.5 | 35.1 (+26.7%) | 63.8 | 57.9 | 36.6 | 56.3 | 53.7 (+2.5%) |
| GMPO | seq | 41.7 | 30.0 | 35.8 | 33.0 | 35.1 (+26.7%) | 64.0 | 59.2 | 37.4 | 56.8 | 54.4 (+3.8%) |
| TAPO | traj | 49.6 | 33.3 | 47.2 | 33.8 | 41.0 (+48.0%) | 70.2 | 64.5 | 40.7 | 58.9 | 58.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:
| 对比 | AIME24 | AIME25 | BRUMO25 | SMT25 | 数学均 | 相对 |
|---|---|---|---|---|---|---|
| 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、 估单列标准误约 3.2 分(论文未报题数、方差与种子),四列宏平均的差值 SE 约 2.2 分:TAPO 对 GRPO 的 +13.3 约 ,扛得住;对 RIPO 的 +0.5 约 ,与噪声不可区分。
消融:只有图 3 的两组训练曲线,没有一张分数表。校正比四个变体(原始 、GMPO 式剔除 外的样本 、只对状态部分做几何平均 、对全长做几何平均 )中,前三个都不稳定,只有 稳定上升。裁剪四个变体(不裁剪 / 固定 0.2 / 固定 0.0003 / 动态)中,不裁剪直接崩,固定 0.2 后期 KL 与熵失控,固定 0.0003 前期熵掉太快。
4 个人分析
亮点
- 「状态分布比」这一层被点名了,而且被化成了可算的量。过去大家默认重要性比只管动作,TAPO 指出在树上型 MDP 里状态比也是连乘,且恰好是同一个连乘的前 项。这个观察干净、可复用。
- Theorem 2 是硬的,也是否定性的。 直接宣判了完整前缀连乘在长程上的死刑——它解释了为什么之前没人这么做,也给后来者设了一道必过的关。
- 因果化是一个被说清的差别。GSPO 的 用了整条序列的连乘,位置 的校正里混进了 之后的 token;TAPO 只用前缀。这条差别在方法对比表里一目了然,此前文献没把它挑明。
- 基线组够厚,且最强基线是同组的前作。10 个基线覆盖 token 级与序列级两族,TAPO 相对 RIPO 的 +1.2% / +2.4% 也写进了正文,没有只报 GRPO 那一档。
- 工程代价接近零。校正量是现有实现里已经算好的逐 token 比,加一个前缀累积与一个 调度即可,不需要额外前向、不需要 value head。
局限性
- 理论要求的量与实际施加的量差一个 倍:需要的是 ,实际施加的是 。位置 需要的状态校正对数期望是 ,TAPO 施加的对数期望是 ,比值 。 时只施加了理论值的 0.1%; 时才精确相等, 时连乘里的两项都已被开方。论文自陈这是方差换偏差的取舍(Theorem 2 就是这么来的),可摘要与正文的说法是 “explicitly incorporates the state-distribution correction”。
- 几何平均的期望不是 1,是一个常数。。又因 ,有 ,于是长程位置上的系数收敛到 :每 token KL 为 0.01 nats 时是 0.990,0.05 时 0.951,0.2 时 0.819。这等于一个随漂移自动增强的全局阻尼——训练越久、KL 越大,后期 token 的更新被压得越狠。图 2 的「KL 受控、分数稳升」与这条推导同向。缺一条「直接把后期 token 乘 常数」的对照臂,就无法区分「校正更准」与「自适应退火」。
- 当前 token 的重要性比被稀释:, 的系数是 。 时当前 token 的似然比对校正的贡献只剩千分之一。叠加 的裁剪,长程位置上状态校正不起作用,动作校正也不起作用——恰好在论文指认漂移最严重的位置,校正被自己关掉了。
- 裁剪调度按长度归一,定理里没有这个量。Theorem 3 给的是 ,只依赖绝对位置 ;Eq.13 的 额外引入了响应长度 。后果是同一绝对位置上,短响应的裁剪带比长响应更紧——这个跨响应的差异不是定理给的,论文也没消融 的取法(实际响应长度还是 20k 上限)。
- 集中界的中心与裁剪中心错开:。界给的是绕 的偏离,裁剪区间却是绕 的 。 一大, 的整个分布落在下界之外,而 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 两组各四个变体,一张数字表都没有。裁剪那一组更有结构性问题:两个固定端点 与 恰好就是动态调度的两个端点,所以这条消融只能证明「两端之间取个中间值好过两端」,证明不了 这个形状,也没有扫 。
- 失配程度是配置自造的。每轮 1024 条 rollout 配 8 次更新、mini-batch 16, 与 的落差由这份配置决定。没有「把 mini-batch 调大」或「每轮只更新一次」的对照,就无法分离「TAPO 校正得更准」与「TAPO 把自造的 staleness 压住了」——后者对任何序列级收缩方法都成立。
对大模型领域的影响:这篇把「重要性比覆盖多长前缀」变成了一个公开可调的维度,此前只有 token 级与序列级两个端点。它给出的两条结论会成为后续工作的地基:一是完整前缀连乘的方差是 量级,任何想用真·轨迹级 IS 的方案得先过这一关;二是一切方差压缩后的替代估计量,在长程上都会收敛到一个常数系数,于是「校正」与「阻尼」的界限需要在实验里被分开测。裁剪边界从常数变成位置函数这件事,也会外溢到异步 RL 与 agent 多轮轨迹上。
顺带一条消歧:TAPO 这个名字在 2026 年已被用过两次——Transition-Aware Policy Optimization(agent 侧,用 rollout 三元组做状态转移预测监督)与 Trajectory-Augmented Policy Optimization(自蒸馏侧,构造微反思轨迹)。本篇是第三个 TAPO,检索时按 arXiv 号认。
5 实践启示
可以借的技术
- 长程 IS 估计量默认做长度归一化。 的方差是指数的, 的方差是 ,这个换算可以直接搬。凡是要把多个 token 的似然比连乘起来当权重的地方,先问一句要不要开 次方。
- 裁剪边界按 Theorem 3 标定,但要用绝对位置。 里没有响应长度,把 引进归一化的那一步缺少依据。真要按响应长度归一,得单独做一次消融。
- 裁剪的中心要对齐估计量的均值。 集中在 附近而不是 1 附近,把区间挪到这个中心,两侧裁剪才对称生效。
- 因果化那条可以直接搬进 GSPO / GMPO 的实现。序列级 IS 比里剔除当前位置之后的 token,改动量是一个下标,语义上更干净。
- 诊断做法:把 的实测均值与标准差按位置打出来。均值偏离 说明高斯假设不成立,标准差随 不按 收说明独立性假设不成立。这两个数是判断「校正还剩多少信息」最快的一张图,论文没给。
- 任何长程收缩方法都要配一条常数缩放对照臂。 这个推导说明,看上去是「按轨迹自适应校正」的系数,与「按全局漂移统一衰减」并排放在一起时才看得出差别。不加这条臂,稳定性的归因永远悬着。
潜在应用场景
- 20k token 以上的长思维链 RL,尤其是 mini-batch 更新次数多、 与 落差大的配置——落差越大, 的阻尼越强,收益也越容易来自阻尼而非校正。
- 多轮 agent 轨迹 RL:状态里含工具返回与外部观测时,前缀漂移比纯文本更快,前缀几何平均的因果形式与这类场景契合。
- 异步 / 流水线 RL 的 staleness 补偿:把「滞后步数」映射成一个等效前缀长度,就能复用同一套 调度。
- 落地前要先补三样东西:(或每 token KL)的实测值、 调度形状的扫描、以及那条常数缩放对照臂。
参考文献
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.
相关精读
- 本篇把本专栏连续三十六期的主线再挪一格:此前三十五期回答的是「挑哪些 token、挑哪些轨迹、信用按哪套口径记账、信号被消费时旧了多少、数据分布离基座多远、整条响应有没有资格参与这次更新、策略容量会不会被优化动力学耗光、教师分布里哪些位置允许比较、事后经验除了改行为还能不能改行动之前的那次预测、参考模型的 KL 该从哪条边进组相对更新、教师的意见从哪条通道进 RL」,这一期问的是重要性比该覆盖多长的前缀——作用层从「信号长什么样」与「正则接在哪」转到「off-policy 校正的记账区间有多长,以及裁剪边界要不要跟着这个长度一起收紧」。
- 精读:Residual Advantage——让教师只重分信用,不改响应总分
- 精读:ZCPO——把参考 KL 从损失支搬进组内系数
- 精读:SRD——把事后回顾蒸成事前先见
- 精读:跨分词器 OPD——把对齐覆盖度补满反而掉点
- 精读:Mesh Learning——把 RLVR 的坍塌解释成策略容量的供需冲突
- 精读:CARM——把响应级掩码的判据从净位移换成双向漂移
- 精读:把 off-policy 专家数据 MCMC 投影成 on-policy 数据
- 精读:GMC-GRPO——把重要性比从逐条裁剪换成整组收缩
- 精读:SCAPO——用「扰动下不动」给 token 记一笔负账
- 精读:ARCUS——prompt 的选择也有一条弧
- 精读:把中间那一步的信号从模型里搬进环境——用沙箱回滚跑出免费过程奖励
- 精读:把特权信息从损失搬到采样器——多轮 agent 里自蒸馏为什么会崩
- 精读:OC-GRPO 与离上下文重要性校正
- 精读:不跑 RL,先把新奖励的结果预测出来
- 精读:给 token 级信用一个唯一解,然后把它求和掉
- 精读:把后训练配方本身当成果,再逐阶段对账
- 精读:STAR-E——按惊讶度给 token 重加权 advantage
- 精读:按梯度可估性给 token 分配蒸馏监督
- 精读:TrimSFT——按 logit 间隔剪掉 SFT 里的低信息 token
- 精读:ESFT 与端点 SFT 对中段推理链的裁剪
- 精读:把中间状态的价值估计整体消掉
- 精读:ActObs——把被 mask 掉的那 45% 观察 token 重新纳入损失
- 精读:SP³O——一条响应里只给三个位置价值监督
- 精读:教师引导的课程 RLVR——把解不出的题变成可解的题
- 精读:DataFlex-RL 与均匀采样的替代策略
- 精读:NGU 与 RL 里的马太效应
- 精读:按排序可分辨性做 RLVR 数据联合工程
- 精读:模型与外壳共演化时的同策略校正
- 精读:OPD-then-RL——顺序摆信号胜过同 step 混信号
- 精读:One-Shot OPD 与状态覆盖吸收率
- 精读:Compile by Training——把 LLM 降级为构建期依赖
- 精读:Terminal-Universe——轨迹反向造环境
- 精读:OPSA——无教师的同策略自适应
- 精读:SPADE——把优化对象从轨迹上移到生成器
- 精读:DART-SD——标注单元从轨迹换成状态图