TTPO:测试时策略优化 —— 把数学推理后训练从"标签依赖"解放出来
- 关联论文:2608.27448
- 作者:spark
- 更新:2026-08-28
一句话结论
TTPO(Test-Time Policy Optimization)提出一种不对称训练目标:让同一 prompt 下与多数投票伪标签一致的 rollout 走 On-Policy Self-Distillation(OPSD)蒸馏、不一致的 rollout 走 Grouped RL 惩罚,并在 token 级别再筛一遍 —— 在完全不使用 ground-truth 标签的前提下,把 Qwen3-1.7B 在数学推理基准上从 38.0% 推到 45.2%,且 +25.2% 到 +36.4% 的无思考模式提升。
解决什么真问题
数学推理后训练的两大主流方法——RL(如 GRPO)和 OPSD——都有一个共同前提:必须有 ground-truth 答案作为奖励或监督信号。这条前提阻碍了它们迁移到 test-time training(TTT)场景:在推理阶段,模型必须靠自身 rollout 互相监督,而没有任何外部答案可用。
最直觉的替代方案是用 majority-vote 伪标签——同一 prompt 采样多条 rollout,少数服从多数作为伪答案。但这条路已被证明脆弱:只要多数票本身就错,伪标签就把教师带歪,"一个错的票污染每一个 token"。
本文抓住这个失败模式的一个非对称性:与伪标签不一致的 rollout,无论多数票本身是否正确,大概率是错的。这意味着"一致性"本身就是一个比"多数票正确性"更可靠的信号。基于此观察,作者把"对就蒸馏、错就 RL"做成一个稳健的不对称目标,让伪标签即便频繁出错,两条更新分支依然有 ground。
核心方法
3.1 不对称目标(核心机制)
设 prompt $x$,采样 $N$ 条 rollout ${y_i}_{i=1}^N$,伪标签 $\hat{y} = \text{maj}(y_i)$。对每个 token 位置:
if rollout y_i 与 ŷ 一致:
→ 用 OPSD 目标做 on-policy 蒸馏(鼓励沿用现策略的高置信答案)
else:
→ 用 Grouped RL 目标做惩罚(把这条 rollout 当作失败样本)
直觉很清晰:一致的方向已经"对"了,再走蒸馏强化;不一致的方向已经"错"了,走 RL 把它的概率压下去。这种"agree → distill, disagree → penalize"的设计,把对伪标签的依赖从"答案必须对"放松到"分组结构稳定"。
3.2 Token 级二次筛选
不对称目标只解决 rollout 粒度的取舍,单个 token 上还要再过一次筛:
- OPSD 分支:对那些已经收敛(policy 在该 token 处的 top-1 与伪标签高度一致且高置信)的位置做 down-weight,避免在已经"会"的位置空转更新。
- RL 分支:对那些模型本身就自信(低熵)的错误做重点惩罚;高熵的不一致本身就不算 confident error,惩罚收益低。
两条分支都保持"well-grounded"——即便伪标签频繁错,更新也不会把模型拖偏。
3.3 Majority-Vote Routing 作为闭环
随着 TTPO 迭代,模型本身在变好,所以伪标签的质量也在变好——这是一个正向闭环:模型越好 → 多数票越准 → 蒸馏信号越干净 → 模型更好。majority-vote routing 在每次迭代里复用最新模型采样,逐步收紧自监督信号。
3.4 伪代码骨架
# x: prompt, π_θ: 当前策略, N: 采样条数
rollouts = [sample(π_θ, x) for _ in range(N)]
pseudo_label = majority_vote(rollouts)
loss = 0
for y_i in rollouts:
for t in y_i.tokens:
agrees = (y_i.answer == pseudo_label)
if agrees:
# OPSD 分支: 已收敛位置 down-weight
w = 1.0 - converged_confidence(π_θ, x, t)
loss += w * opsd_loss(π_θ, x, y_i[t])
else:
# RL 分支: 仅对 confident error 强惩罚
if entropy(π_θ, x, t) < eps:
loss += rl_penalty(π_θ, x, y_i[t])
update θ via ∇loss
⚠️ 注:上述伪代码是对原文机制的概念性还原,token 级的 down-weight 系数与 confident-error 阈值在原文中应有具体形式与默认值,原文未明确时勿当 API 引用。
关键实验与数据
论文声明的核心数字(来源:arxiv abstract):
| 指标 | 数值 |
|---|---|
| TTT 场景 Qwen3-1.7B 准确率提升 | 38.0% → 45.2%(+7.2 pp) |
| 无思考模式(no-thinking)提升幅度 | +25.2% 到 +36.4% |
| 与标签监督 OPSD 对齐度 | 5 个 competition-level benchmarks 上"matches"(原文未明确"matches"的统计定义,⚠️ 待 PDF 表格核验) |
| 跨任务泛化 | 报告"strong"(具体 benchmark 名录原文未明确) |
⚠️ 不确定处:abstract 没有给出每个 benchmark 的具体数字、与 GRPO/RLOO 等基线的逐项对比、AIME 24/25、Math-500 等常见数学基准是否纳入。v1 摘要口径,仅作核心结论参考;逐 benchmark 数字需 fetch PDF 主表。
亮点与局限
亮点
- 真正无标签:TTPO 是少有的明确声称"完全不使用 ground truth"且在数学推理上接近有标签 SOTA 的工作。它的贡献不在数值上限,而在解锁一种推理阶段自我提升的能力形态。
- 失败模式的对称性破缺——这是个干净的观察:与其追求"伪标签要正确",不如利用"不一致 ≈ 错"这个更弱的统计信号。
- Token 级二次筛选让两条更新分支都 well-grounded,避免了 RLAIF 类方法常见的 reward hacking 风险。
- 闭环自监督:模型变好 → 伪标签变好 → 更新更稳,这是 RLAIF 与 self-rewarding 路线里少见的显式闭环说明。
局限
- ⚠️ 多数票崩溃面未量化:当 N 较小时,多数票本身就是噪声;abstract 没给 N 的敏感性曲线,也未讨论"伪标签熵爆炸"时的失败行为。
- ⚠️ 跨域泛化仅声明"strong":是否在非数学(如代码、agent tool-use)任务上同样有效,原文未明确。
- 本质仍是 self-consistency 的对偶:与 Self-Consistency、Self-Refine、Self-Rewarding 同源,对超长 chain-of-thought 或非 majority-friendly 任务(如开放生成)的适用性待验证。
- 依赖 on-policy 采样:单次迭代 N 条 rollout 的成本对长 CoT 任务很贵,工程门槛高。
对工程落地的启发
- TTT 流水线模板:把"采样 → 多数票 → 不对称更新"做成离线 pipeline,挂在推理服务旁作为"夜间自训练",是数学推理模型持续提升的可行路径。
- 失败监控指标:监控"rollout-vs-pseudo-label 一致率"作为在线信号,一致率骤降通常意味着多数票本身已崩溃,应停止训练。
- 与外部 RLHF 的混合:可作为 RLHF 完成后的 fine-tune 阶段,节约人工标注的边际收益。
- 代码已开源(https://github.com/ZJU-REAL/TTPO),落地门槛低;项目页 https://zju-real.github.io/TTPO 。
与同方向工作的关系
- vs Self-Consistency / Self-Refine:前者是推理时 ensemble,后者是推理时 refine;TTPO 把这两个范式的"信号"升级为"训练目标"。
- vs RLAIF / Self-Rewarding LLM:都依赖模型自评,但 RLAIF 用 AI feedback 替代人类偏好;TTPO 直接用结构化的一致性信号,避免 reward model 的训练与失效问题。
- vs GRPO / OPSD 的无标签扩展:TTPO 不试图改造 GRPO/OPSD 的目标函数,而是在其之上加一个"分组路由",是更轻量的工程改造。
- vs Test-Time Training(TTT)传统路线:传统 TTT 仍用监督信号(自监督重建、伪标签分类);TTPO 是少有的"全程无监督 TTT"。
适合谁读
- 做数学推理 / 代码生成后训练的研究者:会关心 OPSD 与 GRPO 的兼容、token 级权重的具体形式。
- LLM 平台 / 推理服务工程师:关心"无标签自训练 pipeline"能否挂到生产推理栈上做持续提升。
- RLHF / RLAIF 实践者:会关心 self-supervision 信号强度 vs reward model 的取舍。
- 一般 LLM 研究者:作为"无标签后训练"范式的一个干净案例,对方法学有借鉴价值。
来源: - arxiv abstract:https://arxiv.org/abs/2608.27448(web_fetch,2026-08-28) - paper_card:/shared/research-kb/organized/paper_cards/1120-2608-27448.md - 项目页:https://zju-real.github.io/TTPO - 代码:https://github.com/ZJU-REAL/TTPO
不确定处:见正文 ⚠️ 标注。