本节摘要:多智能体协调的强化学习遗产,到 2026 仍在塑造 LLM-Agent 系统。MADDPG(Lowe 等, NeurIPS 2017, arXiv:1706.02275)引入「中心训练、分布执行」(Centralized Training, Decentralized Execution, CTDE):每个 critic 在训练时看到所有 Agent 的状态与动作,测试时只跑局部 actor;适用于合作、竞争、混合。QMIX(Rashid 等, ICML 2018, arXiv:1803.11485)是带单调混合网络的值分解,使
argmax干净地分布到各 Agent——在 StarCraft 多智能体挑战(SMAC)上占主导。MAPPO(Yu 等, NeurIPS 2022, arXiv:2103.01955)是带中心值函数的 PPO,在粒子世界、SMAC、Google Research Football、Hanabi 上「出奇地有效」,几乎不用调参。这三者撑起了「必须分布行动的 Agent 团队」的训练策略。MAPPO 是 2026 合作型 MARL 的默认基线。 本节从一个小型网格世界玩具搭出三者,在触碰完整 MARL 库之前把三个模式刻进肌肉记忆。
阅读完本节,你应当能够:
o_i,并指出其随 N 不扩展的失败模式。Q_tot = f(Q_1,...,Q_n), df/dQ_i >= 0 为何保证 argmax 分布干净,及其在合作型任务上的契合点。LLM-Agent 系统越来越多地为 Agent 间的协调训练策略:何时让步、何时行动、调用哪个同伴。告诉你「如何训练这类策略」的文献,是多智能体强化学习(MARL)——它早于 LLM 浪潮,有一小撮主导算法。
没有模式词汇去读 MARL 论文是痛苦的。CTDE、值分解、中心 critic 不是流行词——它们是对具体问题的具体回答:
不同环境有不同动作/观察类型,算法据此选择。
每个 Agent i 有一个 actor mu_i(o_i),把自己的观察映射到动作;还有一个 critic Q_i(x, a_1,...,a_n),训练时看到所有观察与所有动作。actor 靠对 critic 评估的策略梯度更新。
actor 更新: grad_theta_i J = E[grad_theta mu_i(o_i) * grad_{a_i} Q_i(x, a_1..n) | a_i=mu_i(o_i)] critic 更新: 在 Q_i(x, a_1..n) 上做 TD,给下一状态的联合估计
为何 CTDE:训练时我们知道所有人的动作,用它降低每个 critic 的方差;部署时每个 Agent 只看 o_i 并调 mu_i(o_i)。
失败模式:critic 输入随 N 个 Agent 增长(含全部动作),不过约 10 个 Agent 就不扩展(需近似)。
仅合作型。全局奖励是每个 Agent Q 值的某个单调函数之和:
Q_tot(tau, a) = f(Q_1(tau_1, a_1), ..., Q_n(tau_n, a_n)), df/dQ_i >= 0
单调性保证 argmax_a Q_tot 可由每个 Agent 独立选 argmax_{a_i} Q_i 算出。这正是你需要的分布执行性质。 训练时一个混合网络从各 Agent Q 产出 Q_tot。
为何 QMIX 在 SMAC 上赢:合作型 StarCraft 微操有同质 Agent、局部观察、全局奖励——值分解的完美契合。
失败模式:单调性约束强;有些任务的奖励结构不可单调分解(一个 Agent 为团队牺牲)。扩展(QTRAN、QPLEX)放松了它。
多智能体 PPO:带中心值函数的 PPO。每个 Agent 有自己的策略;所有 Agent 共享(或有各自的)看到全状态的值函数。Yu 等 2022 在五个基准上把 MAPPO 与 MADDPG、QMIX 及其扩展对比,发现:
社区直到这篇才正眼看在策略 MARL。2026 年,MAPPO 是合作型 MARL 的默认基线;任何新方法都得先打败它。
三处直接用途:
实践警告:2026 多数生产 LLM-Agent 系统是提示其策略而非训练。MARL 在你同时有(a)大量交互数据、(b)清晰奖励信号、(c)愿投入训练基建时才进场。
即便不训练,CTDE 也是有用的架构模式:设计期假设全队可见;运行期强制分布执行(每个 Agent 只看 o_i)。这个模式逼你把逐 Agent 状态写显式,并预先思考部分可观性。许多生产多智能体系统默默假设处处共享状态——CTDE 纪律阻止这一点。
⚠️ 这是「协调难点在平稳性」的集中体现——多 Agent 同时学习时,每个 Agent 的环境(含他人策略)都在变,经典单 Agent RL 的证明全垮。CTDE 不是炫技,而是对付非平稳性的工程答案:训练时用全局信息把他人策略「冻结」掉。
多个 Agent 同时学习时,每个 Agent 的环境(含他人策略)非平稳,经典单 Agent RL 证明失效。本节三个算法都对付它:MADDPG 的全局 critic 看到全部动作,值估计平稳;QMIX 把学习移到联合 Q 空间,最优性定义良好;MAPPO 的中心值函数抑制他人策略变化带来的方差。
在 LLM-Agent 系统里,非平稳性表现为「我的 Agent 上个月好好的,现在上游那个 Agent 变了,我的就出问题」。用 CTDE 训练 MARL 是原则性修复;提示级修复更快但不持久。
训练真实网络是第 09 章(强化学习)的主题。本节搭脚本化策略版本,演示 CTDE、值分解、中心值函数三个模式,不做梯度更新。目标是在你拿起完整 MARL 库(PyMARL、MARLlib、RLlib multi-agent)前把模式内化。
code/main.py 实现三个模式演示,都在一个微型 2 Agent 合作网格世界上:
IndependentAgents——每个 Agent 把他者当环境。基线。MADDPGStyle——中心 critic 算联合值,actor 策略据此更新。脚本化策略改进。QMIXStyle——带单调混合器的值分解。MAPPOStyle——中心值函数,策略对共享基线更新。四者跑相同回合,报告平均到目标步数。CTDE 变体收敛到更短路径。
def maddpg_critic_update(critic, batch): # critic 输入含全部 Agent 的 (obs, action) s_joint = concat(batch.obs_1, batch.obs_2, batch.act_1, batch.act_2) q = critic(s_joint) target = batch.reward + gamma * critic_next(s_joint_next) loss = mse(q, target.detach()) return loss def maddpg_actor_step(actor_i, critic, obs_i): # actor 只用自己的 obs,但梯度穿过看到全局的 critic a_i = actor_i(obs_i) q = critic(obs_joint, a_1, ..., a_i, ..., a_n) (-q).backward() # 最大化 Q
设计要点:CTDE 的承重分离是 critic 与 actor 的「信息不对称」——critic 训练时贪婪地吃全局信息以降方差,actor 部署时却被刻意饿着只给
o_i。这一道不对称是「训练用全局、执行用局部」的全部秘密:把两者信息源弄成一样(都给全局或都给局部),要么不可部署,要么学不动。
运行 python3 code/main.py,期望输出:独立 Agent 平均约 6 步;CTDE 变体收敛向约 3.5 步(4×4 网格最优是 3)。尽管是脚本化策略,模式差异仍显现。
| 算法 | 模式 | 合作/竞争 | 扩展性 | 2026 定位 |
|---|---|---|---|---|
| MADDPG | CTDE + 逐 Agent 全局 critic | 合作、竞争、混合 | ~10 Agent 后需近似 | 混合场景的参考 |
| QMIX | 单调值分解 | 仅合作 | 中(SMAC 主导) | 合作同质团队 |
| MAPPO | 中心值函数 + PPO | 合作(可扩展竞争) | 好 | 默认基线 |
| QTRAN/QPLEX | 放松单调性 | 合作 | 中 | QMIX 失守时 |
💡 心法:2026 年先用 MAPPO。 Yu 等 2022 把它立成基线,先复现它,能省下数周追 fancier 方法的时间。任何新 MARL 法都得先过 MAPPO 这关才有说服力。
outputs/skill-marl-picker.md:为给定多智能体任务挑 MARL 算法——合作 vs 竞争、同质 vs 异质、动作空间类型、规模、奖励信号。
code/main.py,测独立与 MAPPO 式 Agent 的到目标步数差。在 6×6 网格上差变大还是变小?o_i;失败模式是 critic 随 N 增长、~10 Agent 后不扩展。Q_tot = f(Q_1,...,Q_n),df/dQ_i>=0 保证 argmax 分布干净;合作同质团队的完美契合。下一节,我们把「协调」推向「交易」——Agent 经济、token 激励与声誉:看五层栈(DePIN → 身份 → 认知 → 结算 → 治理)、Shapley 值的公平功劳归属、以及二价 token 拍卖如何让博弈论机器具体落地。