Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)

本文由腾讯AI Lab跟天美发表,用于王者荣耀1v1的AI训练,达成99.81%的胜率。文章分了几个部分进行讲解。

大系统

整个框架分为四个模块:RL Learner,AI Server,Dispatch module与Memory Pool,如下图:

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)

AI Server:此模块用当前的agent与游戏环境进行交互来收集数据,一个AI Server绑定一个cpu,agent会copy到cpu中,为了加快模型的运算,模型会被转为FeatherCNN的模型(https://github.com/Tencent/FeatherCNN)。

Dispatch Module:此模块在一台机器上绑定多个AI Server,并行地去收集数据,来加快数据收集的速度。收集的数据会进行打包与压缩,然后送到Memory Pool中保存。Memory Pool也是个服务器,可以高效存取数据。

RL Learner:是一个分布式的模型训练环境,用来加速agent的训练跟更新。Memory Pool的数据会分发到多个RL Learner到,每个RL Learner会计算梯度,最后在reduce起来更新agent。

上面整个系统为了方便后续专注地进行算法研发,可以把关注点只放到RL Learner上。

 算法设计

模型依旧是actor-critic类型,如下图。

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)

    从左往右看,首先Encode部分,最上分支用来encode图像信息,利用conv将fi转到特征hi。中间分支,fu是各种unit输入,每种信息通过mlp来encode成hu特征。最下分支fg是可观测的游戏状态信息,通过fc编码成hg特征。

    hu特征分为两个分支,一个通过max pooling后结合成unit的总特征,另一个分支用来做后续的target attention。总的unit特征结合hi、hg特征,经过fc-relu后输入LSTM模块,LSTM用来捕获动作的连续性,输出为h_lstm。h_lstm一个分支输出critic的value。另一个分支经过fc后输出多分类的特征概率。其中action的部分,有一个是target unit,用来预测攻击的目标,这部分结合hu的另一个分支,lstm后的fc输出作为一个query,hu结合起来作为h_keys,计算target的attention公式为:

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)

    另外,上面的动作预测是独立的,也就是多分类的方式输出。因为比较难去显示地模拟动作间的相关性,所以独立预测。独立预测可以去掉动作间的相关性,单分类预测的PPO目标函数为(无clip情况):

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)

现在多分类需要改成如下形式:

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)

    因为每个动作都会输出概率并且独立,所以需要将所有动作的概率再求个和。a = (a^0, ..., a^Na-1)。解耦动作的好处有两个,一是policy的结构可以很简单,动作间的相关性可以通过后处理来执行。二是增加了动作的多样性,在与环境互动时可以提高探索的多样性。另外,为了增加探索的多样性,作者通过在游戏开始时随机化两个agent的位置。

    然而动作的多分类也带来了训练的复杂性变高,相当于动作空间变高了,为解决这个问题,增加了action mask,action mask由人类玩家的先验及游戏的动作限制所决定。例如,角色要撞墙了就不要往撞墙的方向走,走不通;技能冷冻时不能放此技能;或者被对方控制时的动作限制等等。action mask可以降低训练的难度。

    Dual-clip PPO,PPO的原始公式:

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)

其在A<0时的目标函数曲线为下左图:

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)

可以看到对右边的大小是没有限制的,假如Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记),L会非常小(负得很大),更新时就会使得policy变化很大。尤其是trajectory从多个源获取的情况。因此本文增加了个限制如右图,公式为: 

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)

A为负时,clip掉ratio很大的数据,使得这部分数据不会提供梯度,policy的更新就不会与之前差别太大。 

实验部分

    配置:总60万cpu,1064个GPU,数据用float16存储,训练时转成float32。minibatch为4096。每个epoisode从游戏开始到结束。每天的数据量相当于人类玩500年的数据。ppo的eps=0.2,c=3,折扣因子是0.997,half-life大概46秒。GAE的lambda=0.97。游戏时按*玩家的133ms反应时间进行预测。训练时间跟Elo的曲线如下:

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)

    训练6小时打败内置行为树,30小时达到top 1%人类水平,70小时达到专业水平。

    控制变量的实验表格如下,其中AM是action mask、TA是target attention,可以看出action mask可以大幅降低训练时间,TA跟LSTM可以提高AI水平。

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)

    除此之外还有rollout的实验,full rollout(FR)跟 partial rollout(PR),FR相比PR可以提高很多AI能力,FR可以提高到70%~80%。环境初始化方向的实验有random initial frame(RIF)和zero-start(ZS),RIF可以加快收敛,大概15%,但AI能力比ZS低一些。 

比赛信息:

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)

 Reward 设计,reward是zero-sum的,己方mean reward减去对方的。

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning(论文笔记)