QMIX(2018):单调值函数分解强化学习

QMIX(2018):单调值函数分解强化学习

导出时间:2025/12/19 13:30:48




1 、研究背景和动机

一、先给你一句“人话版结论”

QMIX 研究的是: 在一群人必须各自独立行动的情况下,能不能用一个“聪明的总评分规则”,让每个人只顾把自己做好,最终团队一定不会跑偏。


二、问题从一个“团队打游戏”的故事开始

想象一个非常具体的场景👇

场景:五个玩家一起打副本(纯合作)

  • 每个人:
    • 只能看到自己屏幕的一小块
    • 自己操作角色(走位、攻击)
  • 副本结束:
    • 只给一个“团队评分”
    • 没有“个人得分”
你现在要教这五个人如何变强

三、第一种天真做法:各练各的(IQL)

比喻版本

你对五个人说:

“别管别人,你就假装自己一个人打游戏,看自己按什么键之后,团队评分高,就多用这个操作。”

会发生什么?

  • A 在练走位
  • B 在练输出
  • C 在乱跑探索
  • D 在换打法
  • E 也在试新东西
于是对每个人来说:

环境天天在变 “昨天这个操作还行,今天怎么不行了?”

👉 这就是 独立 Q 学习的非平稳性
问题不是你学不会,是“队友也在乱动”

四、第二种极端:一个“总指挥大脑”(集中式 Q / COMA)

比喻版本

你说:

“算了,你们都别自己想了 我来做一个超级教练 看全场录像、所有操作 告诉你们: ‘你们五个人一起按这五个键,最好’。”

问题来了

  • 五个人
  • 每人 10 个操作
组合数: 10 × 10 × 10 × 10 × 10 = 10 万
再多一点人,直接爆炸。
👉 联合动作空间炸了
而且如果用策略梯度(像 COMA):
  • 算法复杂
  • 信号嘈杂
  • 学起来慢

五、第三种尝试:简单加分制(VDN)

比喻版本

你又想了个主意:

“那我这样打分吧: 团队总分 = A 的表现 + B 的表现 + C 的表现 + ……”

于是:
  • 每个人都有一个“个人评分器”
  • 团队分 = 所有人分数相加

好处

  • 每个人只看自己分数
  • 执行超级简单
  • 稳定、好学

但问题是……

现实里的合作很多时候是:

“单看个人,都一般 配合在一起,突然很强”

比如:
  • A 抗伤害
  • B 输出
  • C 控制
👉 不是简单相加能描述的
VDN 就像:

只会算“1+1=2”的合作


六、QMIX 的关键顿悟(非常重要)

QMIX 的作者突然意识到一件事:

我们真正需要的,不是把团队分数“完全拆开”,而是保证“做决策时不会冲突”。

换句话说:

我不在乎你们的分数是怎么合成的,我只在乎:“每个人各自选最好的操作, 拼在一起是不是团队最优?”


七、QMIX 的核心比喻:

“只要总评分规则是单调的,就不会带偏团队”

什么叫“单调”?用人话说:

你个人表现变好, 团队评分绝对不会因此变差。

你可以把 QMIX 想成:

一个“团队评分器”, 它可能很复杂、非线性、弯弯绕绕, 但它有一条铁律:任何一个人变强,团队一定不会吃亏。


一个非常直观的生活类比

想象公司 KPI:
  • 每个人有自己的绩效分
  • 公司总绩效不是简单相加
    • 可能有协同
    • 有加权
    • 有非线性规则
但公司承诺一件事:

“只要你个人绩效更好,公司总绩效绝不会因此下降。”

👉 这就是 QMIX 的单调性假设

八、为什么这个想法“刚刚好”?

它同时解决了三件事:


✅ 1. 可以集中训练

  • 训练时:
    • 用全局状态
    • 用复杂网络
    • 用“聪明”的评分规则

✅ 2. 执行时完全去中心化

  • 每个人只看:
    • 自己的局部 Q
  • 各自选:
    • 自己最优动作
不需要通信,不需要裁判

✅ 3. 比 VDN 表达力强得多

  • 不只是加法
  • 可以学复杂协作
  • 但仍然安全可拆



2、模型网络结构



image.png

一、先给你一张“全局地图”(对应图 b)

我们先看 中间那张 (b),因为它是全系统的骨架。

图 (b) 在说什么?

你看到三层:
Agent 1 Agent 2 ... Agent N ↓ ↓ ↓ Q1 Q2 ... Qn ↓↓↓ Mixing Network Q_tot
一句人话:

每个 Agent 只负责算“我自己现在干这件事好不好”,Mixing Network 负责把这些“个人判断” 合成为一个“团队判断”。


二、先从最简单的地方讲:Agent 网络(图 c)

图 (c):每个 Agent 自己的小脑袋

你只看右边这张 (c)。

1️⃣ Agent 能看到什么?

  • 自己的局部观测 ota
  • 自己上一步做了什么 ut−1a
👉 完全不知道别人
这就是去中心化执行。

2️⃣ Agent 内部在干什么?

(o_t^a, u_{t-1}^a) MLP GRU ——> h_t^a(记忆) MLP Q_a(τ^a, ·)
直觉版解释:
  • MLP:把“我现在看到的东西”整理一下
  • GRU: 👉 帮 Agent 在心里记住: “刚才发生了什么,我现在大概处在什么局势”
  • 输出:
    • 对自己所有动作的 Q 值
你可以把它想成:

每个 Agent 都在问: “在我自己看来,现在选哪个动作对我最好?”


3️⃣ 执行阶段怎么选动作?

  • Agent 自己:
    • 对 Qa做 argmax
    • 加一点 ε-探索
⚠️ 注意: Agent 完全不知道 Q_tot 是怎么来的

三、关键创新来了:Mixing Network(图 a)

现在我们来看 最“怪”的那一块:左边 (a)
这正是 QMIX 的灵魂

1️⃣ Mixing Network 是干嘛的?

它做一件事:

把所有 Agent 的 Q 值 合成一个团队 Q:Qtot

但它 不是简单相加(那是 VDN)

2️⃣ 一个非常重要的比喻(先理解直觉)

想象:
  • 每个 Agent 的 Q: 👉 是“我自己现在打几分”
  • Mixing Network: 👉 是“公司如何根据个人表现算总 KPI”
这个 KPI 规则:
  • 很复杂
  • 非线性
  • 会随“公司当前局势”变化
必须满足一条铁律

任何一个员工评分提高, 公司总评分绝不会下降。


3️⃣ 这条铁律在图里怎么体现?

你看图 (a):

🔴 红色部分:Hyper Network(超网络)

🔵 蓝色部分:Mixing Network(混合网络)


Hyper Network 在干什么?

  • 输入:全局状态 st 👉 只在训练时能看到
  • 输出:
    • Mixing Network 的权重 W1,W2
    • 偏置项
你可以理解为:

局势分析员 根据当前战场局势, 动态调整“公司算分规则”。


为什么权重要是“非负的”?

图中红色网络生成的权重,会经过 abs / ReLU,确保:

所有权重 ≥ 0

这一步极其关键。

非负权重意味着什么?(非常重要)

如果某个 Agent 的 Q 变大, 那么 Q_tot 一定不会变小。

这就是 QMIX 的单调性约束

4️⃣ Mixing Network 自己在干什么?

蓝色的 Mixing Network:
  • 输入:
  • Q1,Q2,…,Qn
  • 用 Hyper Network 生成的权重
  • 输出:
  • Qtot
你可以把它想成:

一个“带保险的加权组合器”

  • 权重可以变
  • 结构可以复杂
  • 但永远不做“坑队友”的事

四、把三张图连成一个完整“动画”

我们用一秒一帧的方式走一遍。

⏱ 时间步 t 发生了什么?

① 每个 Agent(图 c)

  • 看自己的局部观测
  • 用 GRU 和记忆
  • 算自己的 Qa
  • 选动作 uta
👉 完全去中心化

② 环境执行动作

  • 所有动作一起执行
  • 给一个 共享奖励 r

③ 训练时(图 a + b)

  • 所有 Agent 的 Qa 被送进 Mixing Network
  • 全局状态 sts_tst 送进 Hyper Network
  • 动态生成 Mixing Network 的权重
  • 得到 Qtot

④ 用 Qtot做 DQN 更新

  • TD 误差
  • 回放缓冲区
  • 标准 Q-learning

执行阶段会发生什么?

🔥 红色的 Hyper Network + 蓝色 Mixing Network 全部消失
只留下:

每个 Agent 的小脑袋 各自 argmax 自己的 Q



五、你现在该“真正理解”的 3 个关键点

如果你抓住这 3 点,QMIX 就算吃透了一半。

✅ 1️⃣ QMIX 不是在算“你贡献了多少”

那是 COMA 干的事。
QMIX 在干的是:

“我保证你各自贪心选,不会毁掉团队最优。”



✅ 2️⃣ Hyper Network 的作用不是通信

它不是让 Agent 交流。
它的作用是:

让“团队评分规则”随局势变化


✅ 3️⃣ 单调性是 QMIX 一切设计的核心

所有复杂结构,
都是为了这一句话服务:

个体变好 → 团队不可能变差


六、用一句话帮你“记住这张图”

**QMIX 的结构 =多个“只看自己”的 Agent

  • 一个“看全局、但永远不会坑人的”混合评分器。**