去年,OpenAI 的 1v1 AI 击败了世界顶尖选手 Denti,OpenAI CTO Greg Brockman 承诺:明年,我们会带着 5v5 的 AI bot 重回 TI。今天,他们履行了诺言,带着全新的 OpenAI Five,意欲挑战全世界最顶尖的 Dota 2 人类玩家。然而,51 分钟的比赛之后,OpenAI 经历了一场完败。
据介绍,本届 TI8 的很多参赛队伍都报名想参加与 AI 的比赛,OpenAI 今天遇到了第一个对手:来自巴西的战队 paiN,后者也是本届 TI8 比赛第一支被淘汰的队伍。但不可否认,它仍然是目前为止全球最为强大的 18 支队伍之一。而在此之前的公开比赛中,OpenAI Five 在 1v1 比赛中战胜了 Dendi,又在 5v5 比赛中战胜了人类前职业玩家、游戏解说员组成的 6000 分级别战队。
有 AlphaGo 围棋的「前车之鉴」,比赛之前,人们纷纷预测 OpanAI 的人工智能稳赢。然而事实并没有这么简单,虽然 OpenAI 的智能体在操作反应等方面比较有优势,当在整体策略与合作上仍比不上人类团队。
TI8,开局不利
今天的人机大战仅进行一场,比赛双方阵容如下:
- OpenAI 天辉方:直升机、巫妖、死亡先知、冰女、潮汐
- paiN 夜魇方:莱恩、死灵法师、巫医、火枪、斧王
比赛一开始,OpenAI 就给了自己 97% 的胜率,然而开局就出师不利,paiN 选择了开雾直接冲进天辉野区,四人围攻落单的潮汐,抢到了一血。OpenAI 也展示出了人工智能「不聪明」的一面,在塔下不断插眼。
paiN 开局打的不错,游戏进入 7 分半,OpenAI Five 落后 1000 经济。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 经济已经领先了 9000。到 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 似乎不明白什么装备合适,而且浪费了大量的金钱在插眼上。
OpenAI Five 项目组成员、研究科学家 Jonathan Raiman 告诉机器之心,团队成员并没有特别失望,「赛前,我们大多数人觉得赢下本场比赛的几率大概就 30%-40%。这场比赛我们学到了很多东西,比如 AI 击杀了 Roshan 很多次,这些都值得我们回去好好研究。」
Raiman 透露,此次比赛环境因为改变信鸽的设置,信鸽变得可以被击杀,这让模型又要重新适应新的环境,一定程度上影响了很多因素,比如装备的购买;此外,团队正在反思关于未来奖励权重的设置。OpenAI 有一套团队协作机制(后文会详细介绍),一切奖励都围绕游戏最终胜利为前提,但现在看来,这样的设置降低了 AI 在前期 farm 和积累经济的积极性。
这只是 OpenAI 在 TI8 期间的第一场比赛,之后还有两场比赛留给 OpenAI 挽尊。只不过,从 6 月首次公开 OpenAI Five 研究成果,到一路顺风顺水地在基准测试中虐杀人类队伍,OpenAI Five 为何在今日遭受当头棒喝,或许,我们可以从它之前的故事里,得到一些启示。
AlphaGo之后,需要接棒手
我们将时间拨回到 2016 年……
研究游戏中的 AI 一直是机器学习领域的热门课题:一来,设计游戏的初衷是娱乐和挑战,这种复杂性和趣味性使其成为 AI 的理想选择;二者,游戏提供了丰富的人机交互机会;再者,因为游戏非常流行,自然创造出了更多的数据作为训练 AI 的养分。
过去几年,游戏研究为机器学习领域带来了重大的突破:2015 年,谷歌的 DeepMind 在科学杂志《自然》上发表了一项最新研究:他们开发出了深度强化学习(具体为 Deep Q Network)来训练 AI 玩家,在 Atari 2600 的一系列游戏中,表现接近甚至超过了人类的水平。
到了第二年,DeepMind 的 AlphaGo 横空出世,基于蒙特卡洛树搜索和强化学习,它在和韩国围棋大师李世乭的较量中以 4:1 胜出;又过一年,AlphaGo 进化为 AlphaZero,不依靠人类知识,紧靠自我博弈,在国际象棋、将棋和围棋这三种棋类游戏中实现超过人类的水准。
李世乭
一盘棋,在全世界刮起了一股 AI 热潮,但这股热潮迟早会冷却。世界需要新的刺激保持对 AI 的好奇心和热忱,从业者们也要寻求新的挑战探索 AI 的边界。
围棋虽然被攻破了,但在万千游戏世界里,留给研究员们的空间依然很大:从牌类游戏,第一人称游戏,雅塔利游戏系列,到赛车游戏,策略游戏,沙盒游戏……DeepMind 和 Facebook 便在星际争霸(StarCraft)上发力,星际争霸被认为是电子游戏世界里最难被攻克的游戏之一,至今 DeepMind 的表现一直不太理想,也促使了他们在去年和暴雪公司开源了星际争霸 2 的机器学习平台。
在这样的背景下,OpenAI 的 Dota AI 项目,被予以了厚望。
2016 年 11 月 5 日,OpenAI 决定开发可以学习 Dota 2 的人工智能体。项目组由 OpenAI CTO Greg Brockman 带领。
Greg Brockman
在此之前,OpenAI 并不知道研究什么游戏,只是大概有个标准:游戏要足够复杂,且十分流行,有丰富的 API 可以使用,能在 Linux 上运行。他们在美国直播平台 Twitch 上搜索了所有的游戏,最终将目标落在了 Dota 2 上。
Dota,全名 Defense of The Ancients,原本是从竞技游戏《魔兽争霸》系列孵化出的一张多人在线战术竞技地图,如同这款游戏的名字一样,Dota 的胜利条件是摧毁敌方的 Ancient(水晶)。
2005 年,Dota 第一版地图 6.01 版本正式发布,Dota 背后最核心的地图程序员冰蛙(IceFrog)多年来维护和更新 Dota 地图。2013 年,冰蛙联合游戏开发公司 Valve 发行了 Dota 2,完全独立于魔兽争霸,成为了一款真正的竞技游戏。
Dota 6.67C
Dota 2 符合 OpenAI 的所有要求:
首先,它十分复杂。Dota 2 有 115 个可用英雄,每个英雄 1-10 个技能不等(卡尔,说的就是你),上百件物品,20 几个塔、数十个 NPC,5v5 组成天辉和夜魇两派,在三条线路上互相博弈,从中衍生出包括对线、打野、Gank、团战、插眼等不同的战术和安排。
OpenAI 在官方博客上列出了 Dota 2 和棋类游戏的对比数据:Dota 2 每 tick 平均产生 1000 个可能有效行为,相比之下,国际象棋是 35 个,围棋是 250 个;通过 Valve(Dota 2 的运营公司)的 bot API,OpenAI 把 Dota 2 视为 2 万个状态,也就代表人类在游戏中可获取到的所有信息。国际象棋代表大概 70 个枚举值,围棋大概有 400 个枚举值。
其次,Dota 2 很流行。这款游戏在全球有上千万的玩家,虽然数量上比不过《英雄联盟》或者如今的「吃鸡」和「堡垒」,但它由于历史相对久远(Dota 在 2005 年发行),又基于魔兽争霸的史诗背景,使得这款游戏有着很深的底蕴和口碑。
再者,Dota 2 有专业电竞赛事。每年 8 月,全世界的顶级玩家会来到北美参加 Dota 2 国际邀请赛 The International,这是由 Valve 举办。去年 TI7 的奖金池高达 2000 多万美元。
起初,OpenAI 并非着眼于击败顶尖的人类玩家,如果能使用当前最前沿的机器学习算法,开发出一个智能的、会玩 Dota 的虚拟机器人(下文用 bot 代替),就已经是莫大的突破了。没想到,路越走越远。
我们可能要失败了
2017 年年初,OpenAI 开发出了他们自认为最好的一款基于规则编写的脚本 bot。这要多亏于项目组的前研究员、如今对冲基金 DE Shaw Group 的 SVP Rafal Jozefowicz,Rafal 从没有打过 Dota,但他每天都看比赛回放,和其他成员聊 Dota 2 英雄是怎么放技能、怎么推塔、怎么买装备。
研究员们把能想到的规则都编写了进去,脚本 bot 也确实能打赢一些业余玩家,但面对稍强一些的玩家就毫无胜算了。
OpenAI 决定再进一步,把硬编码的部分取出来,转而用机器学习代替。他们使用强化学习(reinforcement learning)让 bot 从头开始学习。结果,他们发现在短时间里根本无法在 5v5 的环境里实现,太困难了。
研究员于是退而求其次,先从一个小游戏下手,然后逐步扩大游戏环境,这个小游戏叫 Kiting。
Kiting 是 Dota 里的一个技巧,一般出现在对线期:你攻击一下敌方单位然后通过走位让它打不到你,来来回回地消耗敌方的血量。OpenAI 基于 Dota2 创造了一款小游戏:在一个环形孤岛上,让训练好的 bot 在岛上去通过 Kiting 的方式和脚本 bot,保证自己不被打到的同时将敌方单位击杀即算获胜。
听起来挺简单的吧?实际操作却根本不是一回事儿,OpenAI 的 bot 在 Kiting 里始终打不赢人类玩家。OpenAI 的 bot 始终沿着同样一种轨迹训练,但是人类往往不按套路出牌,这让实验结果一直差强人意。
「我们可能要失败了,」这是 OpenAI 在当时得出的结论,距离项目启动已经小半年了,进度却大幅度落后,不少研究员有些灰心。此时,OpenAI 决定走到哪儿算哪儿,即使是发布最新的研究成果也依然有价值。
结果转机出现了。研究员开始将训练环境里随机化,让英雄时而走的快,时而走的慢,时而因为故障而停滞不前。这个方法很快收到了奇效,随机性使得 bot 的强化学习策略网络非常鲁棒。2017 年 3 月 1 日,OpenAI 训练出来的小黑(黑暗游侠)已经可以在 Kiting 中击杀脚本编码的小牛(撼地神牛)。
Kiting
他们将 Kiting 里的策略放到了 Dota 2 的 1v1 模式中,同样收到了效果。Bot 开始学会补兵、学会卡兵、能使用各种技能了。这给予了 OpenAI 极大的信心:只要使用同样的算法,然后加码计算能力,或许有一天,我们能做出 5v5 的 AI。
Jonas Schneider 回忆说,直到 2017 年的 4、5 月份,他都依然可以轻松地击败 AI,但随着 OpenAI 加入了更多的算力对 bot 进行训练,它的水平开始突飞猛进。6 月初,它打赢了 1500 分的玩家。两个月后,Dota2 1v1 大神、2015 年 The International 冠军队伍成员 Sumail 也败给了 OpenAI。
在这个过程中,著名的美籍韩裔解说员 William「Blitz」Lee 对 OpenAI 帮助很大。OpenAI 当时找到了 Blitz,希望他能予以一些指导,要知道,并不是每一位 Dota 玩家都欣赏 OpenAI 的做法,有人觉得这群科学家在耍花招,有人不看好,但 Blitz 从一开始就被 OpenAI 的成果所吸引,据 OpenAI 研究员回忆,Blitz 在和 bot 打完一场 1v1 后,说了这么一句话:
「这将从此改变 Dota 玩家如何 1v1 的方式。」
接下来的故事,大家都知道了:在去年 TI7 上的 Dota2 一对一表演赛中,由 OpenAI 设计的 bot 打败了 Danylo "Dendi" Ishutin,Dendi 在职业生涯中已经赢得 73 万 美元奖金。OpenAI 的 bot 在第一场比赛开始约 10 分钟就打败了 Dendi。在第二场比赛中 Dendi 放弃,并拒绝进行第三场比赛。
OpenAI 火了。从机器学习这个圈子里的明星研究机构,变成了全世界关注和热议的焦点。AI 攻破 Dota 1v1 成功霸屏去年的 TI7,一场表演赛,风头盖过了 TI7 上所有的正式比赛。多数人振奋,惊喜,难以置信,也有人怀疑和不甘心,五味杂陈。
OpenAI 的谷歌搜索趋势
1v1 的胜利为 OpenAI 解开了许多谜团,其中最重要的是:强化学习在如此复杂、需要长期策略的游戏环境下是否依然奏效?
没有人不会质疑 AI 学习某一种技能的能力,比如正反补,比如释放技能,这都很简单。但在复杂的环境里将所有的技能、走位、对线等串在一起,在 1v1 中战胜世界顶尖玩家,这是重大的突破,毋庸置疑。
不过,许多人不知道的是,人类玩家在这之后的和 OpenAI 的 1v1 单挑中还是赢过一次的。去年 9 月 7 日,来自德国的 Dota2 选手 Dominik "Black" Reitmeier 在最后时刻完成皮血反杀,取得 2:1 的胜利。这是人类第一次在完全版 AI 面前取胜,看把 Black 激动成什么样了。
OpenAI 不是 AlphaGo,至少,它不是无敌的。
比赛结束后,OpenAI CTO Brockman 在 TI7 上公布了另外一个令人振奋的消息,「下一步是 5V5。我们明年 TI 再见!」
解决 5V5 的三个核心问题
话虽然放出去了,但将 1v1 的成功在 5v5 上复制,OpenAI 没有十足的把握。在真正开始训练 bot 前,研究团队做了大量的前期准备工作:
比如最大化地利用 CPU 和 GPU 来加速大规模训练,时间就是金钱,OpenAI 最终使用了 128,000 CPU 核和 256 个 GPU 来支持算力,让 AI 每天自我博弈成千上万盘游戏,每天累计游戏时间达到 180 年(限制 AI 游戏时间什么的是不存在的);
他们摒弃了 Kubernetes 而自主开发了一个专门用于强化学习的训练系统 Rapid,能够在分布式系统中快速地复制多个机器上训练出来的结果和数据,然后更新训练参数;
他们使用了 Gym 作为训练环境。Gym 是 OpenAI 自主开发的用于强化学习的训练环境,包含了 OpenAI Five 所需要的各种程序和后台编码。
在完成部署后,OpenAI 需要解决三个核心问题:长线操作、奖励机制、和团队协作。
为了训练每个英雄,OpenAI 使用了两种机器学习技术:长短期记忆网络(LSTM)和近端策略优化(Proximal Policy Optimization)。
为什么使用 LSTM 其实很好理解:打 Dota2 需要记忆,敌方英雄的每一个当前行为都会对之后的行为产生影响。LSTM 是一种循环神经网络(RNN),它比普通的 RNN 更适合于处理和预测时间序列中间隔和延迟非常长的重要事件。LSTM 有一个叫做 Cell 的元素,能够分辨出输入的信息是否有用,是否需要记住。
每一个 bot 的神经网络包含一个单层的、拥有 1024 单位的 LSTM,观察游戏的局势然后做出相应的行为。下图这个互动演示就是可以让你理解每个 bot 是如何做出指令的,这些画面就是 Dota 2 的 API 所观察到的。
以图中右下角的毒龙(冥界亚龙)释放二技能「毒液」为例,他要做出这个行动需要四个指标:行为(包括移动、攻击、释放技能、使用物品),目标英雄、技能释放的位置、以及什么时候释放。OpenAI 最终将 Dota2 世界表征为一个由 2 万个数值组成的列表。
Bot 的自我学习则依靠了近端策略优化,这是 OpenAI 在 2017 年提出的一种强化学习算法,被证明比一般的策略梯度法所需更少的数据和调参来获得更好的效果。OpenAI Five 和早期的 1v1 bot 都是从自我对抗中学习,以随机参数开始,不使用人类的搜索或引导程序。
为了避免「策略崩坏」,智能体在 80% 的游戏中通过自我对抗进行训练,而在 20% 的游戏中与过去的智能体进行对战。
奖励机制则牵涉到两个方面:一是每个行为对于最终影响游戏结果的权重。比如反补的权重是 0.2,正补是 0.16;推掉高地塔的权重 1.0,但是推掉水晶外的两座外塔的权重只有 0.75,和推掉第一座外塔的权重一致,被击杀的权证则为负数。
另一个是每个神经网络的训练以最大化未来奖励的指数衰减(exponential decay factor)和为目标。这是一个相当重要的参数,决定了 bot 究竟是关注长期的奖励还是短期的奖励。如果γ太小,那么 bot 就只关注眼前比如打钱的利益;γ太大,那么它将无限关注未来的奖励,对前期训练 bot 没有一点好处。
OpenAI 在官方博客称,他们将γ 从 0.998(以 46 秒为半衰期)调整到了 0.997(以 5 分钟为半衰期)。相比之下,OpenAI 的近端策略优化(PPO)论文中最长的时间跨度为半衰期 0.5 秒,DeepMind 的 Rainbow 论文中最长的时间跨度为半衰期 4.4 秒,Google Brain 的 Observe and Look Further 论文中则使用了 46 秒的半衰期。
如何让五个神经网络协作团战是另一个让不少人好奇的一点,这其实也是建立在奖励机制上。OpenAI 开发了一个叫 Team Spirit 的超参数,数值从 0 到 1,数字越小每个神经网络就越「自私」,相反则越考虑团队的整体利益。到最后,OpenAI 发现将 Team Spirit 设置为 1 都能赢得比赛。
在训练初期,研究员其实会将数值调整的很小,这样 AI 会更考虑自身的奖励,学习如何分路、对线、提供金钱和经验。等到每个神经网络学会了基本的策略和玩法后,研究员才将数值慢慢提高。
由于所有参数都是随机,AI 没有引入任何人类的经验,所以 AI 没有 1-5 号位的概念,不会区分辅助和 carry,出装备也是从头开始学习。
在第一场游戏中,英雄漫无目的地在地图上探索,而在几个小时的训练后,出现了规划、发育或中期战斗等概念。几天后,智能体能一致地采用基本的人类策略:试图从对手偷财富、推塔发育、在地图旋转控制英雄以获得线路优势。通过进一步的训练,它们开始学会了 5 个英雄一起推塔这样的高级策略。
「AI只花了两天就打赢我了」
曾就读于麻省理工大学的 Jonathan Raiman 在去年 10 月加入了 OpenAI。Raiman 和 OpenAI 的不少研究员是旧相识,加入后,他们就经常在周一晚上开五人黑,这慢慢地竟成了 OpenAI 的传统
五月的某一个周一(官方显示为5月15日),AI首次在限制的Dota环境里打赢了OpenAI的团队(天梯分2500)。
「那场比赛我记得人类支撑了大概 40 多分钟,」Raiman 在场边观看了比赛。「之后,比赛时间就越来越短了。我超级兴奋的!我觉得我们有 50/50 的几率能挑战专业的队伍了。」
事实上,在这场比赛的一周前,AI 已经打赢过一次人类了。但那一次胜利存在着一些问题,研究员们检查了后台的代码,发现运行神经网络的代码是错的!AI 在比赛的过程中完全没有使用 LSTM 的记忆功能,瞎猫碰到死耗子,却赢了。在这之前,研究员根本没有看出来 AI 有任何问题。
「许多机器学习的问题还是落实在工程和系统漏洞修复上,」OpenAI 的研究科学家 Susan Zhang 说。「比如,AI 在很长一段时间里,都会避免升级到 25 级,因为它发现达到 25 级会出现巨大负面奖励,所以到了 24 级 AI 就不会出去升经验了。」
Susan Zhang
Raiman 也和 AI 过了过招。第一次,他所在的团队赢了;可当 AI 经过两天的训练后,Raiman 就不是对手了。「对我这个水平的人来说,大概就只有 24-48 个小时的空窗期,过了就打不过 AI 了。一开始我们还能抵抗 40 多分钟,到后面就只有 20 分钟,再到后面就十多分钟,最后索性我们就呆在基地不出来了。」
到了 6 月 6 日,OpenAI 已经可以击败水平在 4000-6000 分的队伍,但是输给了匹配分 5500 的专业队伍。在那次比赛中,研究员们发现了许多有意思的现象:
OpenAI Five 习惯牺牲自己的优势路(夜魇军团的上路,天辉军团的下路),然后在劣势路派上三个英雄压制敌人的优势路,迫使战斗转移到对手更难防御的一边。该策略在过去几年的专业领域出现过,现在已经成为了流行战术。
比赛初期到中期的转换比对手更快,在人类玩家走位出问题时,AI 会主动进行 gank;在对方组织起反抗前,直接推塔。
AI 会在前期将钱和经验让给辅助英雄(这些英雄一般不优先获取资源)让它们的伤害值更高,从而建立起更大的优势,赢得团战以及利用对方的错误来确保快速取胜。
时隔将近一年,OpenAI 首次对外公布了 OpenAI Five 项目的进度,发布 OpenAI Five 项目报告。
随着更多的细节被披露,「一天训练 180 年,OpenAI 击败人类 Dota2 玩家」、「OpenAI 攻破 Dota2」的新闻迅速席卷全球。微软创始人 Bill Gates 就发推特说,「AI 机器人在视频游戏 Dota 2 中击败了人类。这是一个大问题,因为他们的胜利需要团队合作和协作 - 这是推动人工智能的一个重要里程碑。」
人们开始真的相信:Dota 2,是不是也会像围棋一样被 AI 攻破了?
只有半个 Dota
OpenAI 第一阶段的成果确实喜人,但披露出来的结果并不能让许多 Dota 粉丝满意,原因是:太多限制了。在截止 6 月的比赛中,游戏里玩家只能操控五个英雄、不能插眼、不能开雾、没有 Roshan、不能隐身、禁止扫描等等……这还算是 Dota 吗?
OpenAI 不是不想放开限制,而是 AI 需要学习的东西实在太多了,时间却很有限。
举个例子,OpenAI 严格控制了英雄数量,如果你仔细观察会发现大多都是 Dota2 的入门英雄,比如冰女、影魔、巫妖、巫医等等。因此,在论坛或者微博里你最常看到的一句评论就是:敢不敢让 OpenAI 玩卡尔或者狗头(地卜师)。
AI 可以玩卡尔,但这需要大量的时间训练。这和人其实是一样的,上手先玩入门英雄,熟练了再玩高级英雄(我到现在都玩不来卡尔),英雄难度越大,学习的时间越久。
一图详解卡尔十个技能
由于训练中所有参数都是随机的,AI 只能靠不断的训练中摸索出使用这些技能的方法,所以它并没有真正理解这些技能。有些技能很直接,例如冰女的大招放出来就一定会有伤害;有些则相对复杂,比如炼金术士,它的二技能「不稳定化合物」是一把双刃剑:5 秒内放出去可以晕眩敌方英雄造出伤害,超过 5.5 秒就会伤害自己。
对 AI 而言这就是一个头疼的问题:我到底是放还是不放?于是在很长时间的自我对抗中,AI 始终认为炼金术士的二技能都没什么用。这和人是完全不一样的,没有人会因为炼金术士的二技能伤血而不使用它。
炼金术士
Roshan 也是同样的道理。打 Roshan 可以拿到不死盾,三级 Roshan 还能拿到加满 3000 滴血的奶酪,但是也会付出惨痛的代价,一不小心就死里面了。所以 AI 很长时间都选择不打 Roshan。
为了解决这个问题,研究员选择在训练随机设定 Roshan 的生命值,比如有些时候他只有 100 滴血,那么 A.I, 就会选择打掉 Roshan。通过这样的训练,如今的 AI 每次在经过 Roshan 的时候会选择看一样它的血量。
在今天的比赛里,OpenAI 的英雄反复看 Roshan 就是如此训练的结果。
Roshan
插眼则是一个相当有趣的「挑战」。在很长一段时间里,AI 经常乱插眼,或者没事儿在基地里插眼。研究员就不明白了,干嘛老在基地里插眼?!后来发现,往往在敌方单位推高地时(也就是第三座防御塔),AI 会做出这样的选择,给储物柜腾出地方买其他装备。
截止到今天,AI 依然会在一些莫名其妙的地方插眼:塔下,基底,甚至插很多眼。
幻象到现在依然是个限制,因为 OpenAI 想不出如何让英雄控制幻象。Raiman 说,他们曾经尝试过让英雄出分身斧,但只有在防守高地或者防御塔时,英雄才会使用这个装备,因为幻象能抵挡一定的伤害(陈怕是要很难出现在阵容里了。)
分身斧
所以在 6 月-8 月的时间里,OpenAI 开始逐步地解决这些问题。同时,他们也宣布了下一步计划:在 8 月 5 日,邀请实力超过全世界 99.95% 玩家的(前)专业选手来对 AI bot 进行基准测试。
「即使最后我们在 TI 表现不好,如果我们能取得基准测试的成功,那一切也都是值得的,」Zhang 说。
基准测试,血虐人类
OpenAI 的办公室位于旧金山的 Mission District,而离办公室大约不到一英里的距离有一家酒吧叫做 Folsom Street Foundry,在当地颇受好评。酒吧内有一个偌大的会场,能容纳 300-400 人,用来承办一些活动,例如音乐会、派对等等。
OpenAI Five 首次公开和人类顶尖玩家进行 5v5 的对决,就选在了 Folsom Street Foundry。8 月 5 日,周日,中午 12 点,酒吧内已经人满为患。会场里的高脚凳和吧台已经被撤去,换上了连排的座椅。舞台中央摆着五台座机电脑,旁边还有专业的解说台。OpenAI 包括创始人 Ilya Sutskever、CTO Brockman 等几十位研究员全部出动,来见证这一历史时刻。
当天,OpenAI Five 举办了四场比赛:一场和观众的表演赛,和三场与顶尖选手的基准比赛。若 OpenAI 获胜,则意味着项目完成了阶段性的目标。
本场比赛也开放了诸多环境限制,比如加入了战争迷雾、可以插眼、可以打 Roshan、可以互相选英雄、英雄数量也从 5 个扩展到 18 个。
赛前,人类战队中的现役职业选手、现世界排名 104 的 MoonMeander 在 Twitter 上立了 Flag:「从未输给过 bot,这次也不会」。此次和 MoonMeander 一同上场的还有 OpenAI 的老朋友 Blitz、Capitalist、Fogged 和 Merlini,他们还煞有其事地穿着写有「human」的统一队服,在舞台中央比赛。
Merlini(左)、Blitz(中间)和 MoonMeander(右)
这五个人是什么水平呢?他们起了个队名,叫「99.95th-percentile」,意思是他们比全世界 99.95% 的玩家都要强,全世界前 15000 人的水平,大约对应「超凡入圣 5」(Divine5),也就是过去天梯的 6000 分以上。
但即便如此,当天现场的观众在赛前并不看好人类玩家。现场接受采访的至少 10 个人里,超过 3/4 的人认为 AI 会胜利。「我情感上支持人类,但我不觉得他们有机会能获胜,」一位现场观众如是说道。
结果,也确实如此。
一般来说,即使是一边倒的比赛,30 分钟的比赛时长也是能保证的。然而,AI 获胜的三场比赛,获胜时间分别是 13 分钟(和观众),21 分钟,和 25 分钟。
第一场比赛,人类为夜魇方:小牛、瘟疫法师、冰女、剃刀、影魔;OpenAI Five 为天辉方:巫妖、飞机、火枪、DP、莱恩。
在第一场比赛里,人类玩家似乎很不适应 OpenAI 的,直到比赛第五分钟才有 Blitz 的影魔打下一血。OpenAI 的打法相当激进,从开场的 212 分路迅速转为 311 优势路带线,随后在比赛第 10 分钟开始 411 集中推夜魇的劣势路塔。这个时间一般都还是对线期,人类方一直没有组织起像样的防御。比赛到了第 13 分钟的时候,AI 的人头优势已经达到 22:4 了。
后面的十分钟里,人类鲜有高光表现,除了影魔完成一次双杀外,OpenAI 是压着人类打,在第 21 分钟破了两路,又在高地以 0 换 4 的代价完成一波小团灭,人类打出 GG(Good game,表示投降),人头比数 8:39。
人类打出 GG
第二场比赛,人类为天辉方:小牛、影魔、巫医、死亡先知与隐刺;OpenAI 为夜魇方,祭出火枪、直升机、冰女、莱恩与巫妖。
选英雄阶段就已经注定了人类的失利,当 Blitz 再次选择影魔时,OpenAI 预测的胜率从 56% 骤然上升至 72%。人类在这一局明显打出了更好的状态,拿下一血之外,比分一直紧咬。但随后的几波团战人类都损失惨重,到了 20 分钟,OpenAI 开始集中优势推塔,一口气把三路全部破了,祭出超级兵,人类打出 GG,12:41。
这一局比赛出现了许多有意思的状况:比如 OpenAI 方的冰女出了点金手,这向来是打野英雄或者是后期 carry 的装备;AI 学会了暂停比赛,但不知道为什么要暂停;AI 非常钟情于插眼和反眼,同样它们也学会了开雾;在推掉两路之后,人类一般就直接拆水晶外的最后两座塔了,但是 AI 却选择全部撤退,然后将第三条路从第一座外塔开始拆……
影魔表示这锅不背
由于人类在 AI 面前毫无还手之力,OpenAI 也达成所愿,所以第三场比赛成为了一场娱乐赛,由现场观众和 Twitch 上的直播观众来为 OpenAI Five 选择英雄。结果,观众们很「贱」地选择了四个近战英雄(小鱼人、隐刺、斧王、流浪)和一个没什么用的痛苦女王;人类方则选择死亡先知、死灵法师、莱恩、巫妖、直升机。OpenAI Five 直接打出了 2.9% 的获胜概率,且最后胜率掉到了 1% 以下。不过,AI 依然很顽强,比赛第 15 分钟时,人头比也不过 15:15 将将打平。
尽管比赛最后成了人类玩家的「挽尊赛」,35 分钟以 48:22 结束战斗,但对 OpenAI 的研究员而言,这场娱乐赛却带来了不少值得研究的数据。比如,在被人类压制的时候,AI 显得无所适从,打不来逆风局了:小鱼人满场飞奔,流浪和斧王一直在无脑拆塔,人类推高地时,AI 五个英雄没有一个在高地进行防守。
高地无 AI 在防守
参加比赛的玩家和著名解说员 Capitalist 在和 Motherboard 的采访中说,「机器人依靠自信的知识玩这个游戏,它知道每个人都在哪里,它知道你拥有多少 [攻击力]。它确切地知道它们在一条车道上的三个或四个英雄之间可以造成多大的伤害,并且当你处于错误的位置时它会立即突然爆发。它知道。而且我从来没有和类似的东西玩过,这看起来太神奇了。」
三场比赛结束后,CTO Brockman 发推特说:「OpenAI 的人工智能系统已经准备好在下月 TI8 上迎战顶级职业选手了!」
胜利背后,埋藏巨大隐患
OpenAI 没有想到的是,第三场的娱乐局,竟然成为今天失败的前车之鉴。
事实上,基准测试后,研究员们的压力更大了。基准测试的人类玩家水平在 6500K 左右,但进入 TI 的专业选手的水平都在 9000K 以上,在短短三周的时间将 AI 的实力大幅度提升,难度很大。
Raiman 还透露,第三场比赛实在太糟糕了,解决这场比赛出现的问题成为了 OpenAI 的当务之急。
Zhang 则认为留给他们的时间实在太少了。「我们尝试在 TI 上做出一些令人印象深刻的事情,这当然会有一些压力,主要还是时间问题。你需要让实验有时间运行,给时间训练,然后会在最后做出一些很酷的事情。我们现在没有那么多时间啊!」
「还有一个问题,游戏时间拖的越久,对 AI 越不利,因为要考虑的因素和变量太多了。」
这些在 TI 赛前两周所说的话,在比赛中通通应验了:面对逆风长局,AI 没有任何办法。
但无论如何,OpenAI 实现了在非完美的环境里实现了复杂协作和长期游戏操作,这已经是巨大的突破了。尽管 OpenAI 并没有自主开发出具有突破性的算法,但他们将现有的最前沿的算法和模型和算力相结合,让一个智能体从什么都不会、通过自我对抗和学习、发展出一套合理的行为模式,这种方法在其他的 AI 应用、机器人和游戏里都将可能被应用。
TI8 不是 OpenAI Five 的最后一站,他们还会举办最后一场比赛,时间未定,预计在 10-11 月,甚至有可能在明年年初。届时,OpenAI 希望可以开放英雄池里所有的英雄,放开所有限制,让 AI 和人类玩家真正打一局酣畅淋漓的 Dota 2 比赛。
从现在来看,OpenAI 的 Dota 之旅,还远远没有结束。
明天的第二场,人工智能会带来怎样的表现,我们拭目以待。