周末,OpenAI在DotA 2全球顶级赛事TI7(The International)的中单1v1比赛中击败了顶级选手Dendi。OpenAI的发起人之一,硅谷钢铁侠马斯克还顺势连发三条twitter,赞赏OpenAI,谈监管,谈AI的风险。
但关于这个参赛的AI,大家并不是非常了解,因此对于这次胜利的解读,夸大其词者有,质疑其并非突破者也有。
直到今天,OpenAI终于在官方博客上公布了人工智能打DotA技术的进化历程、(部分)技术细节,以及和更多选手对战的视频,以及怎样打败这个AI。
量子位编译整理如下:
成绩
我们在DotA 2上取得的结果表明,只要具备足够的计算能力,自我对抗可以使机器学习系统的水平超越人类(目前仅限于中单1v1)。
在1个月时间里,我们系统的水平从只能匹配高段玩家上升至能击败顶级职业选手。自那时以来,系统仍在继续得到优化。
有监督深度学习系统的性能取决于训练数据集,但在自我对抗系统中,随着系统变得更强大,可用数据也会自动得到优化。
下图是AI的TrueSkill得分:
随着时间发展,我们最好的AI的TrueSkill得分也在线性提高。TrueSkill是通过AI之间进行模拟游戏,观察胜率来计算的,相当于国际象棋的ELO评分。
TrueSkill得分的提高与系统各部分的改进都相关,为算法增加新功能、扩大规模都能提高得分。
AI怎样打DotA?
完整的DotA游戏是5v5对抗,但在某些巡回赛中也可以看到中单对抗。
我们的AI按照标准巡回赛规则来玩游戏,我们没有在1v1比赛中加入任何有利于AI的简化。
AI通过以下界面来操作:
- 观察:bot API功能使AI可以像人类一样观察,包括英雄、兵线和附近地形。游戏是部分可观察的。
- 操作:通过bot API进行操作,操作频率与人类选手相仿,具体操作包括移动位置、攻击其他单位,以及使用道具。
- 反馈:在获胜后AI可以获得激励。基于其他基本指标,例如血量和补刀,AI也可以获得激励。
我们将十余种装备合成方式列入白名单,供AI使用,并选择其中一种进行评价。我们还利用传统的RL技术来训练最初的控兵线技巧。
开发历程
△ AI对战SumaiL
项目进程如下所示。下文提到的MMR全称Match Making Rating,也就是比赛匹配分级,相当于天梯积分。在DotA 2中,15%的玩家天梯分低于1500,58%的玩家低于3000,99.99%低于7500。
- 3月1日:我们首个经典的增强学习系统配置于简单的DotA环境中。
- 5月8日:天梯1500分的测试者表示,他的水平提升速度要高于AI。
- 6月初:AI击败了天梯1500的测试者。
- 6月30日:击败了大部分天梯3000分的测试者。
- 7月8日:在对抗天梯7500分的半职业选手时,取得首胜。
- 8月7日:3比0击败Blitz(前职业选手,天梯6200)、2比1击败Pajkatt(职业选手,天梯8500)、3比0击败CC&C(职业选手,天梯8900)。他们都认为,SumaiL知道如何击败这个AI。
- 8月9日:10比0击败Arteezy(顶级职业选手,天梯10000)。他也认为SumaiL知道如何击败AI。
- 8月10日:6比0击败SumaiL(顶级中单职业选手,天梯8300)。他认为这个AI是无法击败的。在与8月9日的AI对抗时,他取得了2比1的成绩。
- 8月11日,2比0击败Dendi(前世界冠军、天梯7300的职业选手)。在对抗8月10日的AI时,这个AI取胜概率达到60%。
TI
我们的方法是将少量的“教练训练”与自我对抗结合在一起。这使得我们在周一到周四国际邀请赛(TI7)期间能大幅优化AI。
△ 周一,Pajkatt击败AI
周一晚间,Pajkatt使用了不太常见的装备合成方式(购买了早期魔杖),并取得了胜利。我们随后将这种装备合成方式加入到训练的白名单中。
周三下午1点左右,我们测试了最新版AI。这个AI在第一波对抗中损失了相当一部分血量。我们一开始打算把代码回滚,不过又注意到,随后的游戏变得更有趣,而第一波对抗中的严重失血只是为了诱敌深入。进一步的自我对抗修复了问题,AI学会了应对诱饵策略。与此同时,我们将其结合至周一版本的AI,只用于第一波对抗。在Arteezy下午4点到达的20分钟前,我们完成了整个流程。
△ AI对战RTZ
在与Arteezy的赛后,我们升级了控兵线模型,这使得TrueSkill评分增加了1分。在周四与Sumail的比赛之前,进一步的训练让TrueSkill评分又增加了2分。Sumail指出,AI学会了在对手视野外放技能。这基于我们此前从不知道的机制:在对手视野之外放技能,对方英雄就积累不到魔棒点数。
Arteezy也和我们MMR 7.5k的半职业测试版进行了比赛,几乎取得了胜利,但是,AI采用的一种策略令他惊讶。Arteezy随后表示,中国顶尖职业选手、iG.V战队的中单Paparazi(拒绝者)曾在和他的比赛中用过一次这种策略,但这并不是常见行为。
如何击败AI
尽管Sumail认为这个AI是“不可击败的”,但在某些非常少见的情况下,AI仍有可能被迷惑。我们在国际邀请赛的一场LAN活动上搭建了AI。玩家进行了超过1000盘游戏,尝试任何可能的方式去击败AI。
成功击败AI的策略主要包括3种类型:
- 拉兵线:玩家可以在AI的二塔和三塔之间,反复吸引刚产生的兵线来追你。最终将会有大量兵线在地图上追你,而AI的防御塔将被磨血。
- 毒球和风灵之纹:在1级情况下,这样的装备组合大幅提升玩家相对于AI的移速,从而快速拿到一血。你需要利用这样的优势去再次击杀AI。
- 1级强推:这需要大量技巧,但有几名MMR 6k到7k的玩家靠在1级短时间内放3-5次技能,击杀了AI。
解决1v1中的这些问题类似于解决Pajkatt提出的漏洞。但在5v5情况下,这样的漏洞无法使用。我们需要一种系统,能处理从未见过的奇怪局面。
基础设施
我们还没有打算完整地讨论这个AI的内部原理,团队目前专注于解决5v5问题。
项目的第一步,是搞清楚如何基于实体GPU在云计算平台上运行DotA 2。
在GPU云计算实例上,游戏显示了出错消息。在Greg的个人GPU台式机上,也就是比赛中用的那台主机运行时,我们注意到,在连接显示器的情况下DotA可以启动,但在没有连接显示器时仍然显示出错消息。因此,我们对云计算GPU实例进行了配置,伪装已连接了显示器。
DotA目前并不支持定制的专用服务器,这意味着在没有GPU的情况下只能使用缓慢的软件加速。我们随后开发了一种机制,禁用大部分的OpenGL调用,仅仅保留了启动所需要的部分。
与此同时,我们开发了脚本机器人。考虑到内置机器人在1v1情况下表现不是很好,我们需要一个基准作为参考,并理解机器人API的所有语义。
这个脚本机器人在10分钟时间里完成了70次补刀,但仍落后于优秀的人类选手。
目前最优秀的1v1机器人能达到97次补刀(在此之前塔已经推掉,因此这个数字来自于推测),而理论最高值是101次。
如何解决5v5?
1v1很复杂,但5v5更加复杂。我们知道,我们需要进一步推动AI向前发展,解决5v5的问题。
我们可以从行为复制着手。DotA大约每天有100万盘公开比赛,这些比赛的回放会在Valve的服务器中保存两周。
我们下载了自去年11月份以来所有专家级的回放,积累了包括580万盘比赛在内的数据库(每盘比赛约45分钟,有10名玩家参与)。我们使用OpenDota去分析这些回放,并捐出了1.2万美元(相当于他们10年的筹资目标)去支持这个项目。
当然,在博客的最后,OpenAI再次表达了“我们要招人!”
相关链接
Dendi被虐全程回顾:
对战全程视频!顶级高手苦练DOTA半辈子,就这样被AI击败
同行质疑:
击败DotA2顶级人类玩家,并不是AI的一次突破
博客原文:
https://blog.openai.com/more-on-dota-2/
bot API:
https://developer.valvesoftware.com/wiki/Dota_Bot_Scripting
OpenDotA:
https://www.opendota.com/
— 完 —