多轮搜索智能体:让模型自己给"哪一步有用"打分的 LOTAPO
你有没有过这种体验——让一个 RAG 智能体去查"2023 年图灵奖得主的研究方向",它吭哧吭哧搜了 3 轮、丢给你一个错答案。问题出在哪?是说搜不到"图灵奖"那次检索没用,还是说搜到之后没整合好?传统的强化学习只会在最后告诉你"答错了"——所有中间动作被一锅端地惩罚或奖励。
这种功劳该分给谁的问题,叫信用分配(credit assignment)。在多轮搜索里,它比单轮问答难得多:早期搜到的那条证据,可能要等后面好几轮一起拼起来才显出价值。你单看那一轮可能觉得它没用,但其实它非常关键。
最近读到一篇挺聪明的论文 LOTAPO: Leave-One-Turn Attribution for Self-Generated Process Rewards in Multi-Turn Search Reasoning(Qiang Zhu、Jiajun Wu、Longyi Wang,2026-07-15),核心思路是:别请外部裁判,让模型自己回头算"如果把这一轮删掉,我答对题目的把握会掉多少”。这个"掉多少",就是这一轮的功劳值。
更妙的是,它不需要训练额外的奖励模型、教师、验证器,也不需要 LLM-as-a-Judge,纯靠当前策略本身反事实推一遍就行。在 7 个知识密集型问答数据集上,平均 EM 拿到 0.326,把当前最强的 step-reward baseline IGPO(0.273)甩开了 0.053,相对提升 19.4%。
我的第一反应是:这事真能 work?毕竟"删一轮"和"应该删哪一轮"听起来都很暴力。但看完消融和 case 之后我觉得,这篇论文最值钱的地方不在于"LOTAPO 比 IGPO 高 5 个点",而在于它把"信用分配"这件事从前向(forward)扭到了回溯(backward)这条更靠谱的思路上。
论文速览
- 标题:LOTAPO: Leave-One-Turn Attribution for Self-Generated Process Rewards in Multi-Turn Search Reasoning
- 作者:Qiang Zhu、Jiajun Wu、Longyi Wang
- 机构:(见 arXiv 摘要页,arXiv 上未单独标注)
- 链接:https://arxiv.org/abs/2607.13501
- 发表日期:2026-07-15(v1),2026-07-16(v2)
- 篇幅:20 页,5 张主图
问题:终端奖励为什么不够用?
多轮搜索智能体的轨迹长这样:
每一轮 u_t(搜索动作)+ o_t(检索观察)合起来叫一次"搜索交互" e_{i,t} = (u_t, o_t)。
传统 RL(以 GRPO 为代表)只给轨迹末尾一个 F1 奖励,整条轨迹的所有 token 都用同一个 advantage。问题立刻就来了:
情况 A:成功轨迹里混着废动作。 - 智能体虽然答对了,但中间可能搜了两次没用的东西。 - 用统一奖励更新,相当于告诉策略"那两个废动作也是好的",策略就学会"瞎搜也能赢"。
情况 B:失败轨迹里有"被埋没的关键证据"。 - 智能体搜到了核心证据,但后面整合推理翻车了,最终答错。 - 统一惩罚相当于告诉策略"那一轮关键检索也是错的",下次模型就学会"别搜了",证据来源反而被掐死。
更恶心的是多跳场景:早期搜到的一条证据,可能要等第 2、3 轮搜到互补信息后,组合起来才能用。在第 1 轮刚搜完时,它的"局部价值"可能接近零甚至为负——但放在完整轨迹里它至关重要。
所以仅靠"答对/答错"这种 outcome-only 信号,根本无法告诉策略"哪一轮有用"。
现有方案的三条路,各有各的坑
研究者们其实已经摸了几条路,LOTAPO 论文把它们归成三类:
1. 外部过程监督(reward model / verifier / LLM-as-a-Judge) - 训练一个额外的奖励模型或判别器,给每一轮打 step-level 奖励。 - 问题:要再训一个模型、推理成本翻倍、且评估器一旦训在旧数据/旧策略上,跟当前策略错位就废了一半。
2. 策略派生的 forward attribution(IGPO、TIPS 等) - 不训外部模型,直接用当前策略估计"加入这一步后,gold answer 似然涨了多少": $\(s(y^{\star}\mid c_{\leq t}) - s(y^{\star}\mid c_{<t})\)$ - 问题:只看当前和前一步之间的局部差。在多跳搜索里,前向看是"现在似然没涨" = 没贡献;但向后放到完整轨迹里才发现它贡献巨大(论文 Case D.1 给的 Green Eggs and Ham 例子就是这个情况)。
3. 不区分轮次的 outcome-only(Search-R1、R1-Searcher) - 就是 GRPO 套壳。 - 问题:上面说的 A、B 两个痛点全都存在。
LOTAPO 走的是第二条路的一个变体——但把 forward 换成了 backward。
LOTAPO 的核心思路:Leave-One-Turn 之后看似然掉了多少
一句话核心
想知道第 t 轮搜得到底有没有用?把第 t 轮的搜索动作和检索结果整个换成
[DELETE],再让当前策略在剩下的完整轨迹上算一下"答对 gold answer 的平均 log-likelihood”。这个 likelihood 跌了多少,就是第 t 轮的功劳。
数学表达很简洁:
其中 \(c_i^{\mathrm{full}}\) 是完整 pre-answer 上下文(包含所有搜索交互),\(c_{i,\setminus t}\) 是把第 t 轮 \((u_t, o_t)\) 整体替换成 [DELETE]、其他轮次原封不动的反事实上下文,\(S_{\theta}\) 是当前策略对 gold answer 的平均 token log-likelihood。
- \(\Delta_{i,t} > 0\):删掉之后答对的把握掉了 → 这一轮是helpful。
- \(\Delta_{i,t} < 0\):删掉之后反而更稳 → 这一轮有害。
- \(\Delta_{i,t} \approx 0\):删不删无所谓 → 冗余。
跟 forward attribution 的关键区别
| 维度 | Forward(如 IGPO) | Backward(LOTAPO) |
|---|---|---|
| 评估上下文 | 只看到 t 及之前 | 看到完整轨迹 |
| 早期证据 | 可能被低估 | 能识别延迟价值 |
| 适合场景 | 推理进展近似单调的链条 | 多跳、证据互补的搜索 |
论文里有个特别直观的例子(Case D.1):
- 问题:Green Eggs and Ham 的主角是谁?Gold answer: Sam-I-am
- 第一轮搜到直接相关证据,但加入后当前似然反而下降了(policy 自己都没意识到这条证据有用)。
- Forward attribution 据此给了 \(-1.858\) 的负分。
- LOTAPO 在完整轨迹里回算,给了 \(+1.556\) 的正分。
- 哪一个对?答案显然是 LOTAPO——因为它最终能正确答出 Sam-I-am。
这就是 backward 的关键:评估发生在"信息真正起作用的下游",而不是"信息刚进来时”。
实现上的小心思
论文用了一个工程上的小技巧:把同一个 rollout batch 里的"完整上下文"和所有 "leave-one-turn 反事实上下文”展平成一个 batch,追加同一个 gold answer 模板,一次前向传播就算出所有 \(\Delta_{i,t}\)。这避免了循环重复 forward 的成本。
训练代价也只多了一点点:Search-R1 191s/step,IGPO 196s/step,LOTAPO 198s/step——比 Search-R1 慢 3.7%,比 IGPO 慢 1%,几乎可以忽略。
配套机制:Sign-Consistency Gating
光有 \(\Delta_{i,t}\) 还不直接喂给策略。LOTAPO 还要做两件事:
1. Robust scaling + 组内标准化
为了避免单个组里出现极端值干扰,先用组内非零 \(|\Delta_{j,s}|\) 的中位数做尺度 \(\tau_g\),然后用 \(\tanh\) 压一下,再做 z-score 标准化。
这一步其实暗藏一个"陷阱":标准化可能反转 \(\Delta_{i,t}\) 的符号。
2. Sign-consistency gating(核心补丁)
举个反例:某个 \(\Delta_{i,t}\) 原始是负的(有害动作),但它"比组里其他人负得少",于是标准化后变成正分。这相当于把一个有害动作当有益动作去强化,方向直接反了。
Gating 规则很简单:
只有原始归因和标准化分数同号才放行,方向不一致时直接置零。这相当于给"方向错了的过程优势"按了紧急刹车。
消融里这个 gating 单独抽出来能贡献 4 个点的提升(0.285 → 0.326),可见"过滤掉方向错误的强化信号"是 LOTAPO 真正吃到的红利里相当大的一块。
训练目标:不动 GRPO 的结构,只改 advantage
LOTAPO 的策略更新直接套用 GRPO 的 clipped surrogate:
Token-level advantage 是这么分的:
- 第 t 个搜索轮里的 token:\(A_i^{\mathrm{out}} + \lambda \cdot A_{i,t}^{\mathrm{proc}}\)
- 最终答案轮的 token:只用 \(A_i^{\mathrm{out}}\)
- 检索观察(环境生成):不参与损失
也就是说,过程奖励只施加在策略自己生成的搜索动作 token 上,检索结果不动。\(\lambda\) 控制过程优势权重,论文里设的 0.5。
这个设计的好处是:你不需要重新写优化器,GRPO 的一切超参(clip range、KL 系数、batch size)原样用。
实验:7 个 QA 数据集,19.4% 相对提升
主实验(Table 1)
基础模型:Qwen2.5-3B-Instruct。检索语料:2018 English Wikipedia,E5 密集检索,每次取 top-3 段落,最多 3 轮搜索。训练 200 steps,8×A100,global batch 512,每题采样 5 个 rollout。
| Method | NQ | TQ | HotpotQA | 2Wiki | MuSiQue | Bamboogle | PopQA | Avg. |
|---|---|---|---|---|---|---|---|---|
| Direct Inference | 0.100 | 0.224 | 0.138 | 0.200 | 0.034 | 0.036 | 0.064 | 0.114 |
| CoT | 0.022 | 0.024 | 0.020 | 0.018 | 0.018 | 0.102 | 0.046 | 0.036 |
| Search-o1 | 0.224 | 0.368 | 0.204 | 0.180 | 0.090 | 0.282 | 0.154 | 0.215 |
| RAG | 0.328 | 0.424 | 0.234 | 0.186 | 0.078 | 0.120 | 0.178 | 0.221 |
| Search-R1-base | 0.342 | 0.424 | 0.288 | 0.246 | 0.110 | 0.196 | 0.202 | 0.258 |
| Search-R1-instruct | 0.356 | 0.454 | 0.268 | 0.238 | 0.130 | 0.208 | 0.184 | 0.263 |
| R1-Searcher | 0.274 | 0.428 | 0.234 | 0.202 | 0.094 | 0.212 | 0.114 | 0.223 |
| StepSearch-base | 0.312 | 0.460 | 0.258 | 0.152 | 0.134 | 0.188 | 0.140 | 0.235 |
| StepSearch-instruct | 0.286 | 0.424 | 0.262 | 0.146 | 0.130 | 0.174 | 0.120 | 0.220 |
| IGPO | 0.358 | 0.472 | 0.308 | 0.244 | 0.136 | 0.252 | 0.144 | 0.273 |
| LOTAPO | 0.422 | 0.506 | 0.338 | 0.320 | 0.188 | 0.304 | 0.206 | 0.326 |
几个值得拎出来说的点:
- 平均 0.326 vs IGPO 0.273,绝对 +0.053,相对 +19.4%。这个差距在 7 个数据集全部 7 个都是正的,没有任何反例。
- 多跳数据集收益最大:HotpotQA +0.030、2Wiki +0.076、MuSiQue +0.052。这跟 LOTAPO 的 backward 假设高度一致——多跳里"早期证据需要等后面"的现象最严重。
- OOD 泛化:MuSiQue + Bamboogle + PopQA 三个训练时没见过的数据集,LOTAPO 平均 0.233,IGPO 0.177,差距 5.6 个点。说明这种回溯归因信号并没有"过拟合到训练集的多跳套路"上。
- CoT 几乎废了:平均 0.036,比直接答还差。这其实也反过来说明,没有外部检索,模型在知识密集型任务上就是裸奔。
消融:backward + gating 各自贡献多少?
| 变体 | NQ | TQ | HotpotQA | 2Wiki | MuSiQue | Bamboogle | PopQA | Avg. |
|---|---|---|---|---|---|---|---|---|
| IGPO w/o Gating | 0.358 | 0.472 | 0.308 | 0.244 | 0.136 | 0.252 | 0.144 | 0.273 |
| IGPO w/ Gating | 0.348 | 0.466 | 0.296 | 0.264 | 0.160 | 0.260 | 0.182 | 0.282 |
| LOTAPO w/o Gating | 0.362 | 0.470 | 0.342 | 0.278 | 0.176 | 0.200 | 0.170 | 0.285 |
| LOTAPO w/ Gating | 0.422 | 0.506 | 0.338 | 0.320 | 0.188 | 0.304 | 0.206 | 0.326 |
- 单换 backward(不加 gating):0.273 → 0.285,+0.012
- 在 LOTAPO 上加 gating:0.285 → 0.326,+0.041
- 在 IGPO 上加 gating:0.273 → 0.282,+0.009
这个消融结果让我有点意外:
- Backward 单独贡献不算大(1.2 个点)。Backward 主要在多跳上见效(2Wiki +0.034、HotpotQA +0.034),但在其他数据集上甚至比 IGPO 还低一点(NQ 0.362 vs 0.358、TQ 0.470 vs 0.472 几乎平手)。
- Gating 的红利主要给 backward 用。给 forward 加上只多 0.9 个点,给 backward 加上能多 4.1 个点。这合理吗?我自己的解读是:forward 本身局部信号相对稳定,标准化不容易把方向扭反,所以 gating 收益小;backward 涉及完整轨迹,\(\Delta_{i,t}\) 分布更"长尾",标准化更可能反转符号,gating 收益自然就大。
所以更准确的说法是:backward 提供了"完整轨迹上更准的归因",gating 把"标准化翻转方向"的那部分脏信号挡住,两者配合才把 LOTAPO 推上 0.326。
训练动态
几个观察(论文 Figure 3、4):
- LOTAPO 训练 F1 在后期稳定在 ~0.57,IGPO 和 Search-R1 卡在 0.47-0.48,接近 10 个点的训练 F1 优势。
- Val EM 在前 50 步就冲起来了,比 IGPO、Search-R1 都快一截。说明回溯信号在训练早期就给了一个更稳的优化方向。
- 正归因比例单调上升(LOTAPO Positive 0.25 → 0.35),负归因比例单调下降(LOTAPO Negative 0.33 → 0.27)。这其实是个有意思的"自举"现象:随着训练推进,模型自己觉得"有用"的动作越来越多,"有害"的越来越少——因为奖励结构让模型学到了保留 helpful、舍弃 harmful。
- 相比之下 IGPO 的正归因比例增长更慢,负归因到 200 步还徘徊在 0.29。这反过来说 IGPO 的 forward 信号没那么干净。
一些方法架构图
下面这张是论文的 Figure 1,把 LOTAPO 整个 pipeline 拆成 4 块:

读图小贴士:左上角是 rollout,生成完整轨迹;中间是 backward attribution 的核心——把每一轮 \((u_t, o_t)\) 整体换成 [DELETE],喂给同一个当前策略算 gold answer log-likelihood;右上角是 group-relative gating,看原始 \(\Delta\) 和标准化 \(\tilde{z}\) 是否同号;下半部分把 gate 后的过程 advantage 分配到 search tokens 上,最终答案轮只用 outcome advantage。
训练曲线
Figure 2 和 Figure 3 把"过程奖励到底有没有让模型更快、更高地学到东西"这件事讲清楚了。


注意 F1 那张图:LOTAPO 跟 IGPO 的差距在第 50 步就拉开了,而且拉开之后没有再合拢。这是过程奖励一个非常正面的信号——它不是短暂的"早期优势",而是持续地把策略往正确的方向推。
归因结构演化

这张图其实回答了一个我一开始很怀疑的问题:backward 归因会不会让模型"自欺欺人"——把本来就是噪声的差异解读成有用的信号?
答案看起来是不会的。如果 LOTAPO 是自欺欺人,训练久了应该 Positive / Negative 比例趋于混乱或者相互抵消。但实际上 Positive 单调上升、Negative 单调下降,说明 backward 归因在引导策略走向一个更稀疏、更精准的搜索行为。
训练成本

LOTAPO 比 Search-R1 多 7 秒(+3.7%),比 IGPO 多 2 秒(+1.0%)。多出来的就是"展平所有 leave-one-turn 反事实上下文 + 一次 batch forward 算 \(\Delta_{i,t}\)"的代价。这个开销在工业界绝对可以接受——尤其比起"训练一个外部奖励模型"的成本,几乎可以忽略。
我的判断:这篇论文到底怎么样?
亮点
- 思路非常干净。"删除这一轮、看似然掉多少"——这个动作在直觉上比 forward 评估更接近"事后诸葛亮",也更接近人类审稿时对证据价值的判断。
- 完全自包含。不要 reward model、不要 teacher、不要 verifier、不要 LLM-as-a-Judge。这事在工程上意义很大——你部署 RAG Agent 时少维护一个外部模型。
- 消融设计有诚意。把 backward 和 gating 拆开测,分别给 forward 和 backward 加 gating,看到"backward + gating"的组合收益远超两者单独加,证据链清楚。
- OOD 泛化实在。MuSiQue / Bamboogle / PopQA 上 0.233 vs IGPO 0.177,说明这不是"过拟合训练集的多跳套路"。
一些保留意见
-
依赖 gold answer。\(\Delta_{i,t}\) 必须知道标准答案才能算。在真实部署里,用户问的开放性问题没 gold answer。论文在 Limitations 里也承认了这一点,并提到未来要做"无 gold 答案"版本。坦白讲这一步不简单——没有 gold answer,"对答案的似然"这个量就不存在了,需要换成别的代理量(比如对自检问题的似然、检索证据之间的互信息等)。
-
只跑了 Qwen2.5-3B-Instruct + 3 轮搜索 + Wikipedia 检索。这个 setting 比较"干净",但离真实工业场景差得远:
- 真实检索是 web search(噪声大得多、API 限速、成本高)
- 真实 Agent 可能搜 5-10 轮
-
真实场景里 gold answer 不存在 这些都会让 leave-one-turn 的反事实计算量爆炸式增长。
-
未建模多轮替换的交互。如果两轮之间有强互补性,单独删掉任何一轮可能都显得"无害"(似然变化不大),但同时删掉就会发现它们缺一不可。论文承认了这一点,但还没解。直觉上可以用二阶 leave-two-out 来估计,但成本又会翻几倍。
-
3% 的训练成本是不是被低估了。backward 要算 N 个反事实上下文(N = 搜索轮数),在 3 轮 setting 下还好。如果搜 10 轮,forward 一次 vs backward 10 次,差距会从 +3.7% 拉大到 +37%。这个成本曲线值得在后续 paper 里画一下。
-
case study 只有两个。Case D.1(Green Eggs and Ham)和 Case D.2(Charlie Bucket 演员)确实很有说服力,但样本量太少。我自己读下来更希望看到一组失败的 case——LOTAPO 也会判断错的反事实归因是什么样的?这对理解方法的盲区很有帮助。
跟同期工作比起来
- vs IGPO:IGPO 是 forward attribution 的代表。LOTAPO 在同样不引入外部模型的前提下换成了 backward,并且加了 sign-consistency gating,多跳场景提升明显。IGPO 在简单问答上还是能打的,但 OOD 劣势大。
- vs StepSearch:StepSearch 用 step-level 监督信号(额外的标注),LOTAPO 完全自生成,归因更便宜、可扩展性更好。
- vs 外部 process reward model(PRM)系列:PRM 类方法(Math-Shepherd、PRM800K 那一脉)需要训练奖励模型,推理时要额外跑一遍,部署成本高。LOTAPO 用"策略自己的反事实"替代 PRM,是条更经济的路子——但能不能泛化到数学、代码等领域还未知。
- vs Search-R1 / R1-Searcher:纯 outcome-reward RL。LOTAPO 在它们的框架上加了过程奖励,没有改 GRPO 的结构,兼容性很好。
对工程实践的启发
- 多跳 / 多工具 Agent 调优时优先考虑 backward 归因。如果你在做一个搜 3 轮以上的 RAG Agent,不要先上 outcome-only RL——信用分配信号太弱。先试试 LOTAPO 这种 backward 过程奖励,大概率能少走几个月的弯路。
- Sign-consistency gating 是个通用补丁。即使你暂时不上 backward 归因,把组内标准化的过程优势做 sign-check 这件事,几乎零成本、不会让事情变差(IGPO 加 gating 也涨了 0.9 个点)。
- 训练成本可控。LOTAPO 比 Search-R1 只慢 3.7%,这个幅度在工程上完全可以接受,不需要为这点性能放弃 5 个点的质量提升。
- 多轮 setting 翻 3 倍以上时要重新评估。这篇 paper 的所有实验都在 3 轮以内。如果你的 Agent 跑 10 轮以上,先在内部数据上做个小规模 pilot,别直接照搬。
一句话收尾
LOTAPO 让我重新审视了一个很朴素的道理——“这一步有没有用",有时候只能"删了之后回头看"才能知道,而不是"加进来往前看”。这个 backward 的视角,配合一个简单的 sign-consistency gating,就把多轮搜索的信用分配难题往前推了一大步。
但它不是银弹。gold answer 依赖、训练成本随轮数线性增长、没建模多轮交互——这些是真正落地时绕不开的坎。如果作者下一版能给出不依赖 gold answer 的变体和>5 轮 setting 的成本-性能曲线,我会更愿意把它放进生产工具箱。
一句话总结
LOTAPO 用"删一轮、看看似然掉多少"这个 backward 反事实动作替代 forward attribution,配合 sign-consistency gating,在 7 个 QA 数据集上比最强 step-reward baseline IGPO 提升 19.4%,且训练成本只增加 3.7%。论文干净、自包含、消融有诚意,但依赖 gold answer、只验证了 3 轮 setting,距离真正工业落地还有几步要走。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新 AI 前沿,关注我。