概述
MAPPO(Multi-Agent Proximal Policy Optimization)是一种高效的多智能体强化学习算法,由Google Research在2021年提出。它将单智能体PPO算法成功扩展到多智能体场景,在多个基准测试中取得了优异的性能。
为什么需要MAPPO?
多智能体强化学习面临的挑战:
| 挑战 | 描述 |
|---|---|
| 非平稳性 | 其他智能体的策略在变化,环境对每个智能体来说是非平稳的 |
| 信用分配 | 团队奖励难以分配到个体贡献 |
| 可扩展性 | 智能体数量增加时状态空间指数增长 |
| 部分可观测 | 每个智能体只能观测局部信息 |
MAPPO的解决方案:
- 集中训练分布执行(CTDE):训练时利用全局信息,执行时只用局部观测
- 值函数分解:集中式Critic学习全局价值
- 简单有效:基于PPO,无需复杂的价值分解网络
一、背景知识
1.1 PPO回顾
PPO是一种on-policy策略梯度算法,核心思想是通过限制策略更新幅度来保证训练稳定性:
$$ L^{CLIP}(\theta) = \mathbb{E}_t \left[ \min\left( r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t \right) \right] $$其中:
- $r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}$ 为重要性采样比率
- $\hat{A}_t$ 为优势函数估计
- $\epsilon$ 为裁剪参数
1.2 多智能体设置
考虑一个部分可观测的马尔可夫博弈(POSG):
$$ \mathcal{G} = \langle \mathcal{N}, \mathcal{S}, \{\mathcal{A}_i\}, \{\mathcal{O}_i\}, P, \{R_i\}, \gamma \rangle $$- $\mathcal{N} = {1, 2, \ldots, n}$:智能体集合
- $\mathcal{S}$:全局状态空间
- $\mathcal{A}_i$:智能体 $i$ 的动作空间
- $\mathcal{O}_i$:智能体 $i$ 的观测空间
- $P(s’|s, \mathbf{a})$:状态转移概率
- $R_i(s, \mathbf{a})$:智能体 $i$ 的奖励函数
CTDE范式:
|
|
二、MAPPO算法设计
2.1 核心思想
MAPPO的核心设计:
- 独立Actor:每个智能体维护独立的策略网络 $\pi_{\theta_i}(a_i|o_i)$
- 集中Critic:训练时使用全局状态 $s$ 学习值函数 $V_\phi(s)$
- PPO目标:使用PPO的目标函数进行策略优化
2.2 算法架构
|
|
2.3 参数共享策略
MAPPO支持两种参数配置:
1. 独立参数(Individual Parameters)
每个智能体有独立的Actor和Critic:
$$ \theta_1, \theta_2, \ldots, \theta_n, \quad \phi_1, \phi_2, \ldots, \phi_n $$优点:可以学习异构策略 缺点:参数量大,数据效率低
2. 参数共享(Parameter Sharing)
所有智能体共享同一个网络:
$$ \theta_1 = \theta_2 = \ldots = \theta_n = \theta $$优点:参数效率高,数据共享 缺点:假设智能体同构
建议:同构智能体使用共享参数,异构智能体使用独立参数或添加智能体ID编码。
三、核心组件实现
3.1 Actor网络
|
|
3.2 Critic网络
|
|
3.3 MAPPO Agent
|
|
四、训练流程
4.1 经验收集
|
|
4.2 完整训练循环
|
|
五、环境接口示例
5.1 兼容OpenAI Gym的接口
|
|
六、训练技巧与调优
6.1 MAPPO关键超参数
| 超参数 | 推荐值 | 说明 |
|---|---|---|
clip_epsilon |
0.2 | PPO裁剪参数 |
gae_lambda |
0.95 | GAE平滑参数 |
lr_actor |
3e-4 | Actor学习率 |
lr_critic |
1e-3 | Critic学习率 |
entropy_coef |
0.01 | 熵正则化系数 |
value_loss_coef |
0.5 | 价值损失系数 |
n_epochs |
5-10 | 每次收集后的更新轮数 |
n_steps |
128-256 | 每次收集的步数 |
batch_size |
32-64 | 小批量大小 |
6.2 值归一化
值归一化对MAPPO的性能至关重要:
|
|
6.3 PopArt
更高级的值归一化技术:
|
|
6.4 网络架构选择
|
|
七、实验结果
7.1 基准测试
MAPPO在多个基准上取得了优秀性能:
StarCraft II Micromanagement (SMAC):
| 环境 | MAPPO | QMIX | MADDPG |
|---|---|---|---|
| 3m | 100% | 100% | 95% |
| 8m | 100% | 98% | 88% |
| 2s3z | 97% | 88% | 72% |
| 5m_vs_6m | 85% | 78% | 62% |
| corridor | 100% | 100% | 85% |
Multi-Agent Particle Environment (MPE):
| 环境 | MAPPO | MADDPG |
|---|---|---|
| Spread | -400 | -380 |
| Reference | -45 | -50 |
| Predator-Prey | 0.85 | 0.80 |
7.2 与其他算法比较
| 算法 | 类型 | 优点 | 缺点 |
|---|---|---|---|
| MAPPO | Policy Gradient | 简单有效,稳定 | On-policy,数据效率低 |
| QMIX | Value Decomposition | 可扩展,off-policy | 需要价值分解假设 |
| MADDPG | Actor-Critic | Off-policy,连续动作 | 训练不稳定 |
| COMA | Actor-Critic | Counterfactual baseline | 计算复杂 |
八、完整示例代码
8.1 运行脚本
|
|
九、总结
9.1 MAPPO优势
- 简单:基于成熟的PPO算法,易于实现和调试
- 有效:在多个基准上达到最优性能
- 稳定:PPO的裁剪机制保证训练稳定性
- 灵活:支持参数共享和独立参数
9.2 使用建议
- 值归一化:必须使用,显著提升性能
- 参数共享:同构智能体推荐使用
- Agent ID:异构智能体需要添加ID编码
- 超参数:从默认值开始,根据任务调整
9.3 扩展方向
- RNN:处理部分可观测环境
- Transformer:更好的长序列建模
- 分层:处理复杂任务分解
- 离线RL:从固定数据集学习
参考资料
- Yu et al. “The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games”, NeurIPS 2021
- Schulman et al. “Proximal Policy Optimization Algorithms”, arXiv 2017
- Rashid et al. “QMIX: Monotonic Value Function Factorisation”, ICML 2018
- Lowe et al. “Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments”, NIPS 2017
- SMAC: https://github.com/oxwhirl/smac
- MPE: https://github.com/openai/multiagent-particle-envs