深度强化学习实验室

官网:http://www.neurondance.com/

论坛http://deeprl.neurondance.com/

本文转载自:机器之心

清华和UC伯克利联合研究发现,在不进行任何算法或者网络架构变动的情况下,用 MAPPO(Multi-Agent PPO)在 3 个具有代表性的多智能体任务(Multi-Agent Particle World, StarCraftII, Hanabi)中取得了与 SOTA 算法相当的性能。

近些年,多智能体强化学习(Multi-Agent Reinforcement Learning,MARL)取得了突破性进展,例如 DeepMind 开发的 AlphaStar 在星际争霸 II 中打败了职业星际玩家,超过了 99.8% 的人类玩家;OpenAI Five 在 DOTA2 中多次击败世界冠军队伍,是首个在电子竞技比赛中击败冠军的人工智能系统;以及在仿真物理环境 hide-and-seek 中训练出像人一样可以使用工具的智能体。我们提到的这些智能体大多是采用 on-policy 算法(例如 IMPALA[8])训练得到的,这就意味着需要很高的并行度和庞大的算力支持,例如 OpenAI Five 消耗了 12.8 万块 CPU 和 256 块 P100 GPU 来收集数据样本和训练网络。

然而,大多数的学术机构很难配备这个量级的计算资源。因此,MARL 领域几乎已经达成共识:与 on-policy 算法(例如 PPO[3])相比,在计算资源有限的情况下,off-policy 算法(例如 MADDPG[5],QMix[6])因其更高的采样效率更适合用来训练智能体,并且也演化出一系列解决某些具体问题(domain-specific)的 SOTA 算法(例如 SAD[9],RODE[7])。

但是,来自清华大学与 UC 伯克利的研究者在一篇论文中针对这一传统认知提出了不同的观点:MARL 算法需要综合考虑数据样本效率(sample efficiency)和算法运行效率(wall-clock runtime efficiency)。在有限计算资源的条件下,与 off-policy 算法相比,on-policy 算法 --MAPPO(Multi-Agent PPO)具有显著高的算法运行效率和与之相当(甚至更高)的数据样本效率。有趣的是,研究者发现只需要对 MAPPO 进行极小的超参搜索,在不进行任何算法或者网络架构变动的情况下就可以取得与 SOTA 算法相当的性能。更进一步地,还贴心地给出了 5 条可以提升 MAPPO 性能的重要建议,并且开源了一套优化后的 MARL 算法源码(代码地址:https://github.com/marlbenchmark/on-policy)。

所以,如果你的 MARL 算法一直不 work,不妨参考一下这项研究,有可能是你没有用对算法;如果你专注于研究 MARL 算法,不妨尝试将 MAPPO 作为 baseline,说不定可以提高任务基准;如果你处于 MARL 研究入门阶段,这套源码值得拥有,据说开发完备,简单易上手。这篇论文由清华大学的汪玉、吴翼等人与 UC 伯克利的研究者合作完成。研究者后续会持续开源更多优化后的算法及任务(仓库指路:https://github.com/marlbenchmark)

论文链接:https://arxiv.org/abs/2103.01955

什么是 MAPPO

PPO(Proximal Policy Optimization)[4]是一个目前非常流行的单智能体强化学习算法,也是 OpenAI 在进行实验时首选的算法,可见其适用性之广。PPO 采用的是经典的 actor-critic 架构。其中,actor 网络,也称之为 policy 网络,接收局部观测(obs)并输出动作(action);critic 网络,也称之为 value 网络,接收状态(state)输出动作价值(value),用于评估 actor 网络输出动作的好坏。可以直观理解为评委(critic)在给演员(actor)的表演(action)打分(value)。MAPPO(Multi-agent PPO)是 PPO 算法应用于多智能体任务的变种,同样采用 actor-critic 架构,不同之处在于此时 critic 学习的是一个中心价值函数(centralized value function),简而言之,此时 critic 能够观测到全局信息(global state),包括其他 agent 的信息和环境的信息。

实验环境

接下来介绍一下论文中的实验环境。论文选择了 3 个具有代表性的协作 Multi-agent 任务,之所以选择协作任务的一个重要原因是合作任务具有明确的评价指标,便于对不同的算法进行比较。

第一个环境是 OpenAI 开源的 Multi-agent Particle World(MPE)任务(源代码指路:https://github.com/openai/multiagent-particle-envs)[1],轻量级的环境和抽象多样的任务设定使之成为快速验证 MARL 算法的首选测试平台。在 MPE 中有 3 个协作任务,分别是 Spread,Comm 和 Reference,如图 1 所示。

图 1:MPE 环境中的 3 个子任务:Spread,Comm 和 Reference

第二个环境是 MARL 领域著名的 StarCraftII(星际争霸 II)任务(源代码:https://github.com/oxwhirl/smac),如图 2 所示。这一任务最初由 M. Samvelyan 等人提出 [2],提供了 23 个实验地图,agent 数量从 2 到 27 不等,我方 agent 需要进行协作来打败敌方 agent 以赢得游戏。自该任务发布以来,有很多研究人员针对其特点进行了算法研究,例如经典算法 QMix[6] 以及最新发表的 RODE[7]等等。由于 StarCraftII 经过了版本迭代,并且不同版本之间性能有差距,特别说明,这篇论文采用的是最新版本 SC2.4.10。

图 2:StarCraftII 环境中的 2 个代表性地图:Corridor 和 2c vs. 64zg

第三个环境是由 Nolan Bard 等人 [3] 在 2019 年提出的一个纯协作任务 Hanabi(源代码:https://github.com/deepmind/hanabi-learning-environment),Hanabi 是一个 turn-based 的纸牌类游戏,也就是每一轮只有一个玩家可以出牌,相较于之前的多智能体任务,Hanabi 的一个重要特点是纯合作,每个玩家需要对其他玩家的意图进行推理,完成协作才能获得分数,Hanabi 的玩家数可以是 2-5 个,图 3 是 4 个玩家的任务示意图,感兴趣的读者可以自己尝试玩一下。

图 3:4 个玩家的 Hanabi-Full 任务示意图

实验结果

首先来看一下论文给出的实验结果,特别注意,论文所有的实验都在一台主机中完成,该主机的配置是 256 GB 内存, 一块 64 核 CPU 和一块 GeForce RTX 3090 24GB 显卡。另外,研究者表示,本文的所有的算法都进行了微调(fine-tune),所以本文中的复现的某些实验结果会优于原论文。

(1)MPE 环境

图 4 展示了在 MPE 中不同算法的数据样本效率和算法运行效率对比,其中 IPPO(Independent PPO)表示的是 critic 学习一个分布式的价值函数(decentralized value function),即 critic 与 actor 的输入均为局部观测,IPPO 和 MAPPO 超参保持一致;MADDPG[5]是 MARL 领域十分流行的 off-policy 算法,也是针对 MPE 开发的一个算法,QMix[6]是针对 StarCraftII 开发的 MARL 算法,也是 StarCraftII 中的常用 baseline。

从图 4 可以看出与其他算法相比,MAPPO 不仅具有相当的数据样本效率和性能表现(performance)(图(a)),同时还具有显著高的算法运行效率(图(b))。

图 4:在 MPE 中不同算法的数据样本效率和算法运行效率对比

(2)StarCraftII 环境

表 1 展示了 MAPPO 与 IPPO,QMix 以及针对 StarCraftII 的开发的 SOTA 算法 RODE 的胜率对比,在截断至 10M 数据的情况下,MAPPO 在 19/23 个地图的胜率都达到了 SOTA,除了 3s5z vs. 3s6z,其他地图与 SOTA 算法的差距小于 5%,而 3s5z vs. 3s6z 在截断至 10M 时并未完全收敛,如果截断至 25M,则可以达到 91% 的胜率。

图 5 表示在 StarCraftII 中不同算法的数据样本效率和算法运行效率对比。可以看出 MAPPO 实际上与 QMix 和 RODE 具有相当的数据样本效率,以及更快的算法运行效率。由于在实际训练 StarCraftII 任务的时候仅采用 8 个并行环境,而在 MPE 任务中采用了 128 个并行环境,所以图 5 的算法运行效率没有图 4 差距那么大,但是即便如此,依然可以看出 MAPPO 惊人的性能表现和运行效率。

表 1:不同算法在 StarCraftII 的 23 个地图中的胜率对比,其中 cut 标记表示将 MAPPO 和 QMix 截断至与 RODE 相同的步数,目的是为了与 SOTA 算法公平对比。

(3)Hanabi 环境

SAD 是针对 Hanabi 任务开发的一个 SOTA 算法,值得注意的是,SAD 的得分取自原论文,原作者跑了 13 个随机种子,每个种子需要约 10B 数据,而由于时间限制,MAPPO 只跑了 4 个随机种子,每个种子约 7.2B 数据。从表 2 可以看出 MAPPO 依然可以达到与 SAD 相当的得分。

表 2:MAPPO 和 SAD 在 2 个玩家的 Hanabi-Full 任务的得分对比。

5 条小建议

看完了论文给出的实验结果,那么,回到最开始的问题,你用对 MAPPO 了吗?

研究者发现,即便多智能体任务与单智能体任务差别很大,但是之前在其他单智能体任务中的给出的 PPO 实现建议依然很有用,例如 input normalization,value clip,max gradient norm clip,orthogonal initialization,GAE normalization 等。但是除此之外,研究者额外给出了针对 MARL 领域以及其他易被忽视的因素的 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,将其他信息屏蔽能够学得更加准确的状态价值函数。

更多的实验细节和分析可以查看论文原文。

参考链接:

[1] Lowe, R., Wu, Y., Tamar, A., Harb, J., Abbeel, P., and Mor-datch, I. Multi-agent actor-critic for mixed cooperative-competitive environments.Neural Information Process-ing Systems (NIPS), 2017.

[2] M. Samvelyan, T. Rashid, C. Schroeder de Witt, G. Farquhar, N. Nardelli, T.G.J. Rudner, C.-M. Hung, P.H.S. Torr, J. Foerster, S. Whiteson. The StarCraft Multi-Agent Challenge, CoRR abs/1902.04043, 2019.

[3] Bard, N., Foerster, J. N., Chandar, S., Burch, N., Lanctot,M., Song, H. F., Parisotto, E., Dumoulin, V., Moitra, S.,Hughes, E., et al. The Hanabi challenge: A new frontierfor AI research.Artificial Intelligence, 280:103216, 2020.

[4] Schulman, J., Wolski, F., Dhariwal, P., Radford, A., andKlimov,  O.   Proximal policy optimization algorithms.CoRR, abs/1707.06347, 2017.

[5] Lowe, R., Wu, Y., Tamar, A., Harb, J., Abbeel, P., and Mor-datch, I. Multi-agent actor-critic for mixed cooperative-competitive environments.Neural Information Process-ing Systems (NIPS), 2017.

[6] Rashid, T., Samvelyan, M., Schroeder, C., Farquhar, G.,Foerster, J., and Whiteson, S. QMIX: Monotonic valuefunction factorisation for deep multi-agent reinforcementlearning. volume 80 ofProceedings of Machine LearningResearch, pp. 4295–4304. PMLR, 10–15 Jul 2018.

[7] Wang, T., Gupta, T., Mahajan, A., Peng, B., Whiteson, S.,and Zhang, C. RODE: Learning roles to decompose multi-agent tasks.   InInternational Conference on LearningRepresentations, 2021.

[8] Espeholt, L., Soyer, H., Munos, R., Simonyan, K., Mnih, V., Ward, T., Doron, Y., Firoiu, V., Harley, T., Dunning,I., et al. Impala: Scalable distributed deep-rl with importance weighted actor-learner architectures. In International Conference on Machine Learning, pp. 1407–1416, 2018.

[9] Hu, H. and Foerster, J. N. Simplified action decoder for deep multi-agent reinforcement learning. In International Conference on Learning Representations, 2020.

转载地址:https://mp.weixin.qq.com/s/KPS6RWtmeawR_vPAY4Bh1A

总结1:周志华 || AI领域如何做研究-写高水平论文

总结2:全网首发最全深度强化学习资料(永更)

总结3:  《强化学习导论》代码/习题答案大全

总结4:30+个必知的《人工智能》会议清单

总结52019年-57篇深度强化学习文章汇总

总结6:   万字总结 || 强化学习之路

总结7:万字总结 || 多智能体强化学习(MARL)大总结

总结8:深度强化学习理论、模型及编码调参技巧

第101篇:OpenAI科学家提出全新强化学习算法

第100篇:Alchemy: 元强化学习(meta-RL)基准环境

第99篇:NeoRL:接近真实世界的离线强化学习基准

第98篇:全面总结(值函数与优势函数)的估计方法

第97篇:MuZero算法过程详细解读

第96篇:  值分布强化学习(Distributional RL)总结

第95篇:如何提高"强化学习算法模型"的泛化能力?

第94篇:多智能体强化学习《星际争霸II》研究

第93篇:MuZero在Atari基准上取得了新SOTA效果

第92篇:谷歌AI掌门人Jeff Dean获冯诺依曼奖

第91篇:详解用TD3算法通关BipedalWalker环境

第90篇:Top-K Off-Policy  RL论文复现

第89篇:腾讯开源分布式多智能TLeague框架

第88篇:分层强化学习(HRL)全面总结

第87篇:165篇CoRL2020 accept论文汇总

第86篇:287篇ICLR2021深度强化学习论文汇总

第85篇:279页总结"基于模型的强化学习方法"

第84篇:阿里强化学习领域研究助理/实习生招聘

第83篇:180篇NIPS2020顶会强化学习论文

第82篇:强化学习需要批归一化(Batch Norm)吗?

第81篇:《综述》多智能体强化学习算法理论研究

第80篇:强化学习《奖励函数设计》详细解读

第79篇: 诺亚方舟开源高性能强化学习库“刑天”

第78篇:强化学习如何tradeoff"探索"和"利用"?

第77篇:深度强化学习工程师/研究员面试指南

第76篇:DAI2020 自动驾驶挑战赛(强化学习)

第75篇:Distributional Soft Actor-Critic算法

第74篇:【中文公益公开课】RLChina2020

第73篇:Tensorflow2.0实现29种深度强化学习算法

第72篇:【万字长文】解决强化学习"稀疏奖励"

第71篇:【公开课】高级强化学习专题

第70篇:DeepMind发布"离线强化学习基准“

第69篇:深度强化学习【Seaborn】绘图方法

第68篇:【DeepMind】多智能体学习231页PPT

第67篇:126篇ICML2020会议"强化学习"论文汇总

第66篇:分布式强化学习框架Acme,并行性加强

第65篇:DQN系列(3): 优先级经验回放(PER)

第64篇:UC Berkeley开源RAD来改进强化学习算法

第63篇:华为诺亚方舟招聘 || 强化学习研究实习生

第62篇:ICLR2020- 106篇深度强化学习顶会论文

第61篇:David Sliver 亲自讲解AlphaGo、Zero

第60篇:滴滴主办强化学习挑战赛:KDD Cup-2020

第59篇:Agent57在所有经典Atari 游戏中吊打人类

第58篇:清华开源「天授」强化学习平台

第57篇:Google发布"强化学习"框架"SEED RL"

第56篇:RL教父Sutton实现强人工智能算法的难易

第55篇:内推 ||  阿里2020年强化学习实习生招聘

第54篇:顶会 || 65篇"IJCAI"深度强化学习论文

第53篇:TRPO/PPO提出者John Schulman谈科研

第52篇:《强化学习》可复现性和稳健性,如何解决?

第51篇:强化学习和最优控制的《十个关键点》

第50篇:微软全球深度强化学习开源项目开放申请

第49篇:DeepMind发布强化学习库 RLax

第48篇:AlphaStar过程详解笔记

第47篇:Exploration-Exploitation难题解决方法

第46篇:DQN系列(2): Double DQN 算法

第45篇:DQN系列(1): Double Q-learning

第44篇:科研界最全工具汇总

第43篇:起死回生|| 如何rebuttal顶会学术论文?

第42篇:深度强化学习入门到精通资料综述

第41篇:顶会征稿 ||  ICAPS2020: DeepRL

第40篇:实习生招聘 || 华为诺亚方舟实验室

第39篇:滴滴实习生|| 深度强化学习方向

第38篇:AAAI-2020 || 52篇深度强化学习论文

第37篇:Call For Papers# IJCNN2020-DeepRL

第36篇:复现"深度强化学习"论文的经验之谈

第35篇:α-Rank算法之DeepMind及Huawei改进

第34篇:从Paper到Coding, DRL挑战34类游戏

第33篇:DeepMind-102页深度强化学习PPT

第32篇:腾讯AI Lab强化学习招聘(正式/实习)

第31篇:强化学习,路在何方?

第30篇:强化学习的三种范例

第29篇:框架ES-MAML:进化策略的元学习方法

第28篇:138页“策略优化”PPT--Pieter Abbeel

第27篇:迁移学习在强化学习中的应用及最新进展

第26篇:深入理解Hindsight Experience Replay

第25篇:10项【深度强化学习】赛事汇总

第24篇:DRL实验中到底需要多少个随机种子?

第23篇:142页"ICML会议"强化学习笔记

第22篇:通过深度强化学习实现通用量子控制

第21篇:《深度强化学习》面试题汇总

第20篇:《深度强化学习》招聘汇总(13家企业)

第19篇:解决反馈稀疏问题之HER原理与代码实现

第18篇:"DeepRacer" —顶级深度强化学习挑战赛

第17篇:AI Paper | 几个实用工具推荐

第16篇:AI领域:如何做优秀研究并写高水平论文?

第15篇:DeepMind开源三大新框架!

第14篇:61篇NIPS2019DeepRL论文及部分解读

第13篇:OpenSpiel(28种DRL环境+24种DRL算法)

第12篇:模块化和快速原型设计Huskarl DRL框架

第11篇:DRL在Unity自行车环境中配置与实践

第10篇:解读72篇DeepMind深度强化学习论文

第9篇:《AutoML》:一份自动化调参的指导

第8篇:ReinforceJS库(动态展示DP、TD、DQN)

第7篇:10年NIPS顶会DRL论文(100多篇)汇总

第6篇:ICML2019-深度强化学习文章汇总

第5篇:深度强化学习在阿里巴巴的技术演进

第4篇:深度强化学习十大原则

第3篇:“超参数”自动化设置方法---DeepHyper

第2篇:深度强化学习的加速方法

第1篇:深入浅出解读"多巴胺(Dopamine)论文"、环境配置和实例分析

【总结】解决MAPPO(Multi-Agent PPO)问题技巧相关推荐

  1. 解决vSphere性能不佳的技巧

    解决vSphere性能不佳的技巧 https://blog.csdn.net/VirtualMan_/article/details/105171430 前言 VM肯定会出现中断,性能问题或停止响应, ...

  2. 多智能体强化学习Multi agent,多任务强化学习Multi task以及多智能体多任务强化学习Multi agent Multi task概述

    概述 在我之前的工作中,我自己总结了一些多智能体强化学习的算法和通俗的理解. 首先,关于题目中提到的这三个家伙,大家首先想到的就是强化学习的五件套: 状态:s 奖励:r 动作值:Q 状态值:V 策略: ...

  3. win7如何调整计算机c盘,两种解决win7c盘越来越小的技巧

    不少用户应该都会发现,随着我们使用电脑的时间越来越久,就会发现C盘变的越来越小,然后就会导致电脑的运行速度变缓慢,那是因为缓存文件随着时间越久它就会占据C盘越来越大的空间,所以就会导致C盘空间越来越小 ...

  4. win7开机突然变得很慢_win7系统加速开机速度解决开机变慢问题的技巧

    电脑的开始速度还有运行速度都是我们比较关心的,那在使用win7操作系统的电脑的时候有用户对于开机速度想要重新加速怎么处理呢,其实电脑中后台运行的程序多以后就会造成电脑运行慢的,开机选择加载项多以后开机 ...

  5. 64位计算机很慢,win7 64位旗舰版系统解决网速变慢的技巧介绍

    任何一款 windows操作系统 使用久后网速或多或少都会变慢一些,win7系统也不例外,很多用户发现自己的电脑网速变得越来越慢,怎么回事呢?该如何处理呢?其实引起网速变慢的原因有很多,下面小编给大家 ...

  6. 兔子问题 php,PHP基于递归算法解决兔子生兔子问题php技巧

    这篇文章主要介绍了PHP基于递归算法解决兔子生兔子问题,结合实例形式分析了兔子生兔子问题的php面试题采用循环与递归两种思路的解决方法,需要的朋友可以参考下 本文实例讲述了PHP基于递归算法解决兔子生 ...

  7. idea解决jar包冲突的实用技巧

    背景:在项目开发过程中,我们经常会使用到maven来管理jar包并作为项目打包构建工具,但是经常会遇到jar包冲突的问题 下面就分享一下解决jar包冲突的几个实用技巧 1.比如说:经常遇到NoClas ...

  8. 怎么关闭或者卸载ivanti_电脑软件卸载不了怎么办,教您解决电脑软件无法卸载方法技巧...

    我们在使用电脑的过程中,肯定会安装各种软件,但是一些软件在使用完之后就不会再使用了,但又无法卸载.下面由小编分享一下电脑安装的软件无法卸载解决方法,如果你在某卸载软件的时候出现无法卸载的情况,不妨通过 ...

  9. php狼和兔子算法,PHP基于递归算法解决兔子生兔子问题php技巧

    这篇文章主要介绍了PHP基于递归算法解决兔子生兔子问题,结合实例形式分析了兔子生兔子问题的php面试题采用循环与递归两种思路的解决方法,需要的朋友可以参考下 本文实例讲述了PHP基于递归算法解决兔子生 ...

最新文章

  1. BZOJ-2761-不重复数字
  2. 使用Java和Google GSON解析ESPN API
  3. 长为N的数组,元素范围是0-N-1,其中只有一个数是重复的,找出这个重复元素...
  4. Javascript调试之console对象,它的一些小技巧你都知道吗?
  5. hihocoder 1465 : 后缀自动机五·重复旋律8(后缀自动机+最长公共子串)
  6. Python基础教程(第2版•修订版)代码清单2-3 勘误
  7. Centos虚拟机桥接模式无法连接外网的解决
  8. 如何高效学习-《暗时间》读后感
  9. 大脚战场插件怎么关闭_魔兽战场插件 capping插件怎么关闭
  10. docker创建jenkins、jenkins配置邮件模板、jenkins升级、jenkins更改插件源
  11. Trianglify - 生成五彩缤纷的 SVG 背景图案
  12. JavaScript模块化编程实例——天气预报
  13. vue中添加mp3音频文件
  14. 二级域名原理以及程序代码
  15. android back键不退出程序,Android按back键不退出当前Activity
  16. word2vec and glove优缺点
  17. 模型优化与tensorflow
  18. Soraの第一篇博客
  19. Python:ImportError: cannot import name ‘lmage‘ from ‘PIL‘
  20. 考无忧计算机在线题库,考无忧2017职称计算机考试题库PC版

热门文章

  1. 大数据时代的日本“化石”企业家
  2. elementUI Form中 勾选框设置必选不提示问题
  3. 【QQ技术】群文件报毒怎样下载?~ 变相绕过QQ复杂检验过程
  4. python:掌握类的基本方法。定义一个Circle类,根据圆的半径求周长和面积。 再由Circle类创建2个圆对象,其半径分别为5和10,要求输出各自的周长和面积
  5. 1135 mysql_mysql中一个普通ERROR 1135 (HY000)错误引发的血案
  6. stb_image图像库处理tga转png
  7. 盘点三种卫星图分幅导出的方法
  8. 当BERT遇上搜索引擎
  9. 分享][转帖] 无光驱安装系统的方法
  10. pv=nrt_PV=NRT中的R的单位是什么?