去年,OpenAI的1v1AI击败了世界顶尖选手Denti,OpenAICTOGregBrockman承诺:明年,我们会带着5v5的AIbot重回TI。今天,他们履行了诺言,带着全新的OpenAIFive,意欲挑战全世界最顶尖的Dota2人类玩家。然而,51分钟的比赛之后,OpenAI经历了一场完败。
据介绍,本届TI8的很多参赛队伍都报名想参加与AI的比赛,OpenAI今天遇到了第一个对手:来自巴西的战队paiN,后者也是本届TI8比赛第一支被淘汰的队伍。但不可否认,它仍然是目前为止全球最为强大的18支队伍之一。而在此之前的公开比赛中,OpenAIFive在1v1比赛中战胜了Dendi,又在5v5比赛中战胜了人类前职业玩家、游戏解说员组成的分级别战队。
有AlphaGo围棋的「前车之鉴」,比赛之前,人们纷纷预测OpanAI的人工智能稳赢。然而事实并没有这么简单,虽然OpenAI的智能体在操作反应等方面比较有优势,当在整体策略与合作上仍比不上人类团队。
TI8,开局不利
今天的人机大战仅进行一场,比赛双方阵容如下:
OpenAI天辉方:直升机、巫妖、死亡先知、冰女、潮汐paiN夜魇方:莱恩、死灵法师、巫医、火枪、斧王
比赛一开始,OpenAI就给了自己97%的胜率,然而开局就出师不利,paiN选择了开雾直接冲进天辉野区,四人围攻落单的潮汐,抢到了一血。OpenAI也展示出了人工智能「不聪明」的一面,在塔下不断插眼。
paiN开局打的不错,游戏进入7分半,OpenAIFive落后经济。OpenAI逐渐在10分钟时把比分掰成了7比7,场面陷入了焦灼。我们可以看到,电脑并不注重杀人,只专注于推塔。随后,AI在两拨下路团战中抓住了机会。至17分钟,OpenAI的经济反超人类选手。
21分半,AI拿下Roshan,这也是AI首次在公开比赛中击杀Roshan,直升机拿盾。不过,在25分钟直升机在夜魇野区被抓,盾被浪费了。AI也没有来救,直接抛弃大哥了。32分钟第二次拿下Roshan,但是没想到的,OpenAI非常「自私」,谁杀掉了Roshan谁拿走不朽盾,就算他是辅助位!随后,OpenAI下路野区打出一波二换四。
人工智能对于插眼的思路异于人类,我们最多可以看到三个真眼被放在了Roshan门口!而AI同时还在家里也放了三个眼,引来了解说的吐槽。在满级之后,我们看到了AI死亡先知一直在大招收野区,很强!
paiN的玩家虽然人头落后,在英雄操作上不占优势,但逐渐找回了节奏,在推掉下路后占据了场面上的优势。35分钟,人类玩家上了高地,此时OpenAI预测的胜率降低到了67%。
当然,人类并不认为此时AI还能占据优势。在37分钟,paiN经济已经领先了。到40分钟,OpenAI在击杀了人类两个英雄后选择了第三次打Roshan,不过此时人类职业玩家似乎已经掌握了人工智能的套路。
比赛进行到第49分钟,AI认为自己的胜率已经降低到20%,大局已定。
最终,paiN的人类玩家在团灭OpenAI之后打爆了水晶。TI8人机大战第一场比赛以人类的胜利告于段落。
今天的比赛,AI存在着三个巨大的问题:
首先,游戏中期不会Gank也不会集中优势推塔了。在20分钟到35分钟的时候,有一段空窗期,paiN的火枪和斧王都还没有出BKB,这是AI的好机会。但是除了到处插眼,就是在Roshan附近晃悠,也没有组织起像样的抓人和推塔。等到敌方经济打出来,BKB出来之后,比赛呈现了一边倒的态势。
其次,没有位置之分,不会合理安排资源。Dota历来有1-5号位,1号位Carry,4-5号位辅助。将最优资源分配给1号位是Dota多年来的经验,本场比赛paiN也是将资源优先分配给火枪和斧王。反观AI这边,遵守着人人平等的原则,竟然出现了让潮汐和巫妖拿不朽盾这种「战术安排」。
最后,出装出现大的问题。AI似乎不明白什么装备合适,而且浪费了大量的金钱在插眼上。
OpenAIFive项目组成员、研究科学家JonathanRaiman告诉机器之心,团队成员并没有特别失望,「赛前,我们大多数人觉得赢下本场比赛的几率大概就30%-40%。这场比赛我们学到了很多东西,比如AI击杀了Roshan很多次,这些都值得我们回去好好研究。」
Raiman透露,此次比赛环境因为改变信鸽的设置,信鸽变得可以被击杀,这让模型又要重新适应新的环境,一定程度上影响了很多因素,比如装备的购买;此外,团队正在反思关于未来奖励权重的设置。OpenAI有一套团队协作机制(后文会详细介绍),一切奖励都围绕游戏最终胜利为前提,但现在看来,这样的设置降低了AI在前期farm和积累经济的积极性。
这只是OpenAI在TI8期间的第一场比赛,之后还有两场比赛留给OpenAI挽尊。只不过,从6月首次公开OpenAIFive研究成果,到一路顺风顺水地在基准测试中虐杀人类队伍,OpenAIFive为何在今日遭受当头棒喝,或许,我们可以从它之前的故事里,得到一些启示。
AlphaGo之后,需要接棒手
我们将时间拨回到年……
研究游戏中的AI一直是机器学习领域的热门课题:一来,设计游戏的初衷是娱乐和挑战,这种复杂性和趣味性使其成为AI的理想选择;二者,游戏提供了丰富的人机交互机会;再者,因为游戏非常流行,自然创造出了更多的数据作为训练AI的养分。
过去几年,游戏研究为机器学习领域带来了重大的突破:年,谷歌的DeepMind在科学杂志《自然》上发表了一项最新研究:他们开发出了深度强化学习(具体为DeepQNetwork)来训练AI玩家,在Atari的一系列游戏中,表现接近甚至超过了人类的水平。
到了第二年,DeepMind的AlphaGo横空出世,基于蒙特卡洛树搜索和强化学习,它在和韩国围棋大师李世乭的较量中以4:1胜出;又过一年,AlphaGo进化为AlphaZero,不依靠人类知识,紧靠自我博弈,在国际象棋、将棋和围棋这三种棋类游戏中实现超过人类的水准。
李世乭
一盘棋,在全世界刮起了一股AI热潮,但这股热潮迟早会冷却。世界需要新的刺激保持对AI的好奇心和热忱,从业者们也要寻求新的挑战探索AI的边界。
围棋虽然被攻破了,但在万千游戏世界里,留给研究员们的空间依然很大:从牌类游戏,第一人称游戏,雅塔利游戏系列,到赛车游戏,策略游戏,沙盒游戏……DeepMind和Facebook便在星际争霸(StarCraft)上发力,星际争霸被认为是电子游戏世界里最难被攻克的游戏之一,至今DeepMind的表现一直不太理想,也促使了他们在去年和暴雪公司开源了星际争霸2的机器学习平台。
在这样的背景下,OpenAI的DotaAI项目,被予以了厚望。
年11月5日,OpenAI决定开发可以学习Dota2的人工智能体。项目组由OpenAICTOGregBrockman带领。
GregBrockman
在此之前,OpenAI并不知道研究什么游戏,只是大概有个标准:游戏要足够复杂,且十分流行,有丰富的API可以使用,能在Linux上运行。他们在美国直播平台Twitch上搜索了所有的游戏,最终将目标落在了Dota2上。
Dota,全名DefenseofTheAncients,原本是从竞技游戏《魔兽争霸》系列孵化出的一张多人在线战术竞技地图,如同这款游戏的名字一样,Dota的胜利条件是摧毁敌方的Ancient(水晶)。
年,Dota第一版地图6.01版本正式发布,Dota背后最核心的地图程序员冰蛙(IceFrog)多年来维护和更新Dota地图。年,冰蛙联合游戏开发公司Valve发行了Dota2,完全独立于魔兽争霸,成为了一款真正的竞技游戏。
Dota6.67C
Dota2符合OpenAI的所有要求:
首先,它十分复杂。Dota2有个可用英雄,每个英雄1-10个技能不等(卡尔,说的就是你),上百件物品,20几个塔、数十个NPC,5v5组成天辉和夜魇两派,在三条线路上互相博弈,从中衍生出包括对线、打野、Gank、团战、插眼等不同的战术和安排。
OpenAI在官方博客上列出了Dota2和棋类游戏的对比数据:Dota2每tick平均产生个可能有效行为,相比之下,国际象棋是35个,围棋是个;通过Valve(Dota2的运营公司)的botAPI,OpenAI把Dota2视为2万个状态,也就代表人类在游戏中可获取到的所有信息。国际象棋代表大概70个枚举值,围棋大概有个枚举值。
其次,Dota2很流行。这款游戏在全球有上千万的玩家,虽然数量上比不过《英雄联盟》或者如今的「吃鸡」和「堡垒」,但它由于历史相对久远(Dota在年发行),又基于魔兽争霸的史诗背景,使得这款游戏有着很深的底蕴和口碑。
再者,Dota2有专业电竞赛事。每年8月,全世界的顶级玩家会来到北美参加Dota2国际邀请赛TheInternational,这是由Valve举办。去年TI7的奖金池高达多万美元。
起初,OpenAI并非着眼于击败顶尖的人类玩家,如果能使用当前最前沿的机器学习算法,开发出一个智能的、会玩Dota的虚拟机器人(下文用bot代替),就已经是莫大的突破了。没想到,路越走越远。
我们可能要失败了
年年初,OpenAI开发出了他们自认为最好的一款基于规则编写的脚本bot。这要多亏于项目组的前研究员、如今对冲基金DEShawGroup的SVPRafalJozefowicz,Rafal从没有打过Dota,但他每天都看比赛回放,和其他成员聊Dota2英雄是怎么放技能、怎么推塔、怎么买装备。
研究员们把能想到的规则都编写了进去,脚本bot也确实能打赢一些业余玩家,但面对稍强一些的玩家就毫无胜算了。
OpenAI决定再进一步,把硬编码的部分取出来,转而用机器学习代替。他们使用强化学习(reinforcementlearning)让bot从头开始学习。结果,他们发现在短时间里根本无法在5v5的环境里实现,太困难了。
研究员于是退而求其次,先从一个小游戏下手,然后逐步扩大游戏环境,这个小游戏叫Kiting。
Kiting是Dota里的一个技巧,一般出现在对线期:你攻击一下敌方单位然后通过走位让它打不到你,来来回回地消耗敌方的血量。OpenAI基于Dota2创造了一款小游戏:在一个环形孤岛上,让训练好的bot在岛上去通过Kiting的方式和脚本bot,保证自己不被打到的同时将敌方单位击杀即算获胜。
听起来挺简单的吧?实际操作却根本不是一回事儿,OpenAI的bot在Kiting里始终打不赢人类玩家。OpenAI的bot始终沿着同样一种轨迹训练,但是人类往往不按套路出牌,这让实验结果一直差强人意。
「我们可能要失败了,」这是OpenAI在当时得出的结论,距离项目启动已经小半年了,进度却大幅度落后,不少研究员有些灰心。此时,OpenAI决定走到哪儿算哪儿,即使是发布最新的研究成果也依然有价值。
结果转机出现了。研究员开始将训练环境里随机化,让英雄时而走的快,时而走的慢,时而因为故障而停滞不前。这个方法很快收到了奇效,随机性使得bot的强化学习策略网络非常鲁棒。年3月1日,OpenAI训练出来的小黑(黑暗游侠)已经可以在Kiting中击杀脚本编码的小牛(撼地神牛)。
Kiting
他们将Kiting里的策略放到了Dota2的1v1模式中,同样收到了效果。Bot开始学会补兵、学会卡兵、能使用各种技能了。这给予了OpenAI极大的信心:只要使用同样的算法,然后加码计算能力,或许有一天,我们能做出5v5的AI。
JonasSchneider回忆说,直到年的4、5月份,他都依然可以轻松地击败AI,但随着OpenAI加入了更多的算力对bot进行训练,它的水平开始突飞猛进。6月初,它打赢了分的玩家。两个月后,Dota21v1大神、年TheInternational冠军队伍成员Sumail也败给了OpenAI。
在这个过程中,著名的美籍韩裔解说员William「Blitz」Lee对OpenAI帮助很大。OpenAI当时找到了Blitz,希望他能予以一些指导,要知道,并不是每一位Dota玩家都欣赏OpenAI的做法,有人觉得这群科学家在耍花招,有人不看好,但Blitz从一开始就被OpenAI的成果所吸引,据OpenAI研究员回忆,Blitz在和bot打完一场1v1后,说了这么一句话:
「这将从此改变Dota玩家如何1v1的方式。」
接下来的故事,大家都知道了:在去年TI7上的Dota2一对一表演赛中,由OpenAI设计的bot打败了DanyloDendiIshutin,Dendi在职业生涯中已经赢得73万美元奖金。OpenAI的bot在第一场比赛开始约10分钟就打败了Dendi。在第二场比赛中Dendi放弃,并拒绝进行第三场比赛。
OpenAI火了。从机器学习这个圈子里的明星研究机构,变成了全世界