我第一次动手复现这篇论文时,结论是反的:让「集中奖励」只喂给前几个关键步,它反而比「均匀撒到每一步」学得快。我差点就把「集中更好」写进笔记。直到把训练步数从 120 拉到 400 才看到反转——集中式飞快学会它看得见的那几步,然后永远停在那里;均匀式慢半拍,却一步步把整条链补齐。我撞上的不是 bug,是这篇论文最核心的东西:在一条「缺一不可」的任务链上,你奖励了哪几步是次要的,你有没有覆盖到整条链才是主要的。
第二次翻车更隐蔽。我让验证器「按前缀」暴露步骤(前 50% 的步可见),交叉点跑到了 0.5;改成论文里的「每步独立随机暴露」后,交叉点回到 0.8 附近。差别的根源是一道几何级数——这也是本文后面会让你拿笔算完、我用蒙特卡洛核验过的地方。
今天聊的是多轮工具 Agent 训练里最老、也最容易答错的问题:一局 rollout 只在最后拿到一个 0/1,这一份奖励该怎么分到中间的十几步上? 主流做法是想办法「对准」——训一个 turn-level critic、上个过程奖励模型(PRM)、按每步进度加权,潜台词都是「把奖励放到真正立功的那一步」。Zhou et al. 这篇 Coverage, Not Targeting(arXiv:2609.02417,22 页 7 图 8 表)用一组控制得极干净的实验说:在终态验证器主导的今天,这个「对准」轴是二阶的;一阶的是「覆盖」。
站内前置:强化学习为什么需要「奖励 × log 概率」、GRPO 的组归一化优势从哪来,见《为什么大模型需要强化学习》和《PPO 的训练循环》;τ-bench 系评测的全景见《大模型 Benchmark 地图》;工具调用为什么是「目标函数的影子」见《模型为什么会伸手》。这篇正好接住《Agent 工程七问》里挂着的那个开放问题——「五十步的任务最后只给一个 0/1,哪一步立了功没人知道」。
名词速查
| 术语 | 一句话解释 |
|---|---|
| rollout | 一局完整的多轮轨迹:Agent 调一串工具,最后由程序判分 |
| 信用分配(credit assignment) | 终局那一个奖励,该算到中间哪些步头上 |
| 终态验证器(terminal verifier) | 只看最终世界状态(数据库/文件系统/API 台账)给一个分,过程不看 |
| 硬前置链(causal chain) | 一串「缺一不可」的工具调用:不先查到订单,就没法换货,长度记为 |
| GRPO | DeepSeekMath 提出的策略梯度变体:用一组 rollout 的均值/方差把奖励归一化成优势 ,省掉 critic |
| 验证器信息密度:一条 步因果链里,验证器能独立判出对错的步数 占比 | |
| 参与预算 | 一份奖励实际「撒」到了几个步上(participation ratio) |
| write-fraction | 一条链里真正改变世界状态的「写」步占比;「读」步不改状态 |
| shared-rollout | 几个对照臂共用同一批 rollout、同一个优化器,只改奖励形状,从而隔离变量 |
| shuffled control | 把「按进度集中」的权重打乱到随机步上:浓度不变、只抽掉「对准」信息 |
| reward-to-go | 经典延迟奖励解法:某步拿它之后所有奖励之和,天然把终局信号往前铺 |
| τ²-bench / BFCL V3 | 两个多轮工具 Agent 基准:前者查数据库终态,后者每轮查后端状态 |
一句话根本约束
多轮 Agent 的 per-step 奖励之所以该「均匀铺满」而不是「对准关键步」,是因为一个物理事实:终态验证器只能观测到改变世界状态的步(实测 ),而任务成功依赖一条 的硬前置「读链」——策略梯度要推动整条 AND 链,但验证器供不起覆盖全链的信号。
这句话是可反驳的:一旦约束消失——验证器能独立、逐步地判出每一步对错()——结论就当场反转,那时「对准」反而赢。论文在合成环境里测出反转点在 ,这正是「可反驳」的价值:它不是「均匀大法好」的信条,而是一张有坐标的相位图。
反事实崩点:换成最朴素的做法——把奖励按「进度」集中到看起来立功的那一步。它先崩在哪?硬前置链是 AND 逻辑,第一个拿不到梯度的前置步会停在随机水平( 选 1,正确率 ),整条链从那里截断,后面的步做得再对也不计分。崩多少量级?真实 Agent 是 ,,离反转点 0.81 差 5.4 倍;我在自己的玩具里测出 时集中式只到 0.39、均匀式 0.66。
共同祖先:这是时序信用分配这个 1960 年代就有的老问题(Minsky)的又一次实例化——reward-to-go、资格迹、Ng et al. 1999 的 potential-based shaping、RUDDER 的回报分解,都在解「延迟奖励怎么往前传」。这篇的增量不是又造一个分配器,而是把「往哪传(targeting)」和「传多广(coverage)」两根轴用一个 shuffled 对照掰开,证明在 的区间里,后者一阶、前者二阶。用本站那副 AI 原理透镜看,它同时踩在「目标函数即命运」(你怎么度量、就得到什么;奖励形状决定你实际学到什么)和那条工程影子原理「瓶颈塑造设计」上——这里最稀缺的资源不是模型算力,是可观测的 per-step 信号,奖励该怎么塑形正是被这个稀缺量逼出来的。
先把场景摆具体:一次换货 rollout 长什么样
抽象之前先给最小具体例子。τ²-bench retail 里一道典型的「换货」题,Agent 要做的事是一条有硬数据依赖的链:
查用户(get_user_details) → 查订单(get_order_details) → 找替换商品(find_product)
→ 再读几条库存/政策 → 最后 exchange_item 一次写入数据库
关键点:前面那一串全是「读」,不改数据库;只有最后一步是「写」。 终态验证器比对的是数据库字段变化,于是它能看到进度的,只有最后那一次写入。你没法跳过查订单直接换货——论文做了静态数据流检查:成功轨迹里 100% 的终态写入参数(order id、product id)都来自前面的「读」返回值,76 个被写入消耗的标识里 94.7% 压根不在用户指令里。也就是说,这些「读」不是凑数,是物理上不可省的前置。
这就是矛盾的全部来源:因果结构是摊开的(5–8 步),可观测信号却是缩成一点的(1 步)。
flowchart TD
A["读用户"] --> B["查订单"] --> C["找替换商品"] --> D["更多前置读"] --> E["终态写入:唯一改变 DB 状态"]
E --> V{"终态验证器<br/>只在这里产出信号,k=1"}
V --> U["uniform 均匀:信号摊回每一步,整条 AND 链都有梯度"]
V --> T["per-turn 集中:压到进度步,前置读拿到 0,链在最前面截断"]
V --> S["shuffled:压到随机步,结果和 per-turn 一样差"]
四种「信用几何」,以及为什么这个实验是干净的
论文在 τ²-bench retail 的纯数据库任务上,用 Qwen3-14B + GRPO + LoRA 对比四种分配方式。真正讲究的是它的对照设计——四个臂共用同一批 base-policy rollout、同一个优化器,连组归一化后的终端优势 都是同一个,只改「这份 怎么摊到各步」:
| 臂 | 怎么分配同一份 | 直觉里的角色 | 缺了它会怎样(坏掉列) |
|---|---|---|---|
| binary | 粗糙的 0/1 结果分 | 业界默认 | 整组都失败时优势方差为 0,没有梯度可学 |
| uniform | 连续的字段进度分, 摊给每一步 | GRPO 标准动作 | 链上某些步这一版没被推动 |
| per-turn | 按各步进度占比 集中, | 「聪明地对准」 | 没进度的前置读拿 0,链覆盖不全 |
| shuffled | 把 per-turn 的权重打乱到随机步 | 对照组 | ——它专门用来抽掉「对准」信息 |
两个细节让结论可信:其一,全局梯度范数裁剪(clip=1.0)在每个臂每个 epoch 都打满,于是各臂更新幅度相同、只差更新方向;其二,per-turn 其实比 uniform 多看到了信息(它知道进度发生在哪一步),所以这个对照天然偏向 per-turn——它还输,才说明问题。
必须诚实标注一个边界:这种「共用 rollout」的干净隔离只在第一次策略更新成立。一旦训练继续,各臂会采到各自的数据,几何效应就和数据采集混在一起。所以论文把「单次更新对比」作为研究对象,长程训练动力学明确划在范围外。这是克制,不是疏漏。
第一层结论:稠密是必要的,但还不充分
先看密度轴。uniform 相对 binary,在留出集的 assert-support 指标上 +0.079(5 个 seed 里 4 个为正,单尾 Wilcoxon ),官方成功率 +5.2pp。更刺眼的是相对「未训练 base」:binary 奖励在 5 个 seed 里有 4 个把策略训得更差,uniform 则在 4/5 上变好(+0.041)。稀疏的结果分不是「弱一点」,是在匹配条件下净有害。
但稠密不是万能。把同一份稠密优势按进度集中(per-turn),它在每个 seed 上都输给 uniform(均值 −0.053,0/5 为正;官方成功率 −0.063)。还有个漂亮的小结果:把稠密分三档离散化(0 / 0.5 / 1)能保留 96% 的收益(+0.076,5/5)。收益来自「整组全灭时仍然存在非退化梯度」,不来自奖励分辨率有多细。
第二层结论:是「集中度」有害,不是「对准」错了
这是全文最反直觉、也最有方法论价值的一着。如果 per-turn 输是因为它「对准了错误的步」,那把奖励打到随机步上应该更糟。结果没有:shuffled 和 per-turn 落在彼此的噪声里(shuffled − per-turn = +0.014,95% CI ),俩都远低于 uniform。
翻译成人话:抽掉「哪一步真有进度」这条信息,代价是零。 这直接否证了「per-turn 是因为瞄得不够准才输」——要是瞄准则能救,打乱应该显著更差。在 时,一个孤立的奖励尖峰无论落在哪里,都只覆盖了 5–8 个因果步里的 1 个,「落在哪」是在几个同样不完整的覆盖里做二阶选择,「是不是只给一个尖峰」才是一阶的。
这个 matched-concentration shuffled control 是论文留给社区的一件工具:以后谁声称「我的 per-turn 奖励因为瞄得准所以涨点」,都该加一个「浓度相同、打到随机步」的对照;过不了这一关,涨点就可能只是覆盖广度或有效步长带来的,跟「对准」无关。
机制:两笔你能拿笔算完的账
实验结果到上面还是「论文这么说」。这部分是我自己动手的地方——我按论文附录 C 的规格写了个最小合成环境(两层 MLP 共享策略、 步、GRPO、硬前置链),把机制算到自己信服。论文没有放代码,所以下面是我自己的精简复现,数字是我跑出来的,不是论文原数。
账一: 时,「一次更新覆盖全链」的概率恒等于零
合成环境里 步,其中 步因果必要,一份集中奖励只够撒到 个步上。问:这一次更新,整条 链每一步都拿到非零梯度的概率是多少?
这是个不放回抽样:从 步里选 步给奖励,要正好把 个因果步全包进去。记 为「整条链全覆盖」的概率:
当预算 比链长 小的时候,上面那个组合数根本不存在,概率恒为零,不是「小」,是零。脚本核验():
C=8,k=1: P(全覆盖)=0.0000 期望覆盖因果步比例=0.125
C=8,k=3: P(全覆盖)=0.0000 期望覆盖因果步比例=0.375
C=3,k=3: P(全覆盖)=0.0045 期望覆盖因果步比例=1.000
C=6,k=3: P(全覆盖)=0.0000 期望覆盖因果步比例=0.500
注意 那行:即便预算恰好等于链长,随机撒中全链也只有 0.0045,因为还要赌它别撒到那 个非因果步上。而真实 Agent 是 ——单次更新在结构上不可能覆盖整条链,跟你瞄得多准没有任何关系。 uniform 为什么没这问题?它把信号给全部 步, 个因果步一个不落,覆盖概率恒为 1。
账二:为什么反转点偏偏在 0.8 这么高——一道几何级数
第二笔账解释「验证器得看多全,集中才开始划算」。假设每个因果步独立地以概率 (就是 )被验证器看对,取链长 (和下面第二条扫描一致)。硬前置链会在第一个没被看到的步处截断,那么从链头连续可见的长度 满足 ,于是可打通的链占比期望是
这是个等比级数,我用 20 万次蒙特卡洛核验,解析解和模拟逐位相等:
q=0.25: 解析(1/C)Σq^j=0.033 蒙特卡洛=0.033
q=0.50: 解析=0.100 蒙特卡洛=0.100
q=0.75: 解析=0.283 蒙特卡洛=0.283
q=0.80: 解析=0.357 蒙特卡洛=0.357
q=0.90: 解析=0.586 蒙特卡洛=0.586
看明白这张表,就看懂了反转点为什么高得反直觉:每步看对 75%,听着很靠谱,可一条 AND 链只能打通 28%——因为链是被「第一个盲点」卡死的,短板以几何级数放大。要追上一个「覆盖全链、但每步信号弱」的 uniform 基线, 得到 0.8 往上。这正是论文实测交叉点 (状态依赖链;独立步链约 0.95)的来历。我第二次翻车(把「随机暴露」错写成「按前缀暴露」导致交叉点跑到 0.5)就是栽在这道级数上:按前缀暴露没有「中间出盲点」,几何截断机制就不存在了。
我亲手跑的两条扫描
把上面两笔账接进一个真在学习的小模型(,共享两层 MLP,GRPO,400 次更新,全局 clip=1.0,每条 rollout 的信用总量都归一到 ,保证臂之间只差形状)。第一条固定预算 、扫因果链长 (16 个 seed,集中式我故意给它最优待遇——只喂前 个因果步):
C uniform concentrated(k=3) gap(conc-unif)
1 1.000 1.000 +0.000
2 1.000 1.000 +0.000
3 1.000 1.000 +0.000
4 0.922 0.797 -0.125
6 0.854 0.562 -0.292
8 0.656 0.391 -0.266
10 0.538 0.325 -0.213
12 0.427 0.255 -0.172
相位边界精确落在 :链塞得进预算时两者打平,链一超出预算集中式就单调落后, 时差到 −0.292。第二条固定 、扫验证器密度 (20 个 seed,targeted 臂只在随机暴露的步上拿独立局部信号):
Vd uniform targeted gap(targ-unif) 几何上界 (1/C)Σq^j
0.00 0.380 0.010 -0.370 0.000
0.25 0.380 0.025 -0.355 0.033
0.50 0.380 0.135 -0.245 0.100
0.75 0.380 0.350 -0.030 0.283
0.90 0.380 0.515 +0.135 0.586
1.00 0.380 0.785 +0.405 1.000
uniform 一条横线(它本来就覆盖全链,验证器看不看得见每步与它无关),targeted 随覆盖度单调爬升,两者在 0.75→0.90 之间交叉——和论文 0.81 的交叉点、以及「targeted 的分数纯粹随覆盖增长、uniform 持平」的 Fig.4b 机制,定性一致。这两笔账和两条扫描,就是我相信这个结论不是话术的原因。
为什么真实 Agent 逃不出低 :write-fraction 天花板
你可能会想:那把验证器做密一点不就行了?在「没有 oracle 标签、也没有学习型逐帧标注」的前提下,论文给出一个结构性上限,断了这个便宜:
道理很硬:一个靠「世界状态变化」打分的验证器,只能归因改变状态的步;一次「读/查询」返回了信息但没留下状态增量,它对那个事先未知的目标有没有帮助,验证器是瞎的——除非你喂 oracle 标签或训一个判官模型。论文普查了主流多轮工具 Agent 基准,没有一个天然高 :
| 基准 | 验证器形态 | |
|---|---|---|
| τ²-bench | 查最终数据库状态(终态) | 0.12–0.20(实测) |
| BFCL V3 多轮 | 每轮查后端状态,但只在「写」步触发 | ≈0.4(实测,5–6 步里中位看 2 步) |
| SWE-bench | 打完补丁跑测试(终态) | (评分代码解析可得) |
| WebArena / OSWorld | 查最终页面/系统状态 | (评分代码解析可得) |
| AppWorld | 终态单测 | 结构性偏低 |
| ToolSandbox | 轨迹里程碑 | 部分覆盖 |
| ScienceWorld | 模拟器逐步打分 | 高,但不是工具域 |
连「每轮都查」的 BFCL V3 都只有 0.4,离 0.81 的反转点还差一半。这带来一个视角转换:PRM、turn-level critic 这些方法的真正作用,不是「免费的流式验证器」,而是在花钱填 write-fraction 挖下的观测坑——它们把有效 抬上去,代价是标注/训练一个会犯错的判官,并且这个判官如果也只把信号集中到少数步,照样继承同样的覆盖风险。
相位图与边界:什么时候这套结论成立、什么时候失效
flowchart TD
Q{"验证器能独立判出因果链的多少?V_d = k/C"}
Q -->|"V_d 小于约 0.8:终态验证器的常态(tau2=0.15,BFCL=0.4)"| LOW["覆盖优先:固定预算均匀铺全链,任何集中都是覆盖赌博"]
Q -->|"V_d 接近 1:逐帧打分 / 有靠谱过程验证器"| HIGH["定向才划算:信号已覆盖全链,集中只是传导已有覆盖"]
REAL["真实工具 Agent:读操作不改状态,V_d 被 write-fraction 锁死在低位"] -.结构上落在.-> LOW
论文的扎实之处在于它把「什么时候该 null」也预测并验证了,而不是只报喜:
- 能力地板:Qwen3-4B 上对比是 null,因为它只有 24% 的 rollout 能走完整条前置链(14B 约 70%)。链都走不完,任何信用几何都没东西可覆盖——这是完成度问题,不是链变短了。跨家族的 Llama-3.1-8B 同理(基线成功率 2%,只有 50% 的写入参数来自它自己的读,属于「走了链但没消费」),甚至 Llama-3.3-70B 在同任务上 0/32。
- 信号分辨率门:telecom 域稠密信号的中间料太薄,臂间拉不开,也是 null。
- 跨家族复现:在 BFCL V3 上用工具特化的 ToolACE-2-8B(Llama-3.1 家族),集中式仍输:汇总 32 个预注册 seed,(,29/32 为负),独立 20-seed 复现自身显著(−0.054)。
- 剂量反应:固定总信用量,覆盖从 1 步扩到 checker 可见步再到全部工具调用,劣势单调收窄、到全链覆盖归零(−0.048 → −0.017 → +0.010);把集中式学习率翻倍、让它的更新 KL 比 uniform 高两个数量级,仍然 −0.024——这不是步长问题,是覆盖问题。
- 经典解药的重新解释:reward-to-go(某步拿它之后所有奖励之和)能追平全链覆盖。论文点破原因:纯终态奖励下 reward-to-go 本来就是常数、本来就是均匀分配;它赢,是因为它恢复了前缀覆盖,而不是因为它「瞄得更准」。这跟共同祖先那一节正好闭环。
落到工程:给 Agent 设计奖励时怎么用
灰度地说,这不是「永远均匀、过程奖励无用」,而是一张可判别的决策表:
- 先量 ,再决定奖励形状。 数两件事:成功轨迹的硬前置链长 (用数据流回溯,别数总步数注水),验证器能独立判对错的步数 。 明显低于 0.8——默认把固定预算均匀铺到全链,别上精巧的 per-turn 权重。
- 想主张「我的定向分配有用」,先过 shuffled control。 加一条「浓度相同、打到随机步」的臂;如果它和你的聪明定向差不多,你的收益来自覆盖或步长,不来自定向,写论文/做复盘时别把功劳记错。
- 想抬高 ,只有三条真路径:让更多步改变可判状态(把「读」的中间产物落进可校验的状态)、上学习型判官(PRM/critic,承担它自己的偏差)、或用 oracle 标签。单纯把同一个终态信号「重新分配」是抬不动 的。
- 对照实验务必 within-run paired。 论文测到同一批训练好的适配器换个评测 batch,assert-support 能漂 +0.061/−0.042/+0.112/+0.159——这漂移量级和信用几何效应本身一样大。跨 run 比大小在这种评测预算下不可靠,让对照臂共享 rollout、在同一个 batch 里评。
- 模型够不到能力地板时别折腾奖励。 前置链都走不完整(如小模型 24% 完成率),先补 grounding/能力,信用分配是链能走完之后才有的议题。
小结
- 根本约束:终态验证器只看得见「写」(),成功却靠一条 5–8 步的硬前置「读链」();梯度要覆盖整条 AND 链,信号供不起——所以 时覆盖是一阶、定向是二阶。
- 崩点:固定预算集中在 时,单次更新覆盖全链的概率恒为 0;硬前置链把「每步 75% 可见」放大成「整条只通 28%」(等比级数),反转点因此高到 ,而真实工具 Agent 被 write-fraction 按在 0.15。
- 可带走:量 → 低于 0.8 就均匀铺全链 → 任何「定向更优」的主张先过同浓度 shuffled control → 想破局去抬 (可校验状态 / 学习型判官 / oracle),而不是把同一个终态奖励换个分法。
收尾(可动手:10 分钟跑一遍相位边界)
不用 GPU、不用训大模型,纯 numpy 就能亲手摸到那条边界:建一条 的硬前置链,让一个小 MLP 用 GRPO 学,对比「均匀」和「只喂前 步」,把 从 1 扫到 12——你会亲眼看到交叉点正好落在 。核心更新逻辑不到二十行:
# 伪代码 + 可运行骨架:GRPO 一次更新,w[i,t] 是摊给第 i 条 rollout 第 t 步的信用
R = chain_reward(actions, causal_steps) # 硬前置链:从链头连续对的长度 / C
A = (R - R.mean()) / (R.std() + 1e-8) # GRPO 组归一化优势
# uniform: w[i,t] = A[i]/T 每一步都给 -> 覆盖全链
# concentrated: w[i,t] = A[i]/k 只给预算内的 k 步 -> k<C 时链覆盖不全
for t in range(T):
grad_logits[t] = sum_i w[i,t] * (onehot(action[i,t]) - prob[i,t])
# 反向传播更新共享策略;全局梯度范数 clip 到 1.0,保证两臂只差方向不差幅度
成本:pip install numpy 约 2 分钟,跑完整条 扫描在笔记本上约 1–2 分钟。跑完你会得到和本文一致的那张表: 打平、 后均匀式单调领先。用一次亲手跑换一个坐标——以后再看到任何「turn-level 奖励 / PRM / 信用分配」论文,你第一反应不再是「它的分配器巧不巧」,而是先问「它把有效 抬到了 0.8 以上吗,覆盖全链了吗」。
诚实的提醒(这篇里比较软的地方)
- 两笔手算(组合恒零、几何级数)是严格的,脚本核验过,读者可直接复算;但两条 numpy 扫描是我按附录 C 规格写的精简复现,不是作者原实现(论文未放代码):我用的是单隐藏层 16 宽 MLP、400 次更新、16–20 seed,绝对数值(如 uniform 在 为 0.656)是我这套玩具的数,论文的真实模型数字是 Qwen3/ToolACE 上的 +0.079、−0.053、 等,两者只做定性机制对齐,不做数值等同。
- 我的 扫描交叉落在 0.75–0.90,和论文 0.81 同区间,但这是区间吻合不是精确复现;论文的 0.81 来自 32 个 paired seed、状态依赖链的完整设置,我的玩具用单隐藏层 16 宽 MLP、每组 10 条 rollout,参数更省。
- 真实模型上的所有数字(τ²-bench、BFCL、ToolACE、各 seed 数与显著性)都出自论文原文、正文带链,我没有 GPU 复现这些大模型实验;论文最关键的方法学限制——shared-rollout 隔离只在第一次策略更新严格成立、长程训练动力学未覆盖——我在正文单独标了,没替它打包票。
- 「write-fraction 天花板」对纯读任务成立;像 ScienceWorld 这种模拟器逐帧给分、或有人写了稠密里程碑校验的环境(ToolSandbox)确实能拿到更高 ,那时结论应按相位图右侧处理,本文不主张「均匀万能」。
参考来源
arXiv 论文
- 本文主角:Zhou et al., Coverage, Not Targeting: A Structural Regime in Multi-Turn Agent Credit Assignment — arXiv:2609.02417
- GRPO 出处:Shao et al., DeepSeekMath — arXiv:2402.03300
- 过程奖励的代表:Lightman et al., Let’s Verify Step by Step — arXiv:2305.20050
- τ²-bench:Barres et al. — arXiv:2506.07982;初代 τ-bench:Yao et al. — arXiv:2406.12045
- 稠密奖励方向:Qian et al., ToolRL: Reward is All Tool Learning Needs — arXiv:2504.13958
- 结构化 step 级优势:Feng et al., Group-in-Group Policy Optimization — arXiv:2505.10978
- 多轮分层 RL:Zhou et al., ArCHer — arXiv:2402.19446;SWEET-RL — arXiv:2503.15478
- 基准:SWE-bench arXiv:2310.06770、WebArena arXiv:2307.13854、OSWorld arXiv:2404.07972、AppWorld arXiv:2407.18901、ToolSandbox arXiv:2408.04682
- 共同祖先(经典信用分配/奖励塑形):Ng, Harada & Russell 1999 Policy Invariance under Reward Transformations(potential-based shaping);Arjona-Medina et al. 2019 RUDDER;Harutyunyan et al. 2019 Hindsight Credit Assignment;Andrychowicz et al. 2017 Hindsight Experience Replay
工程实践
- BFCL V3 多轮官方说明 · gorilla.cs.berkeley.edu/blogs/13_bfcl_v3_multi_turn.html
- ToolACE-2(工具特化模型)· arXiv:2409.00920
站内相关
- 《Agent 工程七问》——本文接住了它「长程 credit assignment 悬而未决」的话头
- 《PPO 的训练循环》——critic 与逐 token 信用分配是同一问题的单轮版本
- 《为什么大模型需要强化学习》——GRPO/策略梯度的零基础前置
- 《不教,只给激励:DeepSeek-R1》——GRPO 与规则奖励如何驱动推理
- 《大模型 Benchmark 地图:τ-bench 之外》——τ-bench/BFCL 在评测版图里的位置
- 《模型为什么会伸手》——工具调用是目标函数的影子,和本文的「奖励形状决定学到什么」互为表里