心智社会与多Agent辩论
Minsky 1986 年的前提——智能是专家的社会——每十年被重新发现一次。2023 年 Du 等人将其转化为具体算法:多个 LLM 实例提出答案、阅读彼此的答案、批评并更新。经过 N 轮,它们收敛于一个共识,在六个推理和事实性任务上击败零样本 CoT 和反思。两个发现很重要:多个 Agen...
心智社会与多 Agent 辩论
Minsky 1986 年的前提——智能是专家的社会——每十年被重新发现一次。2023 年 Du 等人将其转化为具体算法:多个 LLM 实例提出答案、阅读彼此的答案、批评并更新。经过 N 轮,它们收敛于一个共识,在六个推理和事实性任务上击败零样本 CoT 和反思。两个发现很重要:多个 Agent 和多轮独立贡献。社会击败单 Agent 独白;多轮交换击败一次性投票。
类型: 学习 + 构建 语言: Python (stdlib) 前置条件: Phase 16 · 04 (原语模型) 时间: ~60 分钟
问题
自一致性——对一个模型采样多次并取多数答案——是你可以添加的最便宜的推理改进。它有效,但很快饱和。你可以将样本翻倍却看不到另一个有意义的提升。
辩论打破了饱和。不是从一个模型取 N 个独立样本,而是 N 个 Agent 阅读彼此的推理并修订。样本之间的相关性下降(它们不再是 i.i.d.),收敛点通常是正确的,而 i.i.d. 投票则自信地错了。
概念
Du 等人 2023 算法
来自 arXiv:2305.14325 (ICML 2024):
- N 个 Agent 各自产生对问题的初始答案。
- 对于轮次 r = 2..R:每个 Agent 看到其他 Agent 的第 r-1 轮答案,并被要求”考虑这些,给出你更新的答案。”
- R 轮后,对最终答案进行多数投票。
论文在 MMLU、GSM8K、传记、MATH 和事实性基准上测试。辩论始终击败 CoT 和自我反思。
两个独立旋钮
同一论文的消融实验:
- 仅 Agent 数量(1 轮,N 的多数投票)在大多数任务上击败单 Agent,但会饱和。
- 仅轮次数量(1 个 Agent 看到自己先前的推理)几乎没有帮助——反思的已知弱点。
- 两者结合产生大幅提升。多个 Agent 之间的多轮交换驱动了增益。
为什么有效
两个机制:
- 暴露于分歧。 当一个 Agent 看到另一个 Agent 带有不同结论的推理链时,它必须证明或更新。无论哪种方式,第 r+1 轮的上下文都比第 r 轮更丰富。
- 相关错误减少。 在自一致性中,所有样本来自同一模型,所以错误相关——你平均到一个自信的错误答案。不同模型或不同种子去相关。不同的辩论观点进一步去相关。
异构辩论
A-HMAD 和相关后续工作为不同 Agent 使用不同基础模型。Llama + Claude + GPT 辩论减少了单一文化崩溃 (Lesson 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。
失败模式
- 谄媚级联。 所有 Agent 服从听起来最自信的 Agent。辩论崩溃为最大声的声音。提示对抗性角色(“一个 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 数量、轮次数量、异构性(相同模型 vs 混合)、角色分配(对称 vs 一个对抗性)。它还在运行前估算 token 成本。
发布它
如果你发布辩论:
- 轮次上限 3。 Du 等人显示 3 轮捕获了大部分增益。更多是成本,不是质量。
- Agent 上限 5。 超过 5,上下文膨胀和成本占主导。
- 默认异构。 池中至少两个不同基础模型。
- 对抗性槽位。 一个 Agent 被提示无论如何都要反对。打破谄媚。
- 记录每轮。 隐藏中间轮的辩论系统无法调试或审计。
练习
- 运行
code/main.py,然后将轮次设为 5,观察收益递减。在哪一轮额外收敛停止? - 添加第四个具有对抗性角色的 Agent:始终反对当前多数。这破坏还是改善收敛?
- 绘制(打印)每轮的一致性分数(多数答案上的 Agent 比例)。何时达到 1.0,这是否等同于”正确”?
- 阅读 Du 等人第 4 节消融实验。使用此代码复现”仅 Agent” vs “仅轮次” vs “两者”的结果。
- 阅读 “Should we be going MAD?” (arXiv:2311.17371) 并列出轮询之外的两种辩论变体——例如,法官主导、辩论链、对抗性。
关键术语
| 术语 | 人们怎么说 | 实际含义 |
|---|---|---|
| 心智社会 | ”Minsky 的想法” | 智能作为交互的专家;1986 年的框架现在通过 LLM 辩论操作化。 |
| 多 Agent 辩论 | ”Agent 们争论” | N 个 Agent 提议、互相批评、经 R 轮修订、多数投票。 |
| 共识 | ”他们同意” | 不是认识论真理——只是多数答案上的比例。可能自信地错误。 |
| 轮次 | ”交换步骤” | 一轮 = 每个 Agent 阅读其他 Agent 并更新一次。 |
| 异构辩论 | ”混合模型族” | 使用不同基础模型来去相关错误。 |
| 谄媚级联 | ”每个人都同意那个大声的” | 辩论失败,Agent 服从最自信的 Agent 而不论正确性。 |
| NLSOM | ”129 Agent 社会” | 自然语言心智社会;Zhuge 等人的规模化版本。 |
| 相关错误 | ”相同模型,相同 bug” | 自一致性饱和的原因;跨不同观点的辩论去相关。 |
延伸阅读
- Du et al. — Improving Factuality and Reasoning in Language Models through Multiagent Debate — 参考论文, ICML 2024
- Zhuge et al. — Mindstorms in Natural Language-Based Societies of Mind — 129 Agent NLSOM
- Should we be going MAD? A Look at Multi-Agent Debate Strategies for LLMs — 辩论变体基准
- Debate project page — Du 等人的代码、演示和消融细节