问题
自一致(self-consistency)——对同一个模型多次采样,取多数答案——是你能加上的最便宜的推理提升手段。它有效,但很快饱和。样本数翻倍,也可能看不到另一次有意义的跃升。
辩论打破了这种饱和。不再是同一模型的 N 个独立样本,而是 N 个 Agent 互相阅读推理过程并修正。样本之间的相关性下降(它们不再是独立同分布),收敛点常常是正确的——而在同样的地方,独立同分布投票却自信地选错了。
概念
Du 等人 2023 年的算法
出自 arXiv:2305.14325(ICML 2024):
- N 个 Agent 各自对问题给出初始答案。
- 对于第 r = 2..R 轮:每个 Agent 会看到其他 Agent 在第 r-1 轮的答案,并被要求「考虑这些答案,给出你的更新答案」。
- R 轮结束后,对最终答案进行多数投票。
论文在 MMLU、GSM8K、人物传记、MATH 和事实性基准上做了测试。辩论一致地胜过 CoT 与自我反思(Self-Reflection)。
两个独立的调节旋钮
同一篇论文的消融实验:
- 只增加 Agent 数量(1 轮,N 个答案多数投票)在大多数任务上胜过单 Agent,但会进入平台期。
- 只增加轮数(1 个 Agent 看自己先前的推理)几乎没有帮助——这是反思的已知弱点。
- 两者结合才带来大幅提升。多个 Agent 之间的多轮交流才是收益来源。
为什么有效
两个机制:
- 暴露于分歧。 当一个 Agent 看到另一条得出不同结论的推理链时,它必须要么辩护,要么更新。无论哪种,第 r+1 轮的上下文都比第 r 轮更丰富。
- 降低相关误差。 在自一致方法中,所有样本都来自同一模型,误差彼此相关——平均下来得到一个自信的错误答案。不同的模型或不同的随机种子可以解相关。不同的辩论视角则能进一步解相关。
异构辩论
A-HMAD 及相关后续工作让不同 Agent 使用不同的基座模型。Llama + Claude + GPT 一起辩论,可以缓解「单一文化崩塌」(monoculture collapse,第 26 课),因为一个模型家族的相关误差不会被其他家族共享。
缺点:一个弱模型参与辩论,可能把共识拖向它的错误答案(参见 "Should we be going MAD?",arXiv:2311.17371)。
NLSOM —— 扩展到 129 个 Agent
Zhuge 等人("Mindstorms in Natural Language-Based Societies of Mind",arXiv:2305.17066)把这一思路扩展到 129 个成员的社会。结果是:专业化与自组织随规模涌现,系统在视觉问答等任务上超过单 Agent。
失效模式
- 谄媚级联(sycophancy cascade)。 所有 Agent 都听从听起来最自信的那个。辩论坍缩成最大声者的独白。用 prompt 设定对抗角色(「必须有一个 Agent 为相反立场辩护」)会有所帮助。
- 话题漂移。 多轮辩论会偏离原问题。缓解办法:每一轮都重新注入原问题。
- 计算量爆炸。 N 个 Agent × R 轮 = N·R 次 LLM 调用,而且上下文还在增长。5 个 Agent、5 轮的辩论就是 25 次调用,且上下文不断膨胀。单题成本可能超过一次 CoT 调用的 10 倍。
构建它
code/main.py 在一个数学问题上运行 3 个 Agent × 3 轮的辩论,每个 Agent 从不同(可能错误)的答案出发。Agent 是脚本化的——每次「更新」都是按预设置信度对邻居答案加权平均。逐轮日志中可以清楚看到收敛过程。
演示展示了两个关键效应:
- 一轮交流就能让 Agent 更接近正确答案。
- 第 2 轮之后的额外轮次收益递减(与 Du 等人的平台期一致)。
运行:
python3 code/main.py使用它
outputs/skill-debate-configurator.md 为新任务配置一场辩论:Agent 数量、轮数、异构程度(同一模型还是混合模型)、角色分配(对称还是单方对抗)。它还会在运行前估算 token 成本。
交付它
如果你要交付辩论系统:
- 轮数上限设为 3。 Du 等人表明 3 轮就能拿到大部分收益。再多是成本,而不是质量。
- Agent 数量上限设为 5。 超过 5 个之后,上下文的膨胀与成本会成为主导因素。
- 默认采用异构。 池中至少要有两个不同的基座模型。
- 保留一个对抗席位。 让一个 Agent 被提示为无论如何都要持反对意见,用以打破谄媚。
- 记录每一轮。 隐藏中间轮次的辩论系统既无法调试,也无法审计。
练习
- 运行
code/main.py,然后把轮数改为 5,观察收益递减。从第几轮开始额外的收敛停止? - 增加第四个具有对抗角色的 Agent:永远反对当前的多数意见。这会破坏收敛还是改善收敛?
- 打印每一轮的一致度分数(持多数答案的 Agent 占比)。它在什么时候达到 1.0,而 1.0 是否等同于「正确」?
- 阅读 Du 等人论文第 4 节的消融实验。用这份代码复现「只加 Agent」「只加轮数」「两者都加」的结果。
- 阅读 "Should we be going MAD?"(arXiv:2311.17371),列出轮询(round-robin)之外的两种辩论变体——例如裁判主导(judge-led)、辩论链(chain-of-debate)、对抗式(adversarial)。
关键术语
| 术语 | 常见说法 | 实际含义 |
|---|---|---|
| 心智社会(Society of Mind) | 「明斯基的想法」 | 智能是相互作用的专家;这一 1986 年的构想如今通过 LLM 辩论得到操作化。 |
| 多 Agent 辩论(Multi-agent debate) | 「Agent 互相争论」 | N 个 Agent 提出答案、互相批评、经 R 轮修订,最后多数投票。 |
| 共识(Consensus) | 「它们达成一致」 | 不是认识论上的真理——只是落在多数答案上的比例。共识也可能自信地出错。 |
| 轮(Rounds) | 「交流步数」 | 一轮 = 每个 Agent 阅读其他人并更新一次。 |
| 异构辩论(Heterogeneous debate) | 「混合模型家族」 | 使用不同的基座模型来解相关误差。 |
| 谄媚级联(Sycophancy cascade) | 「大家都听嗓门最大的」 | 一种辩论失效:Agent 不论对错都听从最自信的那个。 |
| NLSOM | 「129 个 Agent 的社会」 | 自然语言心智社会(Natural-language society of mind);Zhuge 等人的规模化版本。 |
| 相关误差(Correlated error) | 「同一个模型,同一个 bug」 | 自一致方法为何饱和;跨不同视角的辩论可以解相关。 |
延伸阅读
- Du 等 —— 通过多 Agent 辩论提升语言模型的事实性与推理能力 —— 参考论文,ICML 2024
- Zhuge 等 —— 基于自然语言的心智社会中的思维风暴 —— 129 个 Agent 的 NLSOM
- Should we be going MAD? 多 Agent 辩论策略一览 —— 对多种辩论变体进行基准测试
- Debate 项目主页 —— Du 等人的代码、演示与消融细节