COMA (Counterfactual Multi-Agent Policy Gradient)
Deep_Reinforcement_Learning/Deep_Reinforcement_Learning/MARL/COMA.mdCOMA (Counterfactual Multi-agent Policy Gradient) 是由牛津大学团队在 2018 年提出的,它解决了一个直击灵魂的问题:
在一个团队里,我怎么知道这一分是因为"我"表现好,还是因为"队友"带飞?
这就是多智能体领域臭名昭著的**信度分配(Credit Assignment)**难题。COMA 用了一个极其硬核的逻辑来破解它:反事实推理(Counterfactual Reasoning)。
一、 核心痛点:团队奖励的"大锅饭"迷雾
在《星际争霸》这种游戏里,通常只有全队的总分(比如击杀敌军得 10 分)。
- 如果 5 个陆战队员围攻 1 个小狗,最终小狗死了,全队加 10 分。
- 此时,其中一个陆战队员其实一直在往反方向反向走位(划水)。
- 如果直接用这个 +10 分去更新所有人的 Policy,那个划水的队员也会觉得自己走位很骚,从而强化了这种错误行为。
传统的 A2C 算法使用优势函数 。但在多智能体里,这个 是全队的平均期望,它没法告诉你"你"这个特定动作对总分的边际贡献是多少。
二、 COMA 的杀招:反事实基准 (Counterfactual Baseline)
COMA 的核心思想源于经济学:要衡量你的价值,就看"如果没有你(或者你换个动作),团队会损失多少"。
1. 上帝视角的 Critic (Centralized Critic)
和 MADDPG 类似,COMA 也有一个上帝视角的 Critic。但它的输入非常特殊:
- 它接收全局状态 。
- 它接收所有其他队友的动作 。
- 它输出的是针对智能体 的所有可能动作的 Q 值。
2. 计算"反事实优势"
这是 COMA 最天才的公式。对于智能体 ,它计算的优势函数不是减去 ,而是减去一个虚拟的基准:
大白话翻译:
- 左边 :在队友动作 固定不动的前提下,你实际做了动作 拿到的分数。
- 右边 :在队友动作固定不动的前提下,如果你随机换一个动作,平均能拿多少分。
结论: 如果两者相减是正数,说明:"由于你这步灵光一现的操作,团队表现优于了你的平均水平。" 这一份功劳,实打实地记在你头上。那个划水的队员会发现,他换个动作(比如开火)得分会更高,所以他的优势函数是负的,算法会修正他的行为。
三、 工程奇迹:一个 Critic 顶一百个
你可能会问:如果有 10 个智能体,每个智能体都要算自己的"反事实基准",那是不是要跑 10 次 Critic 网络?那不得卡死?
COMA 的作者设计了一个极其巧妙的输出结构:每个智能体的 Critic 网络一次性输出该智能体所有动作的 Q 值。
通过这种方式,我们只需要给每个智能体跑一次前向传播,就能拿到所有动作的 。然后根据当前策略 做一个简单的加权求和(点积),就能算出那个复杂的"反事实基准"。计算量极其经济!
四、 COMA 的历史地位与局限
- 功绩:它是第一个在大规模多智能体环境(StarCraft II)中证明"基于策略"的方法也能通过精细的信度分配搞定微操的算法。
- 局限:
- 集中式训练的压力:Critic 需要知道所有人的动作,当智能体数量增加时,输入空间爆炸,Critic 很难练准。
- On-Policy 的硬伤:COMA 属于 On-Policy 算法(学一波丢一波),采样效率远不如后来的 QMIX(Off-Policy)。
出链
- [[MADDPG]]
- [[QMIX]]