Overcooked 里的 7B–70B 开源模型会先「把洋葱放进锅」再「拿起洋葱」,或者干脆说出一个任务里不存在的动作。
CausalPlan 不微调模型、不改它的提示,而是在候选动作的采样概率上再加一项因果分;
这一项来自一张离线学好的矩阵 M,行是动作、列是「谁的状态 / 上一步动作」。
如果一个有效候选都没有,就直接查 M 取分数最高的那个动作。
论文观察到的失败叫 causally invalid action:违反环境的物理约束或先后顺序(没拿洋葱就放洋葱),或执行了任务指令里不存在的动作。在 Overcooked 的 Cramped Room 布局里,Gemma-7B / Qwen-14B / Llama-70B 都持续产出大量这类动作(Figure 1a,四个种子平均)。
解法分两段。离线:拿一个现成策略(论文用 MEP)跑 200,000 步轨迹,把状态与动作拆成特征位,训练一个「上一步动作 + 当前双方状态 → 下一个高层动作」的结构化因果模型(SCA),读出矩阵 M,M[i,j] 就是「特征 j 导致动作 i」的因果分。
在线:LLM 先分析场景、再给出候选动作 A′ 及其概率 p_a;CausalPlan 用当前激活特征查 M 得到 p_c,按 p_f = γ·p_a + (1−γ)·p_c 融合后 softmax 采样。候选集为空时不走重规划,而是在全部合法动作里取 argmax p_c——这是论文的 Causal Backup Action。
代价很实:推理变慢(400 步 Llama-70B 从约 40 分钟到约 68 分钟),因果矩阵的质量取决于拿谁的轨迹来学(MEP 学的图里 pickup_onion → put_onion_in_pot 是 0.6,Llama-8B 学的图里是 0),CR 布局上它甚至输给 FCP。
读完这节要知道:作者把 LLM 智能体在协作任务里的失败,归结为一个可观测的量——因果无效动作的数量。
Overcooked-AI 的规则很硬:两名玩家一起做洋葱汤,拿洋葱、放进锅、等锅煮好、把汤盛进盘子、端到出餐口,每成功上菜一次得 +20(§4.1;Appx. C.2)。语言模型看懂这个场景毫无难度,但做对顺序是另一回事。
论文点名的两类错误:顺序错(先放洋葱再拿洋葱、或执行任务说明里没有的步骤)与动作越界(输出动作空间 A 之外的动作)。作者认为根源是 LLM 依赖表层相关性而非环境里真实的因果关系,小型开源模型因为没有捷径可用,问题更突出。
CR 布局,LLM 智能体做 Player 1、Player 0 由 COLE 控制,四个种子平均。Figure 1a 画了无效动作数随模型规模的变化(三档模型,带 / 不带 CausalPlan 各一根柱),趋势是模型越大越少,而带 CausalPlan 的柱普遍更低;论文只给图未给数,本页不复述具体柱高。
这张图支撑的判断是:扩大模型并不等于学会因果——连 Llama-70B 也仍有大量无效动作。这就把问题从「换个更大的模型」变成了「怎么给模型一个显式的顺序约束」。
读完这节要知道:为什么不能直接用已有的零样本协作方法或「让 LLM 自己想一想」。
为「和没见过的搭档也能配合」而设计的经典方法:自博弈(SP)、种群训练(PBT)、配上虚拟搭档的 FCP / 最大熵种群的 MEP、以及做策略选择的 COLE(§2)。
卡在:容易过拟合训练搭档的行为分布,算得贵,学到的是黑箱策略,不利用任务本身的领域知识。论文用它们当基线与数据来源。
论文的实验底座是 ProAgent:用知识库提示 LLM 分析局面并规划下一步,比 RL 更能零样本迁移,也能讲清理由。
卡在:论文的判断是 LLM 本身缺因果推理能力——原话是「a persistent limitation remains: LLM agents often lack robust causal reasoning」(§1)——而 RL 路线学的是策略,不是「哪些前提导致哪个动作」。
于是论文的切口是:既不要用 RL 学策略,也不要指望 LLM 学会因果,而是单独学一张「动作的因果表」,在候选动作这一层把它叠上去。要注意,这张表并不告诉智能体「只做这些」——它只调整 LLM 已经吐出来的候选动作的权重,外加一个没候选时用的兜底。
读完这节要知道:在线阶段只有两步计算,以及「融合」与「兜底」分别在什么条件下触发。
矩阵 M ∈ ℝA×(S+A):行对应一个可能的下一动作,列对应一个状态特征或上一步动作特征(§3.3)。当前状态与上一步动作里「为真」的位构成激活列集合 J = Active(s_t, a_{t−1}),则
论文 Figure 2 给的例子里,M 列是 empty_hand1、hold_onion1、hold_onion2、pickup_onion(上一步)、pot0,五列全激活时两行相加都得整数——本页把图里可见的值逐字抄进下面的模拟器。
两点值得记住:因果分是以「和」的形式进入的,即「有多少前件支持这个动作」;下面的模拟器在 Eq. 4 之外额外加了一个逐候选相同的偏移 δ(p_f = γ·p_a + (1−γ)·p_c + δ,论文里没有这个 δ,是本页演示用的);softmax 的结果对两个动作的 p_f 之差敏感,对它们的共同偏移不敏感——所以在模拟器里拖动「共同偏移」似乎改变不了最终概率,这不是 bug。
作者的理由是:LLM 持续幻觉无效动作时,「暂停并重规划」的软干预会失败,而「回想过去真正可行的动作」更像人在不确定时的做法。这是贪心选择,不从分布里采。
下面的模拟器完全按上两小节的两步计算,矩阵值取自 Figure 2。默认伴侣是 Figure 2 场景里「Agent 2 也拿着一只洋葱」;切到「无洋葱」就是论文自己的耦合假设:没有拿洋葱时,put_onion_in_pot 的因果分掉到 0.5。
下表按 Figure 2(论文 §3.3 的矩阵与 §3.4.1 的 Eq. 4)即时计算,Table A6 里 CR 布局的 γ 均为 0.5。
| 候选动作(LLM 概率 pa) | 支持项之和 ΣM | 因果分 pc | pf = γpa+(1−γ)pc+δ | softmax Pf |
|---|
这张表由 M 的 Figure 2 单元格即时计算,不是论文里的成绩表;下方的读数块与 Table A6 的默认 γ = 0.5(CR)对照。
输入(Figure 2 可见单元格,逐字):M[pickup_onion] = [0.9, 0.3, 0.3, 0.0, 0.5];M[put_onion_in_pot] = [0.7, 0.8, 0.3, 0.6, 0.5]。对应列依次为 empty_hand1 / hold_onion1 / hold_onion2 / pickup_onion / pot0。LLM 概率取论文 Eq. 4 代入值 p_a = (0.5, 0.3)。companion=onion 时五列全激活。
组 A · γ = 0.5,δ = 0
1.251.608.4433750.4134;P(put_onion_in_pot) = 4.953032 / 8.443375 = 0.5866组 B · γ = 0.6,δ = 2.00(companion=onion,μ 同样加 2.00)
3.10;p_f2 = 0.6×0.3 + 0.4×2.90 + 2.00 = 0.18 + 1.16 + 2.00 = 3.3450.417078(共同加 2.00 在 softmax 里约掉:P1/P2 = e−0.24 = 0.786628)0.4403;P(put_onion_in_pot) = 28.219127 / 50.417078 = 0.5597兼容性:组 A 的融合值与论文 Figure 2 一致(1.1 / 2.2 是 Figure 2 算例自带的数值 推断,依据 §3.3「the score is computed as the sum of causal contributions」,矩阵单元格与常数列不在 M 内);但论文没有公开它的 LLM 概率 P_a,所以 p_f 的分母与采样结果无法复现。Figure 2 用 γ = 0.5、p_f = 1.1 反解得到 p_a ≈ 0.5 推断,本页据此取 0.5 / 0.3。
标准差:本节没有任何 mean ± std 数字,不涉及 ÷N 或 ÷(N−1)。
读完这节要知道:矩阵 M 从哪来、学的是什么、一次投入能否复用。
B 由固定行为策略 πβ 与环境交互 200,000 步收集,每回合 400 步(Table A4)。为避开小 LLM 的冷启动,论文默认用预训练的 MEP 策略来采;也太试过 Llama-8B 采数据(Appx. C.4.3)。δ 与结构参数 η 交替优化(Algorithm 1),损失 L = L_causal + L_reg,L_causal 是下一动作的负对数似然(Eq. 2),L_reg 是邻接矩阵的负对数先验惩罚(Eq. 3,λ = 1e-7)。迭代 500,000 次。Appx. C.4.5:CR 的因果图训练约 3 小时,是离线一次性的,四种骨干模型共用同一张 M。在线 400 步的耗时(NVIDIA H100):Gemma-7B / Llama-8B 约 5 → 15 分钟,Qwen-14B 约 16 → 41 分钟,Llama-70B 约 40 → 68 分钟。按 C.4.5 的分组口径,三组耗时分别变为原来的 15/5 = 3.0×(Gemma-7B 与 Llama-8B 合为一组,原文未拆分)、41/16 ≈ 2.6×(Qwen-14B)、68/40 = 1.7×(Llama-70B),即 1.7–3.0 倍。推断(依据 C.4.5):每组「带 CausalPlan」约为「不带」的两倍,与每步多做一次 LLM 调用的解释一致,但原文未给这一拆解。这是论文自己未用「显著」二字描述的成本项。
还有一处容易被忽略的口径问题:γ 是逐布局、逐模型调的(Table A6)。除 Forced Coordination 外 5×4 表中都是 0.5,FC 上 Gemma-7B 0.6、Llama-8B 0.4、Qwen-14B 0.7;调参只在「γ = 0.5 时反而更差」的布局上做过(Appx. C.4.2,原文这句在图注与正文里说法不一致:正文写 0.5–0.7,Figure A5 图注写 0.4–0.8)。
Heatmap 的列标签在 PDF 里被裁得没法读,本页不放图,只把 Appx. C.4.4 正文用文字点名、并给出数值的边列出来。要点:同一布局、同一训练流程,只换采集数据的人,MEP 学到的图保留了 pickup_onion → put_onion_in_pot(0.6),Llama-8B 学到的图里这条边直接是 0。
表格来源:Appendix C.4.4 的 Figure A6 / A7(CR 布局);原图列标签在 PDF 里不可读,故只列正文用文字点名并给出数值的边。这是本页自制的抽取清单,不是原图重绘;原图编号为 Figure A6 / A7。
论文明说两张表里有些「从对方智能体状态出发」的边难以解释:只要 LLM 不采样到对应动作,它们几乎不影响推理,所以真正的过滤工作一半由 LLM 的常识先做掉了。作者猜测更强的因果发现方法(或给边设阈值、多采数据)能去掉这些伪边。
读完这节要能把 Figure 2 的每一根箭头对应到上面两节的公式。
论文 Figure 2 的细节值得补一句:场景先由 Cohere command-r(35B,API 调用)生成分析,再连同场景一起喂给骨干 LLM 出候选——所以「两提示」结构里有一半的 LLM 调用其实不是被评测的那个模型(Appx. C.1.1)。这也是在线耗时的来源之一:C.4.5 只报了端到端 400 步的时间,没有拆出各模块。
读完这节要知道:在 Llama-70B 这个配置下,CausalPlan 在什么布局上真赢、在什么布局上输,以及它的「22.42%」是怎么算出来的。
Table 1:Llama-70B 做 Player 0 与 Player 1 两种位置、各跑 3 个种子、每局 400 步,报告 mean ± std,按玩家位置与种子平均。
| 布局 | SP | PBT | FCP | MEP | COLE | Ours | 差 |
|---|---|---|---|---|---|---|---|
| CR | 162.0 ± 10.0 | 168.0 ± 5.0 | 194.0 ± 10.1 | 178.0 ± 16.1 | 153.4 ± 12.5 | 172.7 ± 4.2 | −21.3(FCP) |
| AA | 184.0 ± 17.5 | 168.0 ± 15.4 | 176.6 ± 15.0 | 167.3 ± 5.8 | 185.3 ± 15.1 | 258.7 ± 16.4 | +73.4(COLE) |
| CC | 56.7 ± 9.2 | 52.0 ± 14.0 | 63.4 ± 10.5 | 50.0 ± 16.1 | 90.6 ± 10.1 | 112.6 ± 7.6 | +22.0(COLE) |
| COR | 120.7 ± 11.0 | 139.4 ± 10.1 | 130.7 ± 6.2 | 160.7 ± 7.2 | 153.4 ± 4.6 | 156.6 ± 3.2 | −4.1(MEP) |
| FC | 18.0 ± 4.6 | 40.6 ± 10.3 | 42.0 ± 7.2 | 30.4 ± 5.4 | 44.6 ± 7.0 | 53.9 ± 14.9 | +9.3(COLE) |
Ours = CausalPlan(Llama-70B);「差」= Ours − 该行最高的五个基线之一,单位是分数。最高基线由脚本比较得出。CausalPlan 在 AA / CC / FC 三个布局第一,COR 第二,CR 第三。论文把 CR 上的落后归因于「任务太简单,不需要因果知识」(§4.2)。
§4.2 写的是「the most significant performance gaps … are observed in the AA layout, showing a 63% advantage」,但没有说这个 63% 相对谁、怎么算。用 Table 1 的数字复算:
§4.2 写「Qwen-14B(29.04%)和 Llama-70B(22.42%)的显著提升」,同一段还提到 CR 20.83%、COR 19.13%。这些数出自 Table A1 的最后一行/列。Table A1 的「Avg. Improv. (%)」列其实是:五个布局上「带 / 不带 CausalPlan」的绝对分差之和均值,不是相对提升。表注也只说「last row reports the average improvement across layouts in %」,没有给分母(§1.2 条件必须与数字同句)。下面图表把这两种口径分开画,避免把「百分点」读成「相对百分比」。
读完这节要知道:在什么条件下这张表会帮倒忙,以及作者自己承认了什么。
CR 上 CausalPlan 输给 FCP 21.3 分;COR 上输给 MEP 4.1 分。作者的归因是 CR 不需要因果知识。更关键的是:若候选集只有一个动作(ProAgent 的提示要求 LLM 只规划一个最优技能,Appx. B.2.1),加权之后 softmax 照样是 1.0——此时真正有信息量的只有「兜底」推断(依据:softmax(Eq. 5)在 |A′| = 1 时恒为 1;但论文未统计 |A′| 的分布)——这也解释了为什么去掉 CBA 的版本(141.3 ± 12.9)低于完整版(150.7 ± 2.3),按论文自己的绝对口径差 9.4 点、按其表格列的「平均增益」差 6.7 个百分点。原文 §4.3 对同一组数字写的是「no CBA 仍比 2-Prompt 高 27%,但比完整版低 7%」——那是相对值:(150.7 − 121.3) / 121.3 = 24.2%推断,文中未给分母;而本页引的 9.4 / 6.7 是点差。原文把两种口径并排写出、没有注明,本页照原样转述并在紧邻位置点出,不替它改数。
用 Llama-8B 采 20 万步数据后学的表,CR 上平均 125.3 ± 30.7;用 MEP 采则 150.7 ± 2.3(Table A3)。论文自己的解释是「更强的采集策略带来更好的因果表」。这意味着:要把它用到一个需要离线专家演示的新任务上,这个前提就得先满足。
Appx. B.1.1 明说假设状态与动作空间已有已知分解;附录 C.4.4 的图来自 MEP,有难解释的边(特别是从对方状态出发的边)。另外所有实验都在 Overcooked 的确定性模拟器里做,人-机评测也只用 BC 代理(Figure 4),没有真实人类;论文 §5 自己也说还没在更大的闭源模型上评测。
一句话:CausalPlan 改的是候选动作的排序,不是 LLM 的因果理解;它把「顺序约束」从模型内部搬到了一张可以查、可以解释、也可以不再更新的表里。表更新靠谁、靠什么数据,就是它的天花板。