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就靠绕树林救了自己一命。
最后,祝大家周末快乐。
— 完 —