DOTA2中打败Dendi的AI如何练出?OpenAI公布两周集训细节
大数据文摘作品,编译 | 姜范波、Aileen、宁云州
导读:上个周末的Dota2人机大战引起了很多讨论,( 《Dota2获胜的AI比AlphaGo厉害?还是媒体和马斯克的联合炒作》 )。很多人都期待着打败人类顶级高手Dendi的OpenAI团队可以公布更多技术细节。今天他们终于满足了玩家和研究者的要求,更新博客的同时还公开了AI打败另外几个人类高手的精彩视频。
对于DOTA2人工智能训练的结果表明,如果计算够充分,自我对练可以将机器学习系统的性能从远低于人类的水平推向超越人类。 在一个月的时间里,人工智能系统从几乎不敌高排名选手到击败顶级职业选手,并还在提升中。有监督的深度学习系统最多达到跟训练数据集同等的程度,但在自我对练系统中,随着代理程序越来越好,可用的数据水平自动提升。
TrueSkill评级(类似于国际象棋中的ELO评级)通过模拟机器人之间的比赛和观察胜率的计算,对最好的DOTA机器人进行了长时间的记录。从添加新特征并改进到算法到特征缩放,系统的每个部分都有改进。更令人惊讶的是,提升的图形呈线性,意味着随着时间的推移可以指数级地改善这个系统。
项目的时间表如下:从某种角度看,15%的玩家低于1.5K MMR; 58%的玩家低于3k; 99.99%低于7.5k。
- 3月1日:完成第一个经典强化学习,在一个简单的DOTA环境中,让Drow Ranger(卓尔游侠)可以学习风筝一个硬编码的Earthshaker(撼地神牛)。
- 5月8日:1.5k MMR测试员说他的速度比机器人要快。
- 6月初:击败1.5k MMR测试员。
- 6月30日:与3k MMR测试员的对抗中,赢得大多数比赛。
- 7月8日:几乎赢得所有与7.5K MMR半专业测试员的比赛。
- 8月7日:击败Blitz(6.2k前职业)3-0,Pajkatt(8.5k pro)2-1,CC&C(8.9k pro)3-0。 所有人都说,Sumail总能找到击败他们的方法。
- 8月9日:击败Arteezy(10k pro,顶级选手)10-0。 他说Sumail可以搞定这个机器人。
- 8月10日:击败Sumail(8.3k职业,顶级1对1选手)6-0,他说机器人是“无与伦比”的。而8月9日的比赛,得分为2-1。
- 8月11日:击败Dendi(7.3k职业,前世界冠军,老玩家的最爱)2-0。 与八月十号机器人相比,这个机器人有60%的胜率。
机器人对抗SumaiL.(视频链接: https://youtu.be/IbaHI38Ewws)
任务
完整的比赛是5v5,但一些锦标赛也会出现1v1的情况。 机器人遵守标准的锦标赛规则——并没有将AI特有的简化添加到1对1中。
机器人在如下界面上进行操作:
- 观察:机器人的 API特征,英雄、小兵、信使以及任务附近的地形,被设计为与人类可以看到的相同。 并且机器人的视野也与人类相同。
- 操作:机器人 API可访问的操作,也与人类相似,包括移动到某个位置,攻击某个单位或使用某个道具。
- 反馈:机器人以赢得基本的参数作为奖励,如健康和最后命中。
我们把机器人可以使用的几十个项目列入白名单,并从中选择一个进行评估。 还使用传统的RL技术单独训练初始小兵模块,这个时候我们假设对手还没有出现。
机器人对战Arteezy。(视频链接https://youtu.be/rNSH8CviQQw)
备战国际邀请赛
训练这个机器人的方法,是结合少量的“教练”与自我对练,这样可以大大改善代理在国际邀请赛上星期一和星期四之间的表现。 星期一晚上,Pajkatt通过使用不寻常的出装方式(购买早期魔术棒)获胜。 我们就将这个行为添加到训练的白名单中。
星期三下午1点左右,最新的机器人得到了测试。 机器人在第一波小兵中失去了大量生命值。 我们认为也许需要取消计划,但接下来的游戏让我们改变了这个看法,这个机器人第一波的行为是诱使其他机器人对其进行攻击。 进一步的自我对抗解决了这个问题,因为机器人学会了抵制诱饵策略。 同时,研究者将它与星期一的机器人拼接在一起,仅用于第一波小兵中,并在Arteezy下午四点出现之前的二十分钟完成了这个过程。
在与Arteezy比赛之后,研究人员更新了蠕变块模型,这增加了一个点的TrueSkill评分。 在星期四与Sumail比赛之前的进一步训练中,TrueSkill评分又增加了两个点。 Surmail指出,机器人已经学会了将暴牙扔出敌人的视野。 这是由于我们不知道的策略:这样可以防止敌人获得魔杖。
Arteezy也与7.5k半专业测试员打了一场比赛,在这场比赛中 Arteezy获得了胜利,但是测试人员仍然对他从机器人那里学到的策略感到惊讶。 Arteezy后来表示,这是一个帕帕拉齐曾经用过一次的策略,并不常见。
Pajkatt与星期一的机器人打了一场。 请注意,他诱骗机器人进行与他交战,并使用再生(精灵之火和魔术棒)来治愈。 在一次遭遇战中,机器人通常非常善于决定谁将赢得一场战斗,但是从来没有与在早期就拥有魔杖的人玩过。
(视频链接:https://youtu.be/BBUiwCEmrxU)
机器人的短板
虽然Sumail称机器人是“无与伦比的”,但在一个它从来没有见过的环境下,机器人仍然可能犯晕。 研究人员在国际的网络中中部署了机器人,选手们可以通过任何方法来打败机器人。
成功者可以分为三种类型:
- 拖拉小兵:当小兵的通过二级和三级塔之间时,可以通过反复攻击它们,吸引它们追逐你。 最终会在地图上会有数十个小兵追逐你,而机器人则会因为塔磨损了太多血量而死亡。
- 毒球 风杖:这使得你会拥有一个比1级机器人大得多的移动速度优势,并能通过这个战术获得第一滴血。
- 1级交战:这需要很多技巧,但是几个6-7k的MMR玩家能够在短时间内成功击中机器人3-5下,从而在1级杀死机器人。
解决这些1对1的问题类似于修复Pajkatt漏洞。 但是对于5对5来说,这样的问题根本就不是漏洞,我们需要一个可以处理各种特殊情况的系统。
基础框架
研究团队的重点是首先解决5v5问题。该项目的第一步是弄清楚如何在物理GPU上运行云上的DOTA2。 该游戏在GPU云实例上经常出现错误消息。 但是,当在Greg的个人GPU桌面(就是展示会上的台式机)上启动它时,我们注意到Dota在显示器插入时启动,但在拔下电源时发出了相同的错误消息。 所以研究团队配置了他们的云GPU实例,假装那里连接着一个真的显示器。
DOTA当时不支持自定义专用服务器,这意味着想要可拓展运行又没有GPU的话,只有使用非常慢的软件渲染。 然后,我们创建了一个垫片来存储大多数的OpenGL调用 (除了需要引导的调用)。
同时,我们写了一个脚本机器人 —— 我们需要一个基准来进行比较(特别是因为内置机器人在1v1上不能很好的工作),并且了解了bot API的所有语义(https://developer.valvesoftware.com/wiki/Dota_Bot_Scripting)。 脚本式机器人在空路上达到了十分钟70次补刀的成绩,但这仍然输给了任何一个正常的人类。 当前最好的1v1机器人可以达到十分钟97次补刀,理论上的最大值是101。(视频链接:https://youtu.be/1SjcXSgeOPg)
5v5
1对1已经颇繁杂,而5对5可以说是各种复杂问题的聚合体。为了解决这个问题,我们需要进一步提升AI的极限。
行为克隆可能是一个不错的起点。 DOTA每天有大约一百万场公开赛。 这些比赛的视频被存储在Valve的服务器上两周。 自从去年11月以来,研究人员一直在下载每个专家级别的视频,并且已经收集了5.8M场游戏的数据集(每个游戏与10个人约45分钟)。 他们使用OpenDota来挖掘这些视频,并花费了12,000美元(10年的筹款目标)来支持该项目。
素材来源