COMA(2017):引入反事实基线的多智能体策略梯度方法
1、COMA 想解决的核心痛点:团队奖励下的“甩锅难题”
团队赢了/输了,你不知道自己这一步到底贡献了多少。
- 你们进球了 到底是你传球传得好?
- 还是队友个人能力强?
- 或者对方失误?
- 每个人都拿到同一个奖励信号
- 每个人都把“赢球”当成“自己做对了”
- 训练信号噪声巨大、学习很慢、容易学歪
COMA 的一句话方法论
训练时用一个“中央裁判”(central critic)评估联合行动; 更新每个智能体时,用“反事实基线”问一句:“如果只有我换个动作,其他人都不变,结果会怎样?”
这句话就是 COMA 的灵魂。
2、COMA的核心思想
一、先给你一个总览:COMA 到底在干什么?
COMA = 集中式裁判(Critic)在训练时帮忙算清楚“每个人的真实贡献”, 执行时每个智能体自己独立行动(Actor)。
二、COMA 的整体框架:集中式 Critic + 分布式 Actor
- 比赛时(执行阶段) 每个球员只能看到自己周围,自己做决定
- 赛后复盘(训练阶段) 有一个中央分析师,能看到全场录像,帮你分析“刚才那个进球到底是谁的功劳”
三、Actor:每个智能体自己做决定(去中心化执行)
3.1 Actor 在做什么?
根据我现在能看到的东西,选一个动作。
它能看到什么?
- 自己的局部观测
- 自己的历史信息(论文里用 RNN / GRU 处理)
它输出什么?
- 一个 离散动作的概率分布(softmax)
每个小兵脑子里的“局部驾驶员”
- 看附近
- 凭经验
- 自己决定动不动、打谁、往哪走
- 通信可能受限
- 视野有限(星际争霸里单位只能看到附近)
四、Critic:训练时的中央“大脑”
4.1 Critic 在干什么?
- 全局状态
s - 所有人的历史
τ - 所有人的联合动作
u
Q(s, τ, u):在当前局面下,大家一起这么做,未来期望奖励是多少
一个赛后裁判 / 战术分析师
4.2 为什么“只有 centralized critic 还不够”?
哪怕用集中式 TD 误差当优势,信用分配仍然没解决,梯度依旧很嘈杂
- 团队奖励是大家一起造成的
- 你用一个总 Q 来更新某个智能体
- 但这个 Q 的变化,可能是:
- 队友突然打得好
- 环境随机性
- 或者你真的做了对的事
“这个奖励是因为我,还是别人?”
五、COMA 的关键创新:反事实基线(Counterfactual Baseline)
5.1 小白版直觉:给每个人一个“如果你没这么做”的对照组
A = Q − V
Aᵃ =当前大家这么做的 Q− 保持队友动作不变,只把“我”的动作随机换一遍后的平均 Q
“如果队友都没变,只是我随便按策略换动作,团队表现平均会怎样?”
5.2 用一个非常直观的比喻
- 当前动作组合 → 赢得很漂亮(高 Q)
- 现在我们问 你这个人:
- 队友动作固定不动
- 如果你随机换别的动作
- 平均下来,胜率会不会变差?
- 换动作平均表现更差 → 说明你刚才那个动作 真的有贡献
- 换不换都差不多 → 说明这波不是你带飞的
我们并没有真的让你换动作,只是在“假设如果你换了会怎样”
5.3 数学直觉(不用怕)
baselineᵃ = Σ πᵃ(uᵃ | τᵃ) · Q(s, τ, uᵃ, u⁻ᵃ)
- 只对 你自己的动作 做期望
- 队友动作全部固定
Aᵃ = Q(当前联合动作) − baselineᵃ
六、为什么反事实基线能显著“降噪”?
“奖励变化到底是谁造成的?”
- 把队友的随机探索锁死
- 不让他们的波动污染你的梯度
- 只比较你自己动作变化带来的差异
- Actor 接收到的梯度信号更“干净”
- 学习更稳定
- 不容易学偏
它在训练时帮你做了一次“因果隔离”
七、它和 MADDPG 的一句话区别
- MADDPG
- 每个 agent 一个 centralized critic
- 主要解决 非平稳性
- 多用于 连续动作、合作 + 竞争
- COMA
- 一个共享 central critic
- 主要解决 信用分配
- 离散动作、纯合作
3、COMA 的网络结构
一、先给整张图一个“总故事”
比赛时:只有蓝色 Actor 在各自和环境互动 训练时:红色 Critic 站在上帝视角,事后帮每个人算“你这一步到底值不值”
二、图 (a):信息流动图 —— “比赛现场 + 赛后裁判”
1️⃣ 蓝色部分:Actor ↔ Environment(真实世界在发生什么)
每个 Actor 在干什么?
每个士兵只戴着自己的夜视仪行动
Environment 在干什么?
- 接收所有智能体的动作:(ut1,ut2)
- 给出:
- 新的局部观测
- 一个共享奖励 rt
奖励是 团队的,不是个人的
2️⃣ 红色部分:Central Critic(赛后裁判)
Critic 在“偷看”什么?
一个能看到整张地图 + 回放录像的裁判
Critic 输出什么?
- At1
- At2
“你这一步,比‘如果你乱选动作’好多少”
三、图 (b):Actor 网络结构 —— “每个智能体自己的小脑袋”
1️⃣ Actor 的输入
- 环境是 部分可观测
- 当前看不到的东西,可能要靠历史推断
Actor 在心里不断更新一份“我猜现在局势大概是这样”的记忆
2️⃣ Actor 的输出
Actor 永远只输出“我现在想怎么做” 从来不关心奖励是怎么来的
四、图 (c):Central Critic —— COMA 的灵魂所在
1️⃣ Critic 的输入(为什么它这么强)
2️⃣ Critic 干的关键一件事(非常重要)
❌ 它不是输出一个联合 Q 表
✅ 它做的是:
固定其他人的动作,一次前向,输出“我这个 agent 所有可能动作的 Q 值”
裁判一口气打出一张表:“如果你刚才改成第 1 个动作会怎样 “如果你改成第 2 个动作会怎样” ……
3️⃣ COMA:反事实优势是怎么在图 (c) 里算出来的?
Step 1:拿到 Q 向量
Step 2:用你的策略 πa 做加权平均
“如果你按自己当前策略乱选动作,平均表现会怎样”
Step 3:减去当前真实动作的 Q
你这一步的“净贡献”
五、把三张图串成一个“时间步动画”
- 蓝色 Actor
- 各自用 GRU 和记忆
- 根据局部观测选动作
- 环境
- 执行动作
- 给一个共享奖励
- 红色 Critic(只在训练)
- 看全局信息
- 给每个 Actor 算:
- “如果你换动作,平均会怎样?”
- 反事实优势 Aᵃ
- 只衡量“你自己的动作变化”
- 更新 Actor
- Actor 学会:
- “哪些动作在团队里真的有用”
六、你现在应该能“看懂这张图”的关键点
- 为什么红色部分执行时可以删掉? 👉 因为它只负责“事后评分”,不负责决策
- 为什么 Critic 一次前向就够? 👉 因为它输出的是“我所有动作的 Q 向量”
- 反事实 baseline 的本质是什么? 👉 固定队友,只比较“我换动作会不会更差”