绝悟为什么

绝悟为什么

相信大家这几年或多或少都听过深度学习这个概念。绝悟AI正是深度学习的产物,更确切说绝悟AI的核心是深度强化学习(Deep Reinforcement Learning)。本人粗略原由网阅读腾讯AI lab 叶德珩博士一作的论文<Mastering Complex Control in MOBA Games with Deep Reinforcement Learning>[1](链接在文末参考文献中),此文发表的人工智能的顶会2020 AAAI上面(虽然这个会议的水平个人感觉最近有些下降)。下面本人结合论文和一些资料,对绝悟的内部原理细节做进行阐述。

首先是背景,相信大家应该都听过围棋AI-AlphaGo。之前的阿尔法狗一战成名让强化学习名声大噪。之后便有各种游戏AI,例如DeepMind的星际争霸的AI与OpenAI的Dota2的AI,这两个比较早,因该是两三年之前。之前便取得不错的成绩,因为本人是刀塔玩家,所以当时TI比赛期间见过AI 5v5 明星挑战赛。下面将绝悟与go做个jzJcFyPvzx对比:

绝悟为什么

上面主要介绍绝悟AI在1v1的环境下,相比于Go的计算复杂度上面,以Action space(直译动作空间)为例王者荣耀的每一帧的操作可以分解为100+个离散的动作(比如位移,点击技能,点击攻击按键等原由网),这里的9000帧每局游戏应该是考虑到人类的反应时间而设置的帧数。所以我们可以看到,原由网游戏AI的复杂度是很高的。

下面还需要提出两个概念,智能体(agent)和游戏单元(原由网game unit),智能体可以简单理解为英雄,游戏单元包括小兵,野怪,防御塔之类。由于1v1难以获取高效的数据(叶博士说1v1练英雄比较多),所以采用无监督学习的方式,采用自对弈的方式(即我训练我自己)。下面正式进入绝悟的细节:首先是系统架构方面,也是就是绝悟AI的整体到底是个什么东东。

绝悟为什么

首先要说明的是,上述各个模块是独立的,下面我将逐一介绍。

1)AI server with Game Env部分:这就是AI打AI(我打我自己)的地方,并且与游戏环境做交互,这里设计到游戏的内核部分。

2)Dispatch部分:这个部分主要就是收集游戏数据,传输给下一个部分

3)Memory Pool部分:其中进行存储前一部分传输过来的数据,并且对数据进行处理,以方便喂给我们的学习器。

4)RL learner部分:顾名思义,就是训练强化学习的模型的地方,并且将输出的数据再传输给我们的第1)部分(这里的输出简单理解应该就是我们英雄所执行的各种动作),这样AI就可以与AI博弈。(腾讯果然财大气粗,这里光显卡用了1000+,应该是英伟达专业级的神经网络显卡)

看完上述的描述,大家应该发现,RL learner才是AI的核心,没错下面我将详细介绍RL learner部分,照例我们先看框图:

绝悟为什么

看不懂没关系,因为这个东西确实不是专业的确实很难看懂,我会尽量用浅显的语言对其进行解读。因为内部机制过于复杂,我会尽量用浅显的语言进行描述。下面从左往右进行分析:

2)第二部分就是核心部分了,(这部分不想看可以跳过去)。这部分包括LSTM(长短时记忆网络)和Attention(注意力)机制,将之前的一大串输出输入到这个LSTM网络当中,经过FC变换之后,得到初步的输出。Attention部分用了RL探索的剪枝(y1s1,我不是搞强化学习的,这个地方我也不是很懂),反正作用就是,我面前很多东西,比如野怪,小兵,它,敌方英雄,我该干谁呢,就由这个决定就完事了。具体的细节有能力有兴趣的坛友可以去看论文。

3)第三部分模型的输出部分,当然这个部分呢,还是需要再上一步做些调整和变化的。细心的朋友已经发现了,上面这几个输出不是独立的,具体什么意思呢。

绝悟为什么

这里列举了最简单的移动按钮为例(就是移动轮盘)。首先是button按钮,其次的四个是我该怎么拖动这个按钮(就是我拖动技能,方向和距离),这个大家都很熟悉,一定能秒懂我什么意思。最后一个是Target部分,就是目标,就是我该瞄准谁呢?小兵、塔、敌方英雄等。技能按钮以此类推。

(论文中提到,虽然这些输出有依赖,但是通过一些手段,可以使其独立,就是这几个没什么关系。这里面就是这篇文章比较有新意的地方,叫Dual-clip PPO,反正这些东西不影响我们对AI的理解)

以上就是系统框架内容,通过不断的训练优化这个模型(这里涉及到网络的训练问题,很复杂,还要看工程师的“炼丹”能力如何),AI英雄会越来强,没错就是越来越强,不要问为什么(深度学习的可解释性是个很大的难题),事实摆在眼前。上面内容是不是有点复杂,确实我也这么觉得,如果你都看懂了,说明你很有“炼丹“的天赋(手动狗头)。

下面我们说点轻松的:为了测试AI的性能,AI团队还邀请了几位职业选手进行1v1对抗,以下是论文截图,结果表明,AI可以达到职业水准(没错,就是这么牛x)。

绝悟为什么

这里还有一个细节,AI的反应时间是133ms,论文中说133ms是顶级业余选手的反应时间,所以被绝悟揍是很正常的。下面是职业怎么挨打的数据,大家看看就好。

绝悟为什么

然后AI又去找路人玩家PK,数据如下

绝悟为什么

可以发现,大部分都是绝悟赢,输的几场,用官方的解释来说呢,可能是因为HanXin(二一横扫),SunWukong(吉吉国王),HouYi(真正的射手)比较依赖暴击,由于暴击是一个不确定因素,所以对于AI来说有些影响。

再来个泥潭之前的日常话题ELO:

绝悟为什么

这是论文里,训练狄仁杰的效果图,我们看见官方内部给出的玩家水平评价指标就是ELO。模型训练大约7小时,已经可以干掉游戏自带的AI了,12小时达到星耀水平,30小时达到王者水平,60小时达到荣耀王者水平,70小时已经接近职业水平(为了防止杠精,怎么职业和荣耀差不多,我不做解释,这是论文给出的数据)。

最后我给出一个论文中另外一个有意思的点,也可能是整篇文章对于我们最有帮助的部分。

绝悟为什么

这是AI的奖励机制,从上到下依次是,英雄生命、塔生命(这里应该是敌方的塔)、钱、蓝量、死亡次数、击杀数、经验与补刀。旁边的数字代表这些行为的权重,也就是权重越高,AI对这些东西越重视(推塔游戏名不虚传,游戏AI教我玩游戏系列)。

内容版权声明:除非注明原创否则皆为转载,再次转载请注明出处。

文章标题: 绝悟为什么

文章地址: www.58yuanyou.com/baike/37480.html

相关推荐