问耕 发自 凹非寺
量子位 出品 公众号 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)