摘要

2019年4月13日,OpenAI Five成为第一个在电子竞技游戏中击败世界冠军的AI系统。Dota2游戏为AI系统提供了新的挑战,例如长时间相关的视野,不完全的信息和复杂的连续状态动作空间,所有这些挑战将会要求具有更强能力的AI系统。OpenAI Five利用现有的强化学习技术,扩大到从每2秒大约200万帧的批量数据中学习。我们开发了一个用于持续训练的分布式系统和工具,使我们能够连续训练OpenAI五个月。通过击败DOTA 2世界冠军(OG),OpenAI Five表现出self-play强化学习方法可以在一项艰巨的任务上实现出色的表现。

1.介绍

人工智能的长期目标是解决先进的现实世界挑战问题。游戏作为解决现实问题的基石,人们已经沿着这条路进行了几十年的探索,从Backgammon(1992)到Chess(1997),再到Atari(2013)。2016年,AlphaGo使用深度强化学习和蒙特卡罗树搜索击败了围棋世界冠军。近年来,强化学习(RL)模型已经解决了诸如机器人操纵,文本摘要,以及星际真霸和我的世界等电子游戏任务。
  相对于AI再如国际象棋或围棋中的成功,复杂的电子游戏更能捕捉现实世界的复杂和连续的性质。DOTA 2是2013年Valve公司开发的多人实时策略游戏,2013年和2019年间在线玩家数量平均在500,000至1,000,000之间。这场比赛由职业玩家积极竞技;2019年国际锦标赛的奖金池超过3500万美元(这是世界上任何电子竞技游戏中最大的奖金)。由于长时间相关的视野,部分可观测性和高维的状态动作空间,该游戏对强化学习具有重大挑战。DOTA 2的规则也很复杂,这场比赛已经开发了十多年,游戏逻辑由数十万行代码实现。
  解决这种复杂环境的关键需要利用数千个GPU训练多个月,将现有的强化学习系统扩展到更强的水平。为了达到这一水平,我们建立了一个分布式训练系统,并训练一个称为OpenAI Five的Dota2 agent。2019年4月,Openai Five击败了Dota 2世界冠军(OG),这是第一次AI系统击败了电子竞技的世界冠军。我们还将OpenAI Five开源到Dota 2社区以供玩家进行比赛,OpenAI Five在超过7000场的比赛中获得99.4%的胜率。
  在第2节中,我们更详细地描述了DOTA 2,以及它所呈现的挑战。在第3节中,我们讨论了训练系统的技术组成部分,然后将大部分细节留到其引用的附录中。在第4节中,我们总结了我们的长期实验和击败世界冠军的过程。我们还描述了关于强化学习在电子竞技游戏上的经验,这可能会推广到其他复杂的任务。

2.Dota 2

Dota2是在一个方形地图上进行比赛,其中两支队伍在地图上以相对的位置进行对抗。每个团队基地都包含一个叫做ancient的建筑,当其中一个ancient被敌对团队摧毁时,游戏将结束。团队有五名成员,每个成员都控制着一个具有独特能力的英雄单位。在比赛期间,两支队伍都有一个恒定的小兵单位流,且不受玩家控制,这些单位会攻击任何对手单位或建筑物。玩家收集来自小兵的金币等资源,然后使用这些资源购买物品和提高能力来增加英雄的力量。
  为了玩Dota 2,AI系统必须解决下列各种挑战:

  • Long time horizons。Dota 2游戏每秒包含30帧图像且运行大约45分钟。Openai Five每四帧选择一个动作,因此每个episode产生约20,000个步骤。相比之下,国际象棋通常进行80次移动,围棋进行150次移动。
  • Partially-observed state。游戏中的每支队伍只能看到他们的单位和建筑物附近的游戏状态,而地图的其余部分是隐藏的。高端玩家需要基于不完整的数据进行推断,并建模对手的行为。
  • High-dimensional action and observation spaces。Dota 2在包含十个英雄,数十个建筑物,数十个非玩家单位等长尾游戏特征(入符文,树木和守卫)的大地图上比赛。OpenAI Five每个步骤需要观察大约16,000个值(大多数浮点数和数百种分类概率)。我们离散化了动作空间,因此在平均每个时刻,我们的模型在8,000到80,000动作中选择(取决于英雄)。与之相对,国际象棋每次需要观察大约一千个值(主要是6个分类概率值),围棋达到六千个值(所有二进制)。国际象棋的约有35个有效动作,围棋达到250个左右。

我们的系统在以下两个限制上玩Dota2:

  • 具有17英雄的子集 - 在正常的游戏玩家中,可从117英雄池中任意选择一个,而我们仅支持其中17个。
  • 不支持玩家同时控制多个单位(幻象符文, 支配头盔, 幻影斧, 死灵之书)。我们删除了这些,以避免增加agent控制多个单位的技术复杂性。

3.训练系统

3.1 Playing Dota using AI


  人类玩家使用键盘,鼠标和计算机显示器与Dota 2游戏进行交互。他们能够实时做出决定,然后所采取的行动能导致长期的结果。我们采用下面的框架以将在superhuman级别玩复杂游戏的模糊问题转化为适合优化的详细目标。
  虽然Dota2引擎以每秒30帧速率运行,但OpenAI Five只在每秒4帧上行动,我们将每4帧称为一个timestep。再每个时刻,OpenAI Five接收从游戏引擎编码的人类玩家能看到的所有信息,例如单位的生命值,位置等(对于观测信息的深入讨论可参见附录E)。OpenAI Five然后向游戏引擎返回离散的动作,这个动作包括移动,攻击等。
  另外,某些游戏机制由人工编写的脚本逻辑控制,而不是依靠策略:英雄购买的物品和升级的技能,控制信使单位,以及英雄留在背包中的物品。虽然我们认为,即使没有脚本控制这些行动,agent仍然能够表现的很好,但是脚本控制能够达到superhuman的表现。我们的动作空间和脚本操作的完整细节在附录F中进行介绍。
  在训练期间,环境的一些属性被随机化,包括游戏中的英雄以及英雄购买的物品,这是因为必须使用足够多样化的游戏方式训练agent,以确保在面对人类对手时选择策略的广泛性和鲁棒性。有关领域随机化的详细信息,请参阅第O.2小节。
  我们将策略(π)(π)(π)定义为基于观测历史来输出动作概率分布的函数,我们将其作为循环神经网络参数化,具有大约1.59亿的参数(θ)(θ)(θ)。神经网络主要包括单层的4096单元的LSTM(参见图1)。我们通过不断地将当前观测信息作为输入,并在每个时刻输出分布的采样来玩游戏
  另外,我们使用同一个策略函数(具有相同参数θθθ)来控制团队中的每个英雄(每个英雄具有独立的embedding)。由于可观测信息和战争迷雾可以在Dota 2同一团队中共享,所以观察结果对于每个英雄都近乎相同。
  我们不是使用屏幕上的像素,而是使用一组数据数组以近似于人类玩家可用的信息(关于观测空间的完整细节可参见附录E)。这种近似是不完全的,因为人类每次只能访问少量信息。反过来说,虽然我们小心确保了将人类可观测信息应用到模型,但是模型每个时刻都会同时看到所有可用的信息,而人类需要主动点击以查看地图的各个部分和单位状态。OpenAI Five使用这个语义观测空间有两个原因:首先,因为我们的目标是研究战略规划和高级决策,而不是专注于视觉处理。其次,我们在所有游戏训练中以像素呈现每一帧是不可行的,这需要耗费非常多的计算资源。虽然存在这些差异,但我们不认为agent在与人类玩家进行对抗测试时会引入大量偏差。为了允许五个网络选择不同的动作,LSTM从观测处理中接收额外的输入,以指示五个英雄中的哪一个(如附录中的图17所示)。
  由于问题的扩展性和每个实验的规模和费用,彻底研究策略和训练系统的所有细节并不实用。有许多细节,即使是一些大型的细节,都是为了历史原因或基于初步调查而没有进行消融对比。

3.2 Optimizing the Policy


  我们的目标是寻找一种策略,以最大化在游戏中战胜专业玩家的概率。在实践中,我们最大化一种奖赏函数,包括角色死亡,资源收集等额外信号。在计算奖赏函数时,我们还应用了几种技术来利用多人玩家对战中的零和游戏问题,例如,我们通过减去敌方队伍获得的奖赏以对称化奖励。有关奖赏函数的详细信息我们将在附录G中讨论。在项目开始之前,我们根据团队成员对游戏的熟悉程度构建了奖赏函数。虽然我们会在游戏版本改变时进行轻微的调整,但我们发现我们的初始选择奖励的方式相当不错。这些额外信号的存在对于成功训练agent很重要(如附录G中所述)。
  该策略是使用近端策略优化(PPO)进行训练的,其是actor-critic方法的一种优化变体。该优化算法使用广义优势函数估计(GAE)来稳定和加速训练。我们首先用一个共享的LSTM块,然后将该LSTM块连接到多个完全独立的全连接层,以生成策略和价值函数的输出。
  训练系统如图2中所示。我们使用self-play收集的玩Dota 2的经验来训练我们的策略,类似于[18]。优化器GPU的中央池接收游戏数据并在称为经验缓冲区的局部缓冲区中异步存储。每个优化器GPU使用随机从经验缓冲区中采样的mini-batch数据以计算梯度。在同步参数之前,需要使用NCCL allreuce在池中平均梯度。以这种方式,实际的batch size是每个GPU上的batch size(120个样本,每个包含16个步骤)的总和,总批量大小为f 2,949,120个步骤。
  我们使用Adam优化器优化按16个步骤截断的训练数据,并使用额外的设置在±5v±5\sqrt{v}±5v

之间的参数裁剪梯度,其中vvv是(未删除的)梯度的第二次的运行估计。每隔32个梯度步骤,优化器将新版的参数发布到名为controller的中央Redis存储。controller还存储有关系统状态的所有元数据,用于停止和重新启动训练。
  Rollout worker运行self-play游戏。他们在大约以实际时间的一半运行这些游戏,因为我们发现我们可以在这种速度下并行地运行多次游戏,以增加总吞吐量。我们在附录K中描述了与dota 2引擎的集成方法。他们在80%的游戏中使用最新政策,并在20%的游戏中以较旧策略运行(有关对手采样的详细信息,请参阅附录N)。Rollout worker是用来运行游戏引擎的,而不是选择策略的,它们与单独的GPU池进行通信,该GPU池以大约60的batch向Rollout worker传递策略。并且,该GPU池频繁地调用控制器以收集最新参数。
  Rollout worker从正在进行的游戏中异步发送数据,而不是等待整个游戏完成。有关数据是如何汇总的请参照附录C中的图8。有关保持rollout-优化紧密循环的好处,请参见图5B。因为我们使用带有λ=0.95λ=0.95λ=0.95的GAE,所以需要在多个时间步骤1/λ=201/λ=201/λ=20上平滑GAE奖赏,使用256个时间步长能导致相对较小的损失。
  整个系统在我们的自定义的称为Rapid的分布式训练平台上运行。我们使用来自blocksparse库的OPS进行快速GPU训练。对于训练中使用的超参数的完整列表,请参阅附录C。

3.3 Continual Transfer via Surgery

随着项目的进展,我们的代码和环境会因为以下三种不同的原因改变:

  1. 在我们实验和学习时,我们对训练过程(奖励结构,观测空间等)或甚至到神经网络的架构都会实施更改。
  2. 随着时间的推移,我们扩展了agent的动作和状态空间以支持更多游戏机制。这些并没有逐步引入,以努力建立一个完美的课程学习。
  3. Valve公司会不时发布新的DOTA 2版本,包括游戏机制以及英雄,物品,地图等属性的变更,为了与人类玩家对抗,我们的agent必须能在最新的游戏版本上进行对抗。

这些变化可能回修改模型每一层的形状和大小,观测值的语义含义等。
  当发生这些变化时,旧模型的大多数方面都可能与新环境相关。但是参数向量的拣选会具有挑战性并限制重现。由于这些原因,从头训练是应对这种变化的一种安全方法。
  然而,训练OpenAI Five会耗时多个月,这代价会很大。因此,这激励我们开发需要应对跨领域和特征变化的模型的方法。游戏每次发生变化(大约两周一次)都需重新训练模型,这在时间和金钱上代价都是很大的,例如,在我们与世界冠军(OG)打比赛的8天前,Dota 2版本改为了7.21d,如果我们没有基于先前的agent继续训练,这将是不可能的。
  我们的方法,被称为“surgery”,可以被视为一个工具的集合,以便对旧模型πθπ_θπθ执行离线操作,以获得与新环境兼容的新模型π^θ^\hat π_{\hat θ}π^θ^即使参数向量θ^\hat θθ^θθθ具有不同的尺寸和语义,他们仍然能执行相同的水平。然后,我们使用π^θ^\hat π_{\hat θ}π^θ^开始在新环境中进行训练。在环境,观察和动作空间没有改变的最简单情况下,我们的工具实现的新策略具有与老版本相同的函数(基于观测状态得到的动作概率):
∀oπ^θ^(o)=πθ(o)(1)\forall o~\hat \pi_{\hat \theta}(o)=\pi_{\theta}(o)\tag{1}oπ^θ^(o)=πθ(o)(1)
这种情况是Net2Net式函数保留转换的特殊情况。我们同样开发了在可能的(添加观察,扩展层和其他情况)的情况下实现公式1的工具,以及对环境,观察空间或动作空间修改的近似。有关手surgery的进一步讨论,请参阅附录B。

Dota 2 with Large Scale Deep Reinforcement Learning翻译相关推荐

  1. 深度强化学习综述论文 A Brief Survey of Deep Reinforcement Learning

    A Brief Survey of Deep Reinforcement Learning 深度强化学习的简要概述 作者: Kai Arulkumaran, Marc Peter Deisenroth ...

  2. Deep Reinforcement Learning: Pong from Pixels翻译和简单理解

    原文链接: http://karpathy.github.io/2016/05/31/rl/ 文章目录 原文链接: 前言 Policy-Gradient结构流程图 Deep Reinforcement ...

  3. 利用Deep Reinforcement Learning训练王者荣耀超强AI

    Mastering Complex Control in MOBA Games with Deep Reinforcement Learning (一)知识背景 (二)系统架构 (三)算法结构 3.1 ...

  4. AAAI 2020使用深度强化学习的MOBA游戏《Towards Playing Full MOBA Games with Deep Reinforcement Learning》打败王者荣耀顶尖选手

    不知道你是否玩过王者荣耀,不知道你是不是经历过被人机疯狂怼在塔下强杀然后嘲讽你的经历?就,真说多了就是泪. 最近,NeurlPS2020会议收录了来自腾讯AI Lab的一篇强化学习的论文<Tow ...

  5. 18 Issues in Current Deep Reinforcement Learning from ZhiHu

    深度强化学习的18个关键问题 from: https://zhuanlan.zhihu.com/p/32153603 85 人赞了该文章 深度强化学习的问题在哪里?未来怎么走?哪些方面可以突破? 这两 ...

  6. 【论文笔记】Deep Reinforcement Learning Control of Hand-Eye Coordination with a Software Retina

    目录 Abstract Keywords 1. INTRODUCTION 2. BACKGROUND A. Software Retina B. Deep Reinforcement Learning ...

  7. 论文笔记之:Playing Atari with Deep Reinforcement Learning

    Playing Atari with Deep Reinforcement Learning <Computer Science>, 2013 Abstract: 本文提出了一种深度学习方 ...

  8. 深度强化学习 Deep Reinforcement Learning 学习整理

    这学期的一门机器学习课程中突发奇想,既然卷积神经网络可以识别一副图片,解决分类问题,那如果用神经网络去控制'自动驾驶',在一个虚拟的环境中不停的给网络输入车周围环境的图片,让它去选择前后左右中的一个操 ...

  9. 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning

    论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning  2017-06-06  21: ...

最新文章

  1. Linux中把文件夹打成war包,SpringBoot中maven项目打成war包部署在liunx服务器上的方法...
  2. linux接收手机信号,接收关联设备的信号强度在Linux接入点
  3. Java虚拟机内存区域---学习笔记
  4. tomcat装死原因汇总
  5. k8s核心技术-Helm引入---K8S_Google工作笔记0043
  6. 一、Java语言基础(3)_流程语句——控制循环结构语句
  7. java.lang.NumberFormatException: For input string: 0.7
  8. 删除Nouveau 安装 NVIDIA 最新驱动 ubuntu18
  9. QT5.14.2+VS2017环境安装
  10. MSDTC不能启动的几个解决方法
  11. 用 windows 资源监视器 查看 被占用的文件
  12. 伍斯特理工学院计算机硕士怎么样,伍斯特理工学院硕士怎么样?
  13. openwrt utc时区修改
  14. unity期末个人作品-落笔洞寻宝探险之旅(寻宝游戏)
  15. 对于uniapp的项目,获取设备的一些设备id,首次登陆设备的首台绑定,以及对项目的版本号进行对比进行app升级
  16. L2tp/Ipsec的搭建与使用
  17. 如何正确地向领导汇报工作?
  18. Intouch学习笔记—新建工程
  19. 网狐大联盟客户端游戏表为空问题解决
  20. R语言统计入门第六章——回归与相关性

热门文章

  1. webuploader-上传图片到服务器
  2. React Native手动实现调用原生相机相册(Android端)
  3. u8服务器ip地址在哪修改,u8服务器ip地址在哪修改
  4. 安装Linux系统后必做的几件事
  5. 想通过手机刷视频赚钱?这篇文章你有必要了解一下
  6. 通俗地理解信号与系统中的卷积
  7. 微信公众号认证全过程
  8. 交换机crc错误是什么意思_OSN1800设备LDX对接S9706交换机,交换机持续有CRC错误告警...
  9. JMeter测试多用户登录
  10. 拼多多跨境电商如何快速上架商品?