国外人工智能团队OpenAI在一篇博客文章中透露,为Dota 2设计的最新版本AI击败了五支业余选手团队,其中包括一个由Valve员工组成的团队。上一代 OpenAI的系统被限制为1对1的比赛,并不太复杂。
OpenAI的机器学习算法对抗五个小组:一个OpenAI员工团队,一群观看OpenAI员工比赛的观众成员,一个Valve员工团队,一个业余团队和一个半职业团队。它在几轮中轻松击败前三队,并且在前三场比赛对阵第四和第五队中赢得了两场,分别是第四和第五小队。
不可否认,OpenAI Five在少数几个领域占据了一席之地。它可以立即对每个球员的健康状况、位置和物品清单做出反应。平均而言,它的神经网络每分钟能执行150-170次动作(最高可达450次),而超人的反应时间为80毫秒。它还对一些特殊的能力、项目和角色进行了限制。但是这些优势都没有帮助它完成它最令人印象深刻的成就:制定反映职业球员的战略。
问题
一个人工智能需要在像StarCraft或Dota 这样复杂的视频游戏中超越人类。
Dota 2是一款实时战略游戏,由两支队伍组成,每个玩家控制一个英雄。玩Dota的AI必须掌握以下几点:
- 很长的时间线。Dota游戏以每秒30帧的速度运行,平均时间为45分钟,每场游戏的tick为80000次。大多数行为(例如命令英雄移动到某个位置)单独产生影响较小,但城镇门户使用等一些个别行为可能会在战略上影响游戏,一些策略可以影响整个游戏。OpenAI Five每四帧观察一次,产生20000次移动。而象棋通常在40次移动前结束,围棋则是前150次移动,几乎每一次都是战略性的。
- 部分观察状态。队伍和建筑物只能看到他们周围的区域。地图的其他部分隐藏在雾中,敌人和他们的战略也不可见。比赛需要根据不完整的数据进行推断,并且需要建立对手的最佳状态。而象棋和围棋都是给出全部信息的游戏。
- 高度连续的动作空间。在Dota中,每个英雄可以采取数十个动作,许多动作都是针对另一个单位或地面上的某个位置。我们将每个英雄的空间分割成170,000个可能的行动,不计算连续部分,每个tick平均有大约1000次有效操作。国际象棋中的平均动作数为35,围棋为250。
- 高维度,连续的观察空间。Dota在大型地图上连续播放,包含十个英雄,数十个建筑物,几十个NPC单位以及诸如符文,树木和病房等游戏长尾特征。我们的模型通过Valve的Bot API观察Dota游戏的状态,其中20000(大多是浮点)数字表示允许人类访问的所有信息。国际象棋棋盘自然表现为大约70个枚举值(一个8x8棋盘和棋子类型,历史信息);围棋棋盘作为约400个枚举值(19x19的棋盘加黑白棋子)。
Dota规则也非常复杂,游戏已经开发了十多年,游戏逻辑在数十万行代码中实现。这个逻辑需要几毫秒的时间才能执行,而对于国际象棋或围棋引擎则需要几纳秒。游戏也每两周更新一次,不断改变环境语义。
方法
我们的系统使用Proximal Policy Optimization的大规模版本进行学习。OpenAI Five和我们早期的1v1机器人都完全从自我学习中学习。他们从随机参数开始,不使用来自人类回放的搜索或引导。
RL研究人员(包括我们自己)一般认为,长时间视野需要从根本上取得新的进展,如分层强化学习。我们的结果表明,我们并没有给今天的算法足够的信用,至少当它们以足够的规模和合理的探索方式运行时。
我们的代理人经过培训,可以最大化未来奖励的指数衰减总和,并由称为的指数衰减因子加权γ。在最近的OpenAI Five训练中,我们γ退出0.998(重估未来奖励的半衰期为46秒),以0.9997(评估未来奖励的半衰期为五分钟)。为进行比较,PPO纸中最长的平面是0.5秒的半衰期,彩虹纸中最长的半衰期为4.4秒,“ 观察和观察进一步”纸张的半衰期为46秒。
尽管当前版本的OpenAI Five在最后一击时表现不佳(观察我们的测试比赛,专业Dota评论员Blitz估计它大约是Dota玩家的中位数),但其客观的优先级匹配一个常见的专业策略。获得战略地图控制等长期回报往往需要牺牲短期回报,例如从农业获得的黄金,因为组建攻击塔需要时间。这一观察增强了我们的信念,即系统真正在长期的优化。
[video width="1280" height="720" mp4="https://www.atyun.com/uploadfile/2018/06/OpenAI-Five.mp4"][/video]
模型结构
每个OpenAI Five的网络都包含一个单层1024单元的LSTM,它可以查看当前的游戏状态(从Valve的Bot API中提取),并通过几个可能的动作头发出动作。每个头部都具有语义含义,例如延迟此动作的刻度数量,要选择的动作数量,单位周围网格中此动作的X或Y坐标等。动作头是独立计算的。
交互式演示OpenAI Five使用的观察空间和动作空间。OpenAI Five将世界视为20,000个数字的列表,并通过发布8个列举值的列表来采取行动。选择不同的操作和目标以了解OpenAI Five如何编码每个动作,以及它如何观察世界。图像显示了人类会看到的场景。
OpenAI Five可以对缺少与它所看到的相关的状态片段做出反应。例如,直到最近OpenAI Five的观测并没有包括弹片区域(弹片落在敌人身上的区域),人类在屏幕上看到这些区域。然而,我们观察到OpenAI Five学习走出(虽然不能避免进入)活动的弹片区域,因为它可以看到它的健康状况在下降。
探索
鉴于有能够处理长期视野的学习算法,我们仍然需要探索环境。即使有限制,也有数百种物品,数十种建筑物,法术和单位类型,以及需要了解的大量游戏机制,其中许多产生了强大的组合。要有效地探索这个组合广阔的空间并不容易。
OpenAI Five从自我游戏(从随机权重开始)中学习,这为探索环境提供了一个自然的课程。为了避免“战略崩溃”,代理对自己进行了80%的训练,其他20%的对手进行了自我训练。在第一场比赛中,英雄漫无目的地在地图上漫步。经过几个小时的训练后,诸如laning,farming或中期战斗等概念出现。几天后,他们一直采用基本的人类战略:试图从对手手中夺取赏金符文,步行到一级塔去种田,并在地图周围旋转英雄以获得lane优势。通过进一步的培训,他们能够像5-hero push一样熟练掌握战略。
2017年3月,我们的第一个代理击败了机器人,但却无法胜过人类。为了强制在战略空间进行探索,在训练期间(并且只在训练期间),我们随机化了单位的属性(健康,速度,开始水平等),并且它开始殴打人类。后来,当一名测试玩家一直在击败我们的1v1机器人时,我们增加了随机训练,测试玩家开始失败。(我们的机器人团队同时将相似的随机化技术应用于物理 机器人,以便从仿真转移到现实世界。)
OpenAI Five使用我们为1v1机器人编写的随机数据。它也使用一个新的“lane分配”。在每次训练比赛开始时,我们随机地将每个英雄“分配”给一些lane子集,并对其进行惩罚以避开这些lane,直到游戏中随机选择的时间。
探索也得到了很好的回报。我们的奖励主要包括衡量人们如何在游戏中做出的决定:净值,杀戮,死亡,助攻,上次命中等等。我们通过减去其他团队的平均奖励后处理每位代理的奖励,以防止代理找到积极情况。
我们硬编码项目和技能构建(最初为我们的脚本基准编写),并随机选择使用哪个构建。快递管理也从脚本基准中导入。
协调
OpenAI Five不包含英雄神经网络之间的明确沟通渠道。团队合作由我们称为“团队精神”的超参数控制。团队精神从0到1,对OpenAI Five的每个英雄应该关心其个人奖励功能与团队奖励功能的平均值赋予权重。我们在训练中将其值从0降至1。
快速
我们的系统被实施为通用RL培训系统Rapid,可应用于任何健身房环境。我们已经使用Rapid解决了OpenAI的其他问题,包括竞争的自我竞争。
训练系统分为运行游戏副本和代理收集体验的部署工作人员,以及优化器节点,这些节点在整个GPU队列中执行同步梯度下降。部署工作人员通过Redis将他们的体验同步到优化器。每个实验还包含评估经过培训的代理商与参考代理的工作人员,以及监控软件,如TensorBoard,Sentry和Grafana。
在同步梯度下降过程中,每个GPU计算批次部分的梯度,然后对梯度进行全局平均。我们最初使用MPI的 allreduce进行平均,但现在使用我们自己的NCCL2封装来并行GPU计算和网络数据传输。
右侧显示了不同数量的GPU同步58MB数据(OpenAI Five参数的大小)的延迟。延迟低到足以被GPU并行运行的GPU计算所掩盖。
我们为Rapid实施了Kubernetes,Azure和GCP后端。
游戏
到目前为止,OpenAI Five已经与我们的各种限制发挥作用:
最好的OpenAI员工团队:2.5k MMR(46th percentile)
观看OpenAI员工比赛的最佳观众(包括评论第一场OpenAI员工比赛的Blitz):4-6k MMR(90-99th percentile),尽管他们从来没有作为一个团队参赛。
Valve员工团队:2.5-4k MMR(46-90th percentile)。
业余队:4.2k MMR(93th percentile),训练为一支队伍。
半职业队:5.5k MMR(第99百分位),训练为一支队伍。
4月23日的OpenAI Five是第一个击败我们的脚本基线的版本。OpenAI Five的5月15日版本与第一队平分秋色,赢得了一场比赛并输掉了另一场。6月6日的OpenAI Five版本决定性地赢得了所有的比赛,而不是1-3队。我们与球队4、5建立了非正式的比赛,OpenAI Five在前三场比赛赢了两场。
机器人的团队合作方面非常令人沮丧。感觉就像五个无私的玩家一样,知道很好的总体战略。——Blitz
我们观察到OpenAI Five:
为了换取控制敌人的安全lane,反复牺牲了自己的安全lane,迫使对手难以保卫对手。这种策略在过去几年中出现在专业领域,现在被认为是盛行的策略。Blitz评论说,他在经过八年的比赛后才知道这一点,当时Team Liquid告诉他这件事。
从初期到游戏中期转场比对手更快。它是这样做的:(1)建立成功的ganks(当玩家在地图上移动以埋伏敌方英雄),当玩家在他们的车道中过度扩张时;(2)在对手组织起来之前反制。
在少数领域背离目前的游戏风格,比如给予支持英雄(通常不会优先考虑资源),很多早期经验和黄金。OpenAI Five的优先级允许它更快地对高峰造成损害,并更加努力地推进其优势,赢得团队战斗并利用错误来确保快速获胜。
与人类的差异
OpenAI Five可以访问与人类相同的信息,但可立即看到数据,例如人员必须手动检查的位置,健康状况和物品清单。我们的方法并没有从根本上与观察状态相关联,但仅从游戏渲染像素就需要数千个GPU。
OpenAI Five平均每分钟执行150-170次动作(由于观察每4帧,理论上最大值为450)。帧完美的时机,而可能对熟练的球员,是平凡的OpenAI Five。OpenAI Five的平均反应时间为80ms,比人类快。
这些差异在1v1中最为重要(我们的机器人的响应时间为67ms),但是我们已经看到人类从机器人学习并适应机器人,所以竞技场相对比较公平。数十位专业人士 在去年TI的几个月里使用我们的1v1机器人进行培训。根据Blitz的说法,1v1机器人改变了人们对1v1s的看法(机器人采用了快节奏的游戏风格,现在每个人都适应了)。
令人惊讶的发现
二元奖励可以提供良好的表现。我们的1v1模型是有形奖励,包括最近命中奖励,杀戮等。我们做了一个实验,只奖励获胜或失败的代理,并且它在中间训练了一个数量级较慢并且稍微平稳的阶段,与我们通常看到的平滑学习曲线形成对比。该实验运行在4500个核心和16个k80 GPU上,训练达到半专业级(70个TrueSkill),而不是我们最好的1v1机器人的90个TrueSkill。
我们可以从头开始学习creep blocking。对于1v1,我们学习了使用传统RL进行creep blocking并带有“creep block”奖励。我们的一个团队成员在休假时离开了2v2模型培训,打算看看培训能提高绩效多长时间。令他惊讶的是,这个模型学会了没有任何特别的指导或奖励的creep block。
我们仍在修复错误。该图表显示了打败业余玩家的代码的训练运行情况,相比之下,我们只是修复了一些错误(如训练期间罕见的崩溃)或导致达到25级的巨大负面奖励的错误。事实证明系统有可能击败人类,同时仍然隐藏严重的错误!
展望
我们的团队专注于制定八月的目标。我们不知道它是否可以实现,但我们相信,通过努力工作我们就有机会实现它。
这篇文章描述了截至6月6日我们系统的快照。我们将发布更新,关于超越人类的表现,并在完成项目后撰写关于我们最终系统的报告。请在7月28日加入我们的比赛,届时我们将与一队顶级球员比赛。
我们的基本动机是超越Dota。真实世界的人工智能部署将需要处理Dota提出的挑战,这些挑战并不反映在国际象棋,围棋,Atari游戏或Mujoco基准测试任务中。最终,我们将衡量Dota系统在应用于现实世界任务中的成功。