转载

OpenAI研究 更多关于 Dota 2

图一

随着时间的推移,我们最好的机器人的TrueSkill 评级(类似于国际象棋中的 ELO 评级),通过模拟机器人之间的游戏并观察获胜率来计算。改进来自系统的每个部分,从添加新功能到算法改进再到扩展。该图是惊人的线性,这意味着该团队随着时间的推移呈指数级地改进了机器人。

该项目的时间表如下。从某种角度来看,15% 的玩家 MMR低于 1.5k ;58%的玩家3k以下;99.99% 低于 7.5k。

  • 3 月 1 日:在简单的 Dota 环境中获得了我们的第一个经典强化学习 结果 ,卓尔游侠在其中学习风筝硬编码的撼地者。
  • 5 月 8 日:1.5k MMR 测试员说他比机器人进步得更快。
  • 六月初:击败 1.5k MMR 测试员
  • 6 月 30 日:赢得与 3k MMR 测试员的大多数比赛
  • 7 月 8 日:勉强赢得  7.5k MMR 半职业测试员的第一场胜利。
  • 8 月 7 日:3-0 击败 Blitz  (6.2k 职业选手),  2-1 击败Pajkatt  (8.5k 职业选手),  3-0击败 CC&C  (8.9k 职业选手)。所有人都认为 Sumail 会找到打败它的方法。
  • 8 月 9 日:10-0 击败 Arteezy(10k 职业选手,顶级选手)。他说 Sumail 可以找出这个机器人。
  • 8 月 10 日:以 6-0 击败 Sumail(8.3k 职业选手,顶级 1v1 选手),谁说这是无与伦比的。玩 8 月 9 日的机器人,他以 2-1 获胜。
  • 8 月 11 日:2-0 击败 Dendi(7.3k 职业选手,前世界冠军,老派人群的最爱)。与 8 月 10 日的机器人相比,机器人的胜率为 60%。
Sumnail 1v1海报

任务

整场比赛是5v5,但1v1也 出现 在一些 比赛中。我们的机器人按照标准锦标赛规则进行比赛——我们没有为 1v1 添加特定于 AI 的简化。

该机器人通过以下接口运行:

  • Observations:  Bot API 特性,被设计为人类可以看到的同一组特性,与英雄、小兵、信使和英雄附近的地形有关。游戏是部分可观察的。
  • 动作: 机器人 API 可访问的动作,选择频率与人类相当,包括移动到某个位置、攻击单位或使用物品。
  • 反馈: 机器人获得获胜奖励和健康和 最后点击等基本指标。

我们将机器人可以使用的几十个项目构建列入白名单,并选择了一个进行评估。我们还使用传统的 RL 技术单独训练了初始 creep 块,因为它发生在对手出现之前。

Arteezy 1v1海报

国际

我们的方法将少量“指导”与自我对弈相结合,使我们能够在国际邀请赛的周一和周四之间大幅改进我们的代理。周一晚上,Pajkatt 使用不寻常的物品构建(购买早期魔杖)获胜。我们将此项目构建添加到训练白名单中。

周三下午 1 点左右,我们测试了最新的机器人。机器人会在第一波中失去大量健康。我们认为也许我们需要回滚,但注意到进一步的游戏玩法是惊人的,第一波行为是诱使其他机器人对其进行攻击。进一步的自我博弈解决了这个问题,因为机器人学会了对抗诱饵策略。与此同时,我们仅在第一波中将其与周一的机器人拼接在一起,并在下午 4 点 Arteezy 出现前 20 分钟完成了该过程。

在 Arteezy 比赛之后,我们更新了 creep block 模型,将 TrueSkill 提高了 1 点。在周四苏梅尔的比赛之前的进一步训练使 TrueSkill 提高了两分。Sumail 指出,该机器人已经学会了在敌人的视野之外施放剃刀。这是由于一个我们不知道的机制:在敌人视野之外施放的技能会阻止敌人获得魔杖充能。

Arteezy 还与我们的 7.5k 半职业测试员进行了一场比赛。Arteezy 赢得了整场比赛,但我们的测试员仍然设法用他从机器人那里学到的策略让他大吃一惊。Arteezy事后表示,这是狗仔队曾经对付过他的策略,并不常见。

帕杰卡特1v1海报

Pajkatt 击败了周一的机器人。请注意,他诱使机器人参与进来,并使用再生(精灵之火和魔杖)来治愈。该机器人通常非常擅长决定谁将赢得一场战斗,但它之前从未与拥有早期魔杖的人交手过。

机器人攻击

尽管 Sumail 称该机器人“无与伦比”,但在与它所见情况截然不同的情况下,它仍然会感到困惑。我们在国际邀请赛的 LAN 赛事中设置了机器人,选手们玩了 1,000 多场比赛以尽一切可能击败机器人。

成功的攻击分为三种原型:

  • Creep pulling:可以反复吸引线上小兵在它们生成时(在机器人的第 2 层和第 3 层塔之间)追赶你。您最终会遇到数十个小兵在地图上追逐您,最终机器人的塔会因消耗而死亡。
  • 毒球 + 风系:这让你在 1 级时比机器人有很大的移动速度优势,并且可以快速获得第一滴血。您需要利用这个领先优势再次杀死机器人。
  • 1 级 raze:这需要很多技巧,但是几个 6-7k MMR 玩家能够在短时间内成功击中 3-5 次 raze 来杀死 1 级的机器人。

为 1v1 修复这些问题类似于修复 Pajkatt 错误。但是对于 5v5,这样的问题根本不是漏洞,我们需要一个系统来处理它从未见过的完全奇怪和古怪的情况。

基础设施

我们还没准备好谈论代理内部——团队专注于首先解决 5v5。

该项目的第一步是弄清楚如何在物理 GPU 上的云中运行 Dota 2。该游戏在 GPU 云实例上给出了一条模糊的错误消息。但是当在 Greg 的个人 GPU 桌面(这是在演出期间带到舞台上的桌面)上启动它时,我们注意到 Dota 在插入显示器时启动,但在拔下时给出相同的错误消息。因此,我们将云 GPU 实例配置为假装连接了物理监视器。

Dota 当时不支持自定义专用服务器,这意味着只有在软件渲染速度非常慢的情况下才能在没有 GPU 的情况下可扩展地运行。然后我们创建了一个 shim 来阻止大多数 OpenGL 调用,除了需要启动的调用。

同时,我们编写了一个脚本化的机器人——我们需要一个基准来进行比较(特别是因为内置机器人在 1v1 上效果不佳)并理解机器人 API 的所有 语义。编写脚本的机器人在空车道上的 10 分钟内达到了 70 次最后一击,但仍然输给了理性的人类。我们目前最好的 1v1 机器人达到了 97(它在那之前摧毁了塔,所以我们只能推断),理论上的最大值是 101。

Sir Action Slacks 1v1 海报

机器人与SirActionSlacks比赛 。用快递来分散机器人注意力的策略没有奏效。

5v5

1v1很复杂,但5v5是复杂的海洋。我们知道我们需要进一步突破 AI 的极限才能解决它。

一个公认的起点是行为克隆。Dota 每天有大约一百万场公开比赛。这些比赛的回放会在 Valve 的服务器上存储两周。自去年 11 月以来,我们一直在下载每场专家级别的重播,并积累了 580 万场比赛的数据集(每场比赛大约 45 分钟,有 10 个人)。我们使用 OpenDota 来发现这些重播,并捐赠 12,000 美元(他们筹款目标的 10 年)来支持该项目。

我们有更多的想法,并且正在 招聘 工程师(必须对机器学习感兴趣,但不必是专家)和研究人员来帮助我们实现这一目标。我们感谢 Microsoft Azure 和 Valve 对这项工作的支持。