本文通过基于全局状态而不是局部观测来学习一个策略分布和中心化的值函数,以此将单智能体 PPO 算法扩展到多智能体场景中。为策略函数和值函数分别构建了单独的网络并且遵循了 PPO 算法实现中的常用实践技巧:包括广义优势估计(Generalized Advantage Estimation,GAE)、观测归一化、梯度裁剪、值函数裁剪、层归一化、带有正交初始化的ReLU激活函数和大 batch size。并且,文章提出了5个可以提高 MAPPO 表现的 5 个实用建议。

摘要

近端策略优化(PPO)是一种流行的策略强化学习算法,但在多智能体环境下,其利用率明显低于 off-policy 学习算法。这通常是因为在多智能体问题中,on-policy 的方法比 off-policy 的方法的样本效率要低得多。在这项工作中,我们研究了多智能体 PPO(MAPPO),它是 PPO 的一个变体,专门用于多代理设置。使用 1-GPU 桌面计算机,我们展示了 MAPPO 在三个流行的多代理测试平台上取得了令人惊讶的强大性能:粒子世界环境、星际争霸多代理挑战和 Hanabi 挑战,超参数调整最少,并且没有任何特定领域的算法修改或架构。在大多数环境中,我们发现,与 off-policy 基线相比,MAPPO 取得了很好的结果,同时显示出可比的样本效率。最后,通过消融研究,我们给出了对 MAPPO 实际性能影响最大的实现和算法因素。

算法

PPO(Proximal Policy Optimization)采用的是经典的 actor-critic 架构,是目前性能最好的单智能体强化学习算法,也是 OpenAI 在进行实验时首选的算法。MAPPO(Multi-agent PPO)是 PPO 算法应用于多智能体任务的变种,同样采用 actor-critic 架构,不同之处在于此时 critic 学习的是一个中心价值函数(centralized value function),简而言之,此时 critic 能够观测到全局信息(global state),包括其他 agent 的信息和环境的信息。(这点和 MADDPG 的critic一样)
clipboard.png

提升 PPO 性能的5个关键

  1. Value normalization: 研究者采用 PopArt 对 value 进行 normalization,并且指出使用 PopArt 有益无害。
  2. Agent Specific Global State: 采用 agent-specific 的全局信息,避免全局信息遗漏以及维度过高。值得一提的是,研究者发现 StarCraftII 中原有的全局信息存在信息遗漏,甚至其所包含的信息少于 agent 的局部观测,这也是直接将 MAPPO 应用在 StarCraftII 中性能表现不佳的重要原因。
  3. Training Data Usage: 简单任务中推荐使用 15 training epochs,而对于较难的任务,尝试 10 或者 5 training epochs。除此之外,尽量使用一整份的训练数据,而不要切成很多小份(mini-batch)训练。
  4. Action Masking: 在多智能体任务中经常出现 agent 无法执行某些 action 的情况,建议无论前向执行还是反向传播时,都应将这些无效动作屏蔽掉,使其不参与动作概率计算。
  5. Death Masking: 在多智能体任务中,也经常会出现某个 agent 或者某些 agents 中途死掉的情况(例如 StarCraftII)。当 agent 死亡后,仅保留其 agent id,将其他信息屏蔽能够学得更加准确的状态价值函数。
  • 实验环境 MPE、SMAC、Hanabi
  • 对比算法 MADDPG、QMix和IPPO

    总结

    这篇文章实际上并没有提出新的算法,而是针对于现有的PPO算法在多智能体场景中的应用进行了测试,并提出了5条可以提高 MAPPO 算法数据效率和训练效果的建议。MARL算法大致可以分成集中训练和分布式训练两种框架,集中式训练直接通过给出联合动作将单智能体算法推广到多智能体场景中,而分布式训练则让每个智能体独立进行训练,可能会导致环境不稳定性。而集中式训练和分布式执行的框架在上述两个框架之间架起了桥梁。

参考

  1. MAPPO:The Surprising Effectiveness of MAPPO in Cooperative, Multi-Agent Games
  2. 【总结】解决MAPPO(Multi-Agent PPO)问题技巧
  3. MAPPO在多智能体合作场景中的惊人表现

About

[Homepage]
[PDF]
[Code]