使用强化深度学习玩MOBA游戏-下-滕达博士

2021-04-16

多人在线竞技游戏( Multi-player Online Battle Aren,MOBA),是一个控制操作非常复杂的强化学习问题。在MOBA游戏1 v 1场景下涉及的状态和动作空间,要远比传统的1 v 1游戏,例如棋类游戏,复杂的多。所以,这也导致在这个问题中很难搜索到达到人类水平的控制策略。本文将介绍MOBA游戏的一些背景知识,从计算复杂度、系统设计、算法设计、训练方法、评价标准和优化方法上比较OpenAI和腾讯AI实验室在制作DotA2和王者荣耀人机AI中的异同点。

7. 训练过程比较

7.1 Dota2训练过程

 image.png

图7.1 OpenAI Five的训练系统架构

7.1.1 系统架构

训练系统的四个主要组成部分:

(1)rollout worker: CPU集群,Dota 2的游戏运行环境,接收动作指令,返回新的游戏状态;

(2)Forward Pass GPU:GPU集群,用来做当前模型的inference,从controller获得最新版本的模型参数,从rollout worker这里获得环境状态,进行inference后将获得的action返回给rollout worker;

(3)Optimizer: GPU集群,用来进行模型的训练,从rollout worker收集训练样本,存在experience buffers中,按batch进行训练;

(4)controller:redis集群,用于存储模型参数和系统的中间数据;

在rollout worker上,Dota 2的客户端有一个Lua的接口,用于编写机器人脚本,这里被改造成为从游戏内获取状态和输入动作的接口,同时,通过在游戏中集成一个gRPC server的形式,实现远程调用的功能,这样就可以以docker容器的形式将dota 2的客户端运行在大量的CPU集群上,方便部署和调试。

7.1.2 迁移学习与“手术”机制

在整个训练的进行过程中,游戏环境是一直在变化的:

随着对游戏和AI设计的理解加深,模型的细节,如MDP设计、网络结构等,是会持续变化的;系统所处理的问题和机制是逐渐扩展的,这是按照建设一个复杂系统的必然路径,从易到难;Valve会逐步更新Dota 2的客户端,发布新版本,在游戏机制、平衡性上会有改变;

由于以上这些原因,游戏的环境是不停的在变化的,按照惯常的思路,在环境变化后最为安全的做法是从零开始重新训练,虽然前后两个版本的模型大部分应该差别不大,但是对于一个参数量超过1亿的黑盒模型来说,没有办法逐个逐个的进行参数的修正来充分利用旧版本的模型。但是对于Dota 2的AI这种级别的问题,每次模型的训练的成本是非常高的,每次环境变化后都从头开始重新训练的代价是没有办法接受的。

在OpenAI Five中,引入了一个被称为“Surgery”的机制,是一套可以将旧模型经过操作之后变成适应新环境的工具,使得环境更新后模型的能力并没有下降,并可以继续进行训练。


7.2 王者荣耀5v5训练过程

7.2.1 数据准备

为了训练模型,绝悟5v5团队收集了大约30万个由王者荣耀职业联赛比赛和训练记录组成的游戏回放。 最后,2.5亿个实例用于训练。 同时考虑视觉和属性功能。 在视觉方面,提取85个特征,例如所有英雄的位置和生命点,然后将视觉特征模糊为12 * 12分辨率。 在属性方面,提取了181个特征,如英雄的角色,游戏的时间段,英雄ID,英雄的黄金和等级状态以及击杀 - 死亡 – 助攻统计。

7.2.2 建模

使用卷积和完全连接层的混合来分别从视觉和属性特征中获取输入。 在卷积方面,设置了五个共享卷积层,每个层有512个通道,padding = 1和一个RELU。每个任务都有两个卷积层,配置完全相同。使用卷积和完全连接层的混合来分别从视觉和属性特征中获取输入。 在卷积方面,设置了五个共享卷积层,每个层有512个通道,padding = 1和一个RELU。 每个任务都有两个卷积层,与共享层完全相同。 在完全连接的层侧,设置了两个共享的全连接层,其中包含512个节点。 每个任务都有两个完全连接的层,其配置与共享层完全相同。 然后,使用一个级联层和两个完全连接的层来融合卷积层和完全连接层的结果。 使用ADAM作为优化器,基本学习率为10e-6。 批量大小设置为128.阶段和注意力任务的损失权重设置为1.使用CAFFE(Jia et al.2014)和8个GPU卡。 训练HMS模型的持续时间约为12小时。

7.2.3 对抗人类玩家

为了更准确地评估绝悟的AI表现,绝悟5v5团队在AI和人类玩家之间进行匹配。邀请了250个人类玩家团队,他们的平均排名是王者等级(前1%的人类玩家)。 遵循王者荣耀排名赛的标准程序,比赛遵守禁用规则,在每场比赛前挑选和禁用英雄。 禁用选择模块是使用简单的规则实现的。最终绝悟AI在250场比赛中获得了48%的胜率。 统计数据显示,AI团队在团队战斗方面没有人类优势。 AI所造成的杀戮次数比人类团队少约15%。 AI和人类之间的其他项目如炮塔破坏,参与率和每分钟金币相似。经过进一步观察,AI在前10分钟内平均摧毁了2.5个以上的炮塔。 10分钟后,由于与人类队伍相比较弱的团战能力,炮塔差异缩小。 可以说,人工智能的宏观策略运作能力接近或高于人类对手。


7.3 王者荣耀1v1训练过程

绝悟1v1团队的框架运行在封装在Dockers和1,064个Nvidia GPU(Tesla P40和V100的混合物)中的总共600,000个CPU内核上。框架的数量允许并行测试。有1600个矢量特征,其中包含可观察到的单位属性和游戏信息,以及从游戏核心读取的2个图像特征通道(障碍通道和英雄位置通道)。主要使用向量来表示观测值,因为它们是轻量级的。采用FP16进行数据传输以节省带宽,并恢复为FP32进行培训。要训练一名英雄,需要使用48个P40 GPU卡和18,000个CPU内核。每个GPU卡的最小批量大小为4096。LSTM的时间步长和单位大小分别为16和1024。训练速度约为每GPU卡每秒80000个样本。直接使用《王者荣耀》的游戏核心来执行游戏。凭借框架的高吞吐量,在“王者荣耀”的1v1模式下每天收集的每位英雄的经验是大约500年的人类数据。


8测试结果

8.1 Dota2 5V5测试结果

在经过10个月的训练之后,OpenAI Five击败了Dota 2世界冠军OG,并在线上开放体验环节击败了99.4%的人类对手,与专业玩家得对弈如表8.1所示。

 image.png

表8.1 与专业人类玩家对弈结果

在计算规模上,整个计算量达到了770 PFlops/s•days,而在各个模块的资源和计算量上,几个关键数据是:

Rollout workers,51200 CPU核上57600个worker,每个worker每分钟产出256个tilmestep;Optimizer,512 GPU,每约2秒一个optimizer step,每个GPU处理1920个timestep,每32个optimizer step更新一次模型参数;Forward Pass GPU, 512 GPU,每0.25秒每个rollout worker做1次预测;在optimizer的训练过程中,有效的batch size达到1-3百万,最终版本模型总参数量达到1.5亿,有效训练时间在180天。

8.2 王者荣耀5V5测试结果

250场比赛是针对人类队的,而40场比赛分别是针对无宏策略,无交流和无阶段层比赛。

 image.png

表8.2 王者荣耀5V5匹配统计信息

8.3 王者荣耀1V1测试结果

从表8.3和8.4中可以看出,分别用貂蝉、狄仁杰、露娜、韩信、花木兰几个不同类型的英雄对比了AI和职业选手,以及顶级玩家对局的结果,发现从各项指标方面AI都占据绝对的优势,多次比赛之后AI的胜率高达99.81%。

 image.png

表8.3 绝悟AI与人类职业玩家1v1对局结果

 image.png

表8.4 绝悟AI与人类顶级玩家1v1对局结果


9 总结

本文首先描述了MOBA游戏的基本基本知识,然后比较MOBA领域中Dota2和王者荣耀中深度强化学习的应用成果中异同点,总结如下:OpenAI Five的工作针对Dota2基于相关领域近年来的许多成果,如强化学习算法,大规模深度学习计算框架和博弈论等。以往DRL方法在棋类、牌类和视频游戏上的成果也提供了非常多有价值的先验知识,才使得大规模应用深度强化学习解决Dota 2这样复杂的多智能体长序列决策问题成为可能,从一套高性能的训练系统是所有相关研究的基础,而且虽然整个工作并没有在理论上的创新,工程上的许多工作和tricks,才是解决最后问题的关键。在Dota 2的相关研究中,还有许多值得仔细研究和展开的点,也会成为以后类似问题研究的基础。

在王者荣耀5V5中,腾讯团队提出了一种新的分层宏观策略模型,该模型模拟了MOBA游戏的宏观策略操作。 HMS明确地模拟了虚拟玩家agents商对游戏地图的关注,并考虑了游戏阶段建模。在AI与顶级1%人类玩家团队之间进行了比赛,AI实现了48%的胜率。

在王者荣耀1V1中,腾讯团队提出了一个深度强化学习框架,从系统和算法的角度来解决这个问题。提出的算法包括几种新颖的策略,包括control dependency decoupling,action mask,target action和dual-clip PPO,借助这些策略,可以在系统中有效地训练提出的actor-critic网络。经过MOBA游戏《王者荣耀》的测试,训练有素的AI agent可以在完整的1v1游戏中击败顶尖的职业人类玩家,胜率高达98%以上。