Fork me on GitHub

Dota2冠军OG如何被AI碾压?OpenAI累积三年的完整论文终于放出

  问耕 发自 凹非寺
  量子位 出品 公众号 QbitAI

  Team OG,Dota2 世界冠军战队。

  在人工智能 OpenAI Five 面前,OG 不堪一击。五个人类组成的战队,此前全程毫无悬念地以0:2 败下阵来,两局加在一起,OG 只推掉了两座外塔。

  不过,这还不是 AI 的巅峰。

  现在 OpenAI 又训练出了一个全新的 AI,名叫 Rerun。面对碾压 OG 的 OpenAI Five,Rerun 的胜率达到了……呃……98%。

  听到这个消息,一位推特网友发图明志。

  主要依靠自学,就能在 Dota2 这么复杂的游戏中称雄,人工智能是怎么做到的?今天,有关于此的答案揭晓。

  没错,OpenAI 不单发布了 Rerun,还把自己三年多来对于 Dota2 项目的研究,通过一篇论文,正式公布出来。

  在这篇论文中,OpenAI 解释了整套系统的原理、架构、计算量、参数等等诸多方面的内容。OpenAI 指出通过增加 batch size 和总训练时间等方法,扩展了计算规模,进而表明当今的强化学习技术可以在复杂的电子竞技游戏中,达到超越人类的水平。

  这些研究,可以进一步应用于各种两个对手持续的零和博弈中。

  (可能是阅读之后)OG 战队发推:“Wow!这篇论文看起来太棒了!”

  此情此景,有网友无深情的感叹道:Wow!OG 战队夸了一篇论文好看?真是活久见……

  这篇论文到底说了什么?

  我们总结了几个要点。

  要点一:Dota2 比下围棋更复杂

  与棋类对弈相比,电子竞技游戏要更复杂。

  攻克这一难题的关键是,把现有的强化学习系统规模,扩展到前所未有的水平,这耗费了数千块 GPU 和好几个月的时间。OpenAI 为此构建了一个分布式的训练系统。

  训练中的一个挑战是,环境和代码会不断变化。为了在每次更改后无需从头开始,OpenAI 开发了一套工具,可以在不损失性能的情况下恢复训练,这套工具称为:surgery。

  每局 Dota2 比赛时长大约 45 分钟,每秒钟会生成 30 帧的游戏画面。OpenAI Five 每 4 帧做出一个动作。国际象棋一局下约 80 步,围棋下一局约 150 步,作为对比,Dota2 打一局,AI 需要“下”大概 20000 步。

  而且由于战争迷雾的存在,Dota2 中对战的双方,只能看到全盘游戏中的局部情况,其他部分的信息都是隐藏状态。

  与下围棋的 AlphaGo 相比,打 Dota2 的 AI 系统,batch size 要大 50-150 倍,模型大 20 倍,训练时间长 25 倍。

  要点二:AI 如何学会打 Dota2

  人类玩 Dota2 通过键盘鼠标等,实时作出决定。刚才提到,OpenAI Five 每 4 帧做出一个动作,这被称为一个 timestep。每个 timestep 期间,OpenAI 会接收血量、位置等数据。

  同样的信息,人类和 OpenAI Five 接收的方式完全不同。

  人工智能系统发出动作指令时,大概可以想成这个样子。

  AI 背后是一套神经网络。policy (π) 被定义为从观察数据到动作概率分布的函数,这是一个有 1.59 亿个参数的 RNN 神经网络。这个网络主要由一个单层、4096-unit 的 LSTM 构成。

  结构如下图所示:

  LSTM 贡献了这个模型中 84% 的参数。

  选手们的训练,使用的是扩展版的近端策略优化(PPO)方法,这也是 OpenAI 现在默认的强化学习训练方法。这些智能体的目标是最大化未来奖励的指数衰减和。

  在训练策略的过程中,OpenAI Five 没有用到人类游戏数据,而是通过自我博弈。在围棋、象棋等问题上,也应用了类似的方式训练。

  其中,80% 的战斗中对手是使用了最新参数的分身,而 20% 的对手是老参数的分身。每经过 10 次迭代之后,新训练出的分身就被标为老前辈。如果当前正训练的 AI 击败了新秀或者老前辈,系统就会根据学习率更新参数。

  按照 OpenAI CTO 此前的说法,击败 OG 前 OpenAI Five 已经练习了相当于 45000 年 Dota。AI 每天的训练量相当于人类打 180 年游戏。

  要点三:计算量和超参数

  训练这么复杂的 AI 系统,肯定要耗费大量的资源。

  OpenAI 预估了用于优化的 GPU 消耗量,最后的结论,OpenAI Five 的 GPU 计算用量在 770±50~820±50 PFlops/s·days 左右,而今天新提到的、更强的 Rerun,在随后两个月的训练中,GPU 计算量消耗大概是 150 ± 5 PFlops/s·days。

  再说一下,OpenAI 公布的只是用于优化的计算量,只是训练中所有开销的一小部分,大约占 30%。

  此前,OpenAI 也曾透露过 OpenAI Five 的日常训练,需要 256 块 P100 GPU 和 12.8 万个 CPU 核心。

  至于整个神经网络的超参数,在论文中,OpenAI 表示在训练 Rerun 的时候,已经根据经验进一步简化了超参数。最后,他们只更改了四个关键的超参数:

  • Learning Rate
  • Entropy penalty coefficient
  • Team Spirit
  • GAE time horizon

  当然,OpenAI 也表示这些超参数还有进一步的优化空间。

  要点四:并不全是自学

  最后,还有一点需要强调。

  OpenAI 在论文中明确指出,AI 系统在学习 Dota2 的过程中,并非完全依靠强化学习自学,启示也使用了一些人类的知识。这跟后来的 AlphaGo Zero 有所区别。

  有一些游戏机制是脚本编写好的程序。比方,英雄购买装备和学习技能的顺序,信使的控制等等。OpenAI 在论文中表示,使用这些脚本有一些历史原因,也有成本和时间方面的考虑。不过论文也指出,这些最终也可以通过自学完成。

  论文全文

  在这篇名为 Dota 2 with Large Scale Deep Reinforcement Learning 的论文中,OpenAI 公布了更多的详细信息,如果你感兴趣,下面是传送门:

  https://cdn.openai.com/dota-2.pdf

  对战回顾

  最后,我们回顾一下 OpenAI Five 连下两局击败 OG 的比赛全程吧。

  第一局

  AI(天辉):火枪、飞机、冰女、死亡先知、斯温

  人类(夜魇):小牛、巫医、毒龙、隐刺、影魔

  选完阵容,OpenAI Five 认为自己有 67.6% 的胜率。

  刚刚开局,OpenAI Five 拿下一血,而人类军团也很快杀掉了 AI 方的冰女。之后,双方前期在人头数上一直不相上下。AI 一直在经济上保持总体领先,但最富有的英雄,却一直是人类的大哥影魔。

  这也能看出双方策略上的明显区别:OG 是 3 核心 +2 辅助的传统人类打法,而 AI 的 5 个英雄经济分配相对平均,比较“大锅饭”。

  经过几番激烈的推进和团战,游戏进行到 19 分钟左右,AI 对自身胜率的预测已经超过了 90%。自信心爆棚的 AI 一鼓作气攻上了人类的高地。

  OG 紧接着选择了分路推进,几位解说推测,这是为了尽可能分散 AI,防止它们抱团推进,然而并没有奏效太长时间。

  然而,坚持到 38 分钟,人类方的小牛刚刚买活,AI 的最后一波总攻已经推掉了人类的基地。

  OpenAI Five 赢下第一局。现场,也是一片掌声。

  这场比赛中,AI 展现了清奇的思路:出门装就选择两个大药,后续的装备也更倾向于买补给品,而不是提高自身属性。

  另外,我们前边提到的“大锅饭”政策,以及在比赛前期就频繁买活,都和人类职业选手的习惯大不相同。

  第二局

  AI(天辉):冰女、飞机、斯温、巫医、毒龙

  人类(夜魇):火枪、小牛、死亡先知、小鱼人、莱恩

  选完英雄,AI 对自身胜率的预测是 60.8%,略低于上一局的阵容。

  比赛前两分钟,双方都在一片祥和中各自带线,然而没想到,人类中单 Topson 很快就送出了一血。

  之后,人类代表们以惊人的速度溃败。

  5 分钟时,AI 的信心就已经大幅上升,预测自己有 80% 的胜率;7 分钟,AI 推掉了上路一塔;10 分钟,AI 就已经领先人类 4000 金币,多推了两座塔,还为自己预估了 95% 的胜率。

  11 分钟,AI 已经攻上了 OG 的高地。

  仅仅 21 分钟,OG 的基地被推掉,OpenAI Five 轻松拿下第二局。直到比赛结束,OG 拿下人头还是个位数,被 AI 打成了 46:6。

  虽然这一局赢得异常轻松,不过对局过程中还是能看出 AI 在细节上有一些不足。比如说面对在复杂树林中绕来绕去的人类,AI 就无能为力。今天的比赛中,Ceb 就靠绕树林救了自己一命。

  最后,祝大家周末快乐。

来自:
量子位(ID:QbitAI)

作者:Johnson
原创文章,版权所有,转载请保留原文链接。