编者按:关于OpenAI的那篇博客,相信很多玩家一早起来就已经看过了。昨晚打完Dota2时,云玩家小编也在Reddit上看了相关视频,还和队友一起推测了会儿内在机制。但不曾想,我这一睡就又错过了头条。本文会重新编译原博内容,并补上被大家忽视的一些关键点。
去年,OpenAI的强化学习bot在中路solo中击败职业选手Dendi,赢得众人瞩目,但Dota2是一个5人游戏,在那之后,我们目标是制作一个由神经网络构成的5人团队,它能在8月份举办的Ti8国际邀请赛上,用有限的英雄击败职业队。时至今日,我们有了OpenAI Five,它已经可以在比赛中击败业余玩家。
OpenAI Five玩的是限制版的Dota2,它只会瘟疫法师、火枪、毒龙、冰女和巫妖5个英雄,因为镜像训练,它的对手也只能玩这5个。游戏的“限制性”主要体现在以下几方面:
这些限制使OpenAI Five的游戏和正常游戏有一定区别,尤其是队长模式,但总体而言,它和随机征召等模式差别不大(对于冰女这样的五号位,没有眼完全没法玩吧!)。
OpenAI Five每天玩的游戏量相当于人类玩家180年的积累,和围棋AI一样,它从自学中提取经验。训练设备是256个GPU和128,000个CPU,使用的强化学习算法是近端策略优化(PPO)。因为不同英雄间技能、出装各异,这5个英雄使用的是5个独立的LSTM,无人类数据,由英雄从自己的数据中学习可识别策略。
实验表明,在没有根本性进展的前提下,强化学习可以利用LSTM进行大规模的、可实现的长期规划,这出乎我们的意料。为了考察这个成果,7月28日,OpenAI Five会和顶级玩家进行比赛,届时玩家可以在Twitch上观看实况转播。
OpenAI Five击败OpenAI员工队伍
如果一个AI能在像星际、Dota这样复杂的游戏里超越人类水平,那它就是一个里程碑。相较于AI之前在国际象棋和围棋里取得的成就,游戏能更好地捕捉现实世界中的混乱和连续性,这就意味着能解决游戏问题的AI系统具有更好的通用性。醉翁之意不在酒,它的目标也不仅仅是游戏。
Dota2是一款实时战略游戏,一场比赛由2支队伍构成,每支队伍5人,在游戏中,每个玩家需要操控一个“英雄”单位。如果AI想玩Dota2,它必须掌握以下几点:
Dota2的游戏规则非常复杂——它已经被积极开发了十几年,游戏逻辑代码也有数十万行。对于AI来说,这个逻辑需要几毫秒才能执行,而国际象棋和围棋只需几纳秒。目前,游戏还在以每两周一次的频率持续更新,不断改变语义环境。
我们使用的算法是前阵子刚推出的PPO,这次用的是它的大规模版本。和去年的1v1机器人一样,OpenAI Five也是从自学中总结游戏经验,它们从随机参数开始训练,不使用任何人类数据。
强化学习(RL)研究人员一般认为,如果想让智能体在长时间游戏中表现出色,就难免需要一些根本上的新突破,比如hierarchical reinforcement learning(分层强化学习)。但实验结果表明,我们应该给予已有算法更多信任,如果规模够大、结构够合理,它们也能表现出色。
智能体的训练目标是最大化未来回报,这些回报被折扣因子γ加权。在OpenAI Five的近期训练中,我们把因子γ从0.998提高到了0.9997,把评估未来奖励的半衰期从46秒延长到了五分钟。为了体现这个进步的巨大,这里我们列几个数据:在PPO这篇论文中,最长半衰期是0.5秒;在Rainbow这篇论文中,最长半衰期是4.4秒;而在Observe and Look Further这篇论文中,最长半衰期是46秒。
尽管当前版本的OpenAI Five在“补刀”上表现不佳(大约是Dota玩家的中位数),但它对于经验、金钱的的优先级匹配策略和专业选手基本一致。为了获得长期回报,牺牲短期回报是很正常的,就好比队友抱团推塔时,玩家不该自己在线上补刀刷钱。这是个振奋人心的发现,因为我们的AI系统真的在进行长期优化。
模型结构
看不清图请向论智君索取
每个OpenAI Five神经网络都包含一个单层的LSTM(左下淡紫),其中有1024个神经元。输入当前的游戏状态(从Valve的Bot API中提取)后,它会单独计算各个action head(输出动作标签),如图中下方亮蓝色方框中的X坐标、Y坐标、目标单位等,再把所有action head合并成一系列动作。
下图是OpenAI Five使用的观察空间和动作空间的交互式演示。它把整张地图看做一个有20,000个数据的列表,并通过8个列举值的列表来采取行动。这个场景是夜魇上天辉高地,我们选中冰女,可以发现,冰女脚下的9×9小方格表示她可以前进位置,其中白色目标方块的坐标是(-300,0)。大方框表示可以放Nova地方,目标分别是投石车、小兵、毒龙、巫妖、瘟疫法师和另一个冰女。
OpenAI Five可以就自己观察到的内容对缺失信息做出反应。例如火枪的一技能是榴霰弹,这是一个范围伤害,虽然除了星际玩家以外的正常玩家都看得到这个区域,但它并不属于OpenAI Five的观察范围。即便“看不到”,每当AI走进霰弹区时,它们还是会急着走出来,因为那时它们的血量在不断下降。
探索
既然AI可以学会“深谋远虑”,那接下来的问题就是环境探索。前文提到了,OpenAI Five玩的是限制版Dota2,即便少了很多复杂内容,它还有上百种道具、数十种建筑物、法术、单位类型和游戏机制要学习——其中某些内容的组合还会产生更强大的东西。对于智能体来说,有效探索这个组合广阔的空间并不容易。
OpenAI Five的学习方法是自我训练(从随机参数开始),这就为探索环境提供了初级经验。为了避免“战略崩溃”,我们把自我训练分成两部分,其中80%是AI和自己对战,剩下20%则是AI和上一版AI对战。经过几个小时的训练,带线、刷钱、中期抓人等战略陆续出现了。几天后,它们已经学会了基础的人类战略:抢对面的赏金神符,走到己方外塔附近补刀刷钱,不停把英雄送去占线扩大优势。在这个基础上,我们做了进一步训练,这时,OpenAI Five就已经能熟练掌握5人推塔这样的高级策略了,
2017年3月,我们的第一个智能体击败了机器人,却对人类玩家手足无措。为了强制在战略空间进行探索,在训练期间(并且只在训练期间),我们随机化了它的各项属性(血量、移速、开始等级等),之后它开始能战胜一些玩家。后来,它又在另一名测试玩家身上屡战屡败,我们就又增加了随机训练,AI变强了,那名玩家也开始输了。
OpenAI Five使用了我们之前为1v1智能体编写的随机数据,它也启用了一种新的“分路”方法。在每次训练比赛开始时,我们随机地将每个英雄“分配”给一些线路子集,并对其进行惩罚以避开这几路。
上述探索自然离不开回报的指引。我们为Dota2设计的回报机制基于人类玩家对行为的具体评判:团队作用、技能施放、死亡次数、助攻次数和击杀次数等。为了防止智能体钻漏洞,我们的方法是计算另一队的平均表现,然后用本队英雄表现减去这个值来具体评判。
英雄的技能点法、装备和信使管理都从脚本导入。
团队合作
Dota2是个团队合作游戏,但OpenAI Five的5名英雄间不存在神经网络上的明确沟通渠道。他们的团队合作由一个名为“team spirit”的超参数控制,范围是0到1,由它给每个英雄的加权,让它们知道这时是团队利益更重要还是个人刷钱更重要。
Rapid
这个AI是在我们的强化学习训练系统Rapid上实现的,后者可以应用于Gym环境库。我们已经用Rapid解决了OpenAI的许多其他问题,比如Competitive Self-Play。
整个训练系统被分为rollout workers和optimizer两部分,其中前者运行一个游戏副本,并用一个智能体收集经验,后者则在一系列GPU中执行同步梯度下降。rollout workers通过Redis跟optimizer同步经验。如上图所示,每个实验还包括一个Eval workers的过程,它的作用是评估经过训练的智能体和参考智能体。除此之外还有一些监控软件,如TensorBoard、Sentry和Grafana。
在同步梯度下降过程中,每个GPU在各自batch计算梯度,然后再对梯度进行全局平均。我们最初使用MPI的allreduce进行平均,但现在用我们自己的NCCL2封装来并行GPU计算和网络数据传输。
上图显示了不同数量的GPU同步58MB数据(OpenAI Five参数)的延迟,几乎可以被并行运行的GPU计算所掩盖。
我们还为Rapid开发了Kubernetes、Azure和GCP后端。
到目前为止,OpenAI Five已经在限制版Dota2中获得了非常辉煌的战绩:
4月23日,OpenAI Five首次击败机器人脚本;5月15日,它在和OpenAI员工队的较量中1胜1负,首次战胜人类玩家;6月6日,它突破OpenAI队、观众队和V社队的封锁,决定性地赢得了所有的比赛。之后我们又和业余队、半职业队进行了非正式比赛,OpenAI Five没有像预想中那样一败涂地,而是在和两个队的前三场比赛中都赢了两场。
这些AI机器人的团队合作几乎是压倒性的,它们就像5个无私的玩家,知道最好的总体战略。 ——Blitz
我们也从OpenAI Five的比赛中观察到了一些东西:
OpenAI Five可以观察的信息和人类玩家相同,游戏里有什么数据,它就看到什么数据。比如玩家需要手动去检查英雄位置、血量情况和身上的装备。我们的方法并没有从根本上与观察状态相关联,但仅从游戏渲染像素看,它就需要数千个GPU。
对于许多人关心的APM问题,OpenAI Five只有150-170(每4帧一次动作,理论上最高有450)。但需要注意的是,这150是有效操作,不是逛街和打字嘲讽,它的平均反应时间为80ms,比人类快。
这两个差异在1v1中最为重要,但在比赛中,我们发现人类玩家可以轻松适跟上AI的节奏,所以双方竞技还是比较公平的。事实上去年Ti7期间,一些职业玩家也和我们的1v1 AI做了多次训练,根据Blitz的说法,1v1 AI改变了人们对1v1的看法(AI采用了快节奏的游戏风格,现在每个人都适应了)。
我们现在正在为8月份的Ti8做准备,虽然不知道击败职业队伍的愿望能否实现,但我们相信,通过努力工作,至少我们得到了一个真正的机会。
以上内容是截至6月6日的OpenAI Five简介,我们会继续进行更新,并把后续工作和结果汇总成一个成熟报告。7月28日,我们会邀请一线选手和AI在线比拼,千万记得来参加。
来源:OpenAI 编译:Bot 原文地址:blog.openai.com/openai-five/#observations