摘要:
现实世界很少是纯粹的“你好我好大家好”(完全合作),也很少是纯粹的 1v1 单挑(完全竞争)。最常见的形态是团队对抗 (Team-based Adversarial):例如王者荣耀/Dota2 的 5v5,或者机器人足球世界杯。在这种混合型 (Mixed)场景下,智能体面临双重人格分裂:对内,它是无私的队友;对外,它是冷酷的杀手。本文将深入剖析混合型 MARL 的数学模型,详解MADDPG算法如何通过“中心化 Critic”一统江湖,并介绍Population-Based Training (PBT)如何解决复杂的 Meta-Game 进化。
目录 (Table of Contents)
- 什么是混合型 MARL?
- 定义:一般和博弈 (General-Sum Game)
- 典型场景:团队零和 (Team Zero-Sum)
- 双重困境:内忧外患
- 内忧:信誉分配与协作
- 外患:非平稳性与策略克制
- 核心算法:MADDPG (Multi-Agent DDPG)
- CTDE 的完美落地
- “我知道你知道我知道”:全知全能的 Critic
- 算法推导与 Loss 设计
- 进阶技巧:种群训练 (Population-Based Training, PBT)
- 为什么梯度下降不够用了?
- 从“炼丹”到“进化论”
- OpenAI Five 的成功秘诀
- 实战考量:Reward Shaping
- 个人英雄主义 vs 团队精神
- 总结
1. 什么是混合型 MARL?
1.1 定义:一般和博弈 (General-Sum Game)
在混合型环境中,智能体之间的关系既不是完全一致(R 1 = R 2 R^1=R^2R1=R2),也不是完全对立(R 1 = − R 2 R^1=-R^2R1=−R2)。
任意智能体i ii和j jj的奖励R i , R j R^i, R^jRi,Rj之间没有固定的数学约束。
1.2 典型场景:团队零和 (Team Zero-Sum)
这是混合型 MARL 中研究最多的子集。
假设有两支队伍:红队N A \mathcal{N}_ANA和 蓝队N B \mathcal{N}_BNB。
- 队内合作:∀ i , j ∈ N A , R i = R j = R A \forall i, j \in \mathcal{N}_A, R^i = R^j = R_A∀i,j∈NA,Ri=Rj=RA。
- 队间竞争:R A = − R B R_A = -R_BRA=−RB。
例子:
- 机器人足球 (RoboCup):你要传球给队友(合作),同时晃过对方后卫(竞争)。
- 无人机群战:红蓝双方无人机集群对抗。
2. 双重困境:内忧外患
混合型 MARL 之所以难,是因为它同时继承了前两类问题的难点,并且还发生了“化学反应”。
2.1 内忧:信誉分配 (Credit Assignment)
在团队内部,我们依然面临Lazy Agent问题。如果赢了比赛,是每个人都打得好,还是 4 个大神带 1 个坑货?如果 Reward 仅仅是“赢/输”,梯度信号会非常稀疏且充满噪声。
2.2 外患:非平稳性 (Non-Stationarity)
对于红队的一个 Agent 来说,环境变得极度不可预测:
- 队友在变(他在学习配合我)。
- 对手在变(他在学习针对我)。
这种动态耦合导致环境的状态转移概率P ( s ′ ∣ s , a i ) P(s'|s, a^i)P(s′∣s,ai)剧烈抖动。如果只用普通的 DQN/PPO,Agent 甚至无法判断 Reward 变低是因为自己变菜了,还是因为对手变强了。
3. 核心算法:MADDPG
2017 年,OpenAI 发表了MADDPG (Multi-Agent Deep Deterministic Policy Gradient),这是解决混合型 MARL 的里程碑式算法。它将CTDE (中心化训练,去中心化执行)框架发挥到了极致。
3.1 核心思想
- 执行 (Actor):每个 Agenti ii有自己的策略网络μ i ( o i ) \mu_i(o_i)μi(oi),只看局部观测。
- 训练 (Critic):每个 Agenti ii还有一个价值网络Q i ( x , a 1 , … , a N ) Q_i(\mathbf{x}, a_1, \dots, a_N)Qi(x,a1,…,aN)。注意,这个 Critic能看到所有人的观测x \mathbf{x}x和所有人的动作a \mathbf{a}a(包括队友和对手)。
为什么这么做有效?
通过把“对手的动作”a o p p o n e n t a_{opponent}aopponent作为输入喂给 Critic,环境对于 Critic 来说就变成了平稳的(Stationary)。
P ( s ′ ∣ s , a m e , a o p p o n e n t ) P(s' | s, a_{me}, a_{opponent})P(s′∣s,ame,aopponent)
因为a o p p o n e n t a_{opponent}aopponent已经是已知条件,状态转移不再像黑盒一样随机变化。
3.2 梯度公式
对于 Agenti ii,其 Actor 的更新梯度为:
∇ θ i J ≈ 1 K ∑ k ∇ θ i μ i ( o i ( k ) ) ⋅ ∇ a i Q i μ ( x ( k ) , a 1 ( k ) , … , a i , … , a N ( k ) ) ∣ a i = μ i ( o i ( k ) ) \nabla_{\theta_i} J \approx \frac{1}{K} \sum_k \nabla_{\theta_i} \mu_i(o_i^{(k)}) \cdot \nabla_{a_i} Q_i^{\mu}(\mathbf{x}^{(k)}, a_1^{(k)}, \dots, a_i, \dots, a_N^{(k)})|_{a_i=\mu_i(o_i^{(k)})}∇θiJ≈K1k∑∇θiμi(oi(k))⋅∇aiQiμ(x(k),a1(k),…,ai,…,aN(k))∣ai=μi(oi(k))
解读:
- Critic 告诉 Actor:“在当前大家都在乱战的情况下(x , a − i \mathbf{x}, \mathbf{a}^{-i}x,a−i),你的动作a i a_iai往哪个方向改,我的 Q 值能变大?”
- 即使对手是竞争关系,Critic 也能学会预测对手的威胁,从而指导 Actor 做出规避或反击动作。
3.3 代码逻辑 (PyTorch 伪代码)
# 混合型环境:Critic 输入必须包含所有人的信息classCentralizedCritic(nn.Module):def__init__(self,n_agents,obs_dim,act_dim):super().__init__()# 输入维度 = (单个观测 + 单个动作) * 智能体数量total_input=(obs_dim+act_dim)*n_agents self.net=nn.Sequential(nn.Linear(total_input,64),nn.ReLU(),nn.Linear(64,1))defforward(self,all_obs,all_acts):# all_obs: [batch, n_agents * obs_dim]# all_acts: [batch, n_agents * act_dim]x=torch.cat([all_obs,all_acts],dim=1)returnself.net(x)注:训练时,我们需要拿到对手的策略来计算 Target Q 值。如果对手策略未知,通常需要训练一个额外的网络来拟合对手策略。
4. 进阶技巧:种群训练 (Population-Based Training, PBT)
在混合型博弈中,仅靠 MADDPG 这种基于梯度的优化往往不够。
- 问题:梯度下降容易陷入局部最优。Agent 可能学会了一套“欺负新手”的策略,但一旦遇到从未见过的高手策略,瞬间崩溃(不够 Robust)。
- 解决:结合进化算法。
4.1 核心逻辑
像 OpenAI Five (Dota 2) 或 AlphaStar (StarCraft II) 这种神级 AI,其背后不仅仅是 RL,还有一个巨大的进化系统。
- 种群初始化:同时训练 100 个不同的 Agent 队伍。
- 锦标赛 (League):让这 100 个队伍互相打(或者打历史版本)。
- 优胜劣汰:每隔一段时间,把胜率最低的 20% 队伍杀掉。
- 进化 (Mutation):复制胜率最高的 20% 队伍,并随机修改它们的超参数(学习率、Reward 权重等),填补空缺。
这被称为Auto-Curriculum (自动课程学习)。Agent 的对手永远是最适合它当前水平的“磨刀石”。
5. 实战考量:Reward Shaping
在混合型任务中,如何定义 Reward 是成败关键。
5.1 个人 vs 团队
假设是一个 MOBA 游戏:
R t o t a l = w 1 ⋅ R k i l l + w 2 ⋅ R a s s i s t + w 3 ⋅ R w i n R_{total} = w_1 \cdot R_{kill} + w_2 \cdot R_{assist} + w_3 \cdot R_{win}Rtotal=w1⋅Rkill+w2⋅Rassist+w3⋅Rwin
- 如果w 1 w_1w1太大:Agent 变成“人头狗”,抢队友资源,最终输掉比赛。
- 如果w 3 w_3w3太大:早期梯度太稀疏,Agent 学不会基本操作。
OpenAI Five 的做法:
引入一个动态系数ϕ \phiϕ(Team Spirit)。
R i = ( 1 − ϕ ) ⋅ R i n d i v i d u a l + ϕ ⋅ R ˉ t e a m R_i = (1 - \phi) \cdot R_{individual} + \phi \cdot \bar{R}_{team}Ri=(1−ϕ)⋅Rindividual+ϕ⋅Rˉteam
- 训练初期,ϕ \phiϕ较低,鼓励 Agent 先学会怎么补刀、怎么走位(个人技能)。
- 训练后期,ϕ → 1 \phi \to 1ϕ→1,强迫 Agent 关注比赛胜负,牺牲小我。
6. 总结
混合型 MARL 是通向通用人工智能(AGI)的必经之路,因为它模拟了人类社会的复杂性。
- 模型:一般和博弈 / 团队零和博弈。
- 基石算法:MADDPG。通过中心化 Critic 解决非平稳性,允许 Actor 仅利用局部信息执行。
- 训练架构:CTDE + Self-Play + PBT。没有 PBT 的混合型 MARL 很难在复杂游戏中达到职业人类水平。
- 哲学:在混合环境中,“适应”比“优化”更重要。
炼丹师建议:
如果你的项目是多对多的对抗(如无人机混战),不要犹豫,起手MAPPO(MADDPG 的 On-Policy 升级版) +Shared Critic,如果算力允许,一定要加上League Training机制。
至此,MARL 的三大板块(合作、竞争、混合)已全部解析完毕。希望这一系列博文能助你在多智能体的世界里乘风破浪!🚀