我们的机器人 的游戏
结果表明,如果有适当的计算能力,与自己一起玩[self-play]可以严重提高机器学习系统的质量,并将其从远低于人的水平提高到超人的水平。 在一个月之内,我们的系统就从一个与优秀球员不相称的状态发展成为一个击败最佳专业人才的状态,并且此后一直在不断完善。 有监督的深度学习系统的质量取决于训练数据集,但是对于自己玩耍的系统,可用数据集会自动得到改善。
我们的机器人的TrueSkill等级(类似于国际象棋的Elo等级 )随时间的变化,该变化是通过模拟机器人之间的游戏来计算的。该项目的发展如下。 15%的玩家评分低于
MMR评分标准的1.5K; 58%的玩家将其设置为3K以下; 99.99%的玩家的资产少于7.5K。
•5月1日:第一次
强化训练在一个简单的Dota环境中进行,卓尔游侠学会了如何与硬编码的撼地者进行战斗。
•5月8日:
MMR为1.5K的测试人员说,他的测试结果比自动程序要快。
•6月初:MMR 1,5K的节拍测试仪
•6月30日:我使用MMR 3000测试仪赢得了大部分比赛。
•7月8日:我第一次以微弱的优势
击败了半专业测试人员,其MMR为7.5K。
•8月7日:
闪电战 (6.2K,前专业)赢得3-0,
帕杰卡特 (8.5K,专业)2-1,
CC&C (8.9K,专业)3-0。 他们都同意SumaiL会弄清楚如何击败他。
•8月9日:Arteezy以10-0击败了(10K,职业,最好的球员之一)。 他说SumaiL将能够处理该机器人。
•8月10日:SumaiL 6-0胜出(8.3K,职业,最佳一对一球员)。 玩家说该机器人不能被击败。 他在8月9日以2-1赢得了机器人版本。
•8月11日:Dendi 2-0击败了(7.3K,职业选手,前世界冠军)。 比8月10日的版本获胜多60%。
与SumaiL的比赛挑战赛
在完整版游戏中,玩家玩5比5,但在
某些锦标赛
中也玩1比1,我们的机器人按照标准的比赛规则玩-我们没有为AI添加特殊的简化。
该机器人具有以下接口:
•观察:关于英雄,游戏中的其他角色以及英雄旁边的表面的API,旨在与实时播放器具有相同的功能。 游戏是部分可观察的。
•动作:可通过API进行访问,其频率与人类相当,包括移动到特定位置,攻击和使用物体。
•反馈:机器人会获得胜利的奖励,以及简单的参数,例如health和
lastits 。
我们选择了数十种可用于该漫游器的项目,并选择其中一项进行研究。 我们还使用传统的强化训练技术分别训练了阻挡小兵,因为这是在对手出现之前发生的。
Bot与Arteezy对抗国际比赛
我们的方法将游戏与我们自己结合在一起并从外部学习,这使我们能够在比赛进行期间从星期一到星期四极大地增强我们机器人的游戏。 星期一晚上,Pajkatt使用了一件不寻常的物品而获胜。 我们已将该程序集添加到可用项目列表中。
在星期三下午1点左右,我们测试了该机器人的最新版本。 该机器人在第一波攻击后失去了很多健康。 我们决定需要回滚,但随后我们注意到随后的游戏非常出色,并且第一波的行为只是其他机器人的诱饵。 当机器人学会了用诱饵抵抗策略时,他自己进行的后续游戏解决了这个问题。 我们只在第一波中将其与Monday bot结合使用,并在Arteezy出现前仅20分钟就完成了。
与Arteezy比赛后,我们更新了蠕变阻挡模型,使TrueSkill增加了一个。 在周四与SumaiL比赛之前的后续训练中,TrueSkill增加了2分。 SumaiL指出,该机器人学会了在敌人视野之外投掷破坏性咒语。 这是由于我们不知道的机制而发生的:在敌人视野之外投掷敌人并不允许他冲锋。
Arteezy与我们的7.5K测试仪进行了比赛。 Arteezy赢得了比赛,但是我们的测试人员在机器人窥探到的策略的帮助下设法使他感到惊讶。 后来,阿提兹(Arteezy)注意到帕帕拉兹曾经对他使用这种策略,因此他们很少采取这种策略。
Paykatt赢得了星期一的机器人。 他诱使机器人,然后使用再生。僵尸程序漏洞
尽管SumaiL称该机器人为“无敌”,但在与实际情况截然不同的情况下,它仍然可能会感到困惑。 我们在锦标赛的其中一项赛事中推出了该游戏,玩家玩了1000多个游戏,以各种可能的方式击败该机器人。
成功的漏洞分为三类:
•拖拉小兵。 出现后,您可以不断从行中追赶小兵。 结果,数十个小兵将在您横穿地图后奔跑,而敌方小兵将摧毁机器人塔。
•毒液球+防风花边:在第一级机器人的移动速度上具有优势,可让您快速造成伤害。
•在第一级上发动狂飙:这需要技能,但是6-7K级的一些玩家能够在第一级上杀死机器人,并在短时间内成功完成了3-5个法术。
解决一对一比赛的问题类似于修复Pajkatt的错误。 但是对于5v5比赛,这些问题不是漏洞,我们将需要一个能够应对以前从未见过的奇怪情况的系统。
基础设施
我们尚未准备好讨论机器人的内部功能-团队正在研究5对5游戏的问题解决方案。
该项目的第一步是了解如何在物理GPU上的云中运行Dota 2。 在这种情况下,游戏会产生无法理解的错误。 但是,当在Greg桌面上的GPU上启动时(在演示过程中该桌面被带到了舞台上),我们注意到Dota在连接了显示器的情况下启动,并且在没有显示器的情况下显示了相同的消息。 因此,我们将虚拟机配置为假装好像物理监视器已连接到虚拟机。
当时,Dota不支持专用服务器,也就是说,只有在软件渲染速度非常慢的版本中,才可以按比例启动且没有GPU。 然后,我们为大多数OpenGL调用创建了一个存根,除了需要加载的那些。
同时,我们用脚本编写了机器人程序,以作为比较的参考(特别是因为内置的机器人程序无法在“一对一”模式下正常工作)并理解了
机器人程序API的语义。 脚本机器人在空旷的路径上在10分钟内达到了70个最后击中,但仍然输给了玩得足够好的人。 我们最好的机器人以1对1的比例达到约97的水平(它较早地摧毁了塔,因此我们只能推断),理论上的最大值为101。
该机器人与SirActionSlacks对抗。 机器人转移策略不适用于众多快递员五到五
1对1的比赛是一项艰巨的任务,而5对5的比赛则充满了复杂性。 我们将需要扩展AI的功能,使其能够对其进行处理。
通常,我们从复制行为开始。 Dota每天举办约一百万场公共游戏。 比赛记录在Valve服务器上存储两周。 自去年11月以来,我们以专家级别下载了每个游戏条目,并收集了580万个游戏的数据集(每个游戏10分钟有45分钟的比赛时间)。 我们使用
OpenDota来搜索记录,并向他们转移了12,000美元(比他们希望在一年内收取的金额多10倍)来支持该项目。
我们仍然有很多想法,我们
聘请程序员(对机器学习感兴趣,但不一定是专家)和研究人员来帮助我们。 我们感谢Microsoft Azure和Valve在我们的工作中提供的支持。