文章目录

  • 引子
  • 论文列表
  • 用AI打星际争霸(RTS)
    • 整体结构
    • 训练
    • 模型结构
  • 用AI打dota
    • 整体模型
    • 网络结构
    • 值得一提的Surgery技术
  • 用AI打王者荣耀
    • 模型结构
  • 王者荣耀 1v1
    • 系统框架
    • 模型结构
    • reward设计
  • 王者荣耀 5v5
    • 整体结构
    • 网络模型结构
  • 结束

引子


在围棋和扑克被AI攻克后,MOBA游戏成了新的检测强化学习的试验场。

这里主要选择了几篇经典论文,重点讲讲他们的网络/结构设计。不会设计特别深的技术细节。感兴趣请阅读原论文。

论文列表

  • Grandmaster level in StarCraft II using multi-agent reinforcement
  • learning,nature2019 Dota 2 with Large Scale Deep Reinforcement
  • Learning,2018~2019 Hierarchical Macro Strategy Model for MOBA Gam AI,2018
  • Mastering Complex Control in MOBA Games with Deep Reinforcement Learning,AAAI 2020
  • Towards Playing Full MOBA Games with Deep Reinforcement Learning,NIPS2020

用AI打星际争霸(RTS)

Grandmaster level in StarCraft II using multi-agent reinforcement learning

星际争霸虽然不算MOBA游戏,但还是最先讲它,因为他是最出圈的论文,被刊载在Nature2019的封面上。
创新点主要有:

  • 在RTS游戏上超越人类专家
  • 提供了MOBA类游戏的解决思路
  • 用成绩证明了思路的可行性

整体结构


这是整体的逻辑架构。可以说,这个架构为之后的MOBA AI研究提供了范式。

首先是环境部分直接对游戏进行编码,从中提取出小地图、士兵单位等信息作为状态,将这些状态作为神经网络的输入,输出相应的动作,用动作改变环境,如此循环直到游戏结束。

整个架构现在看来中规中矩。有两点值得一提。一个是在状态编码的时候把各个单位独立区分,而不像Atari游戏那样简单粗暴地直接在像素层面卷积;另一个就是在动作评估的时候依次对what、who、where、when next action进行评估,这一部分我不是很理解为什么,可能研究人员也是经过多次试错总结出来的最优方式吧。之后的研究都采用这种讲各个信息分别独立评估的方式。

训练

网络的训练主要分两步,首先是监督学习进行“打基础”,其次用强化学习“提能力”

监督学习很好理解,就是把人类专家的行为当作是模板,用AI对其动作概率进行预测,用KL散度作为loss,从而使得AI的行动尽可能地接近人类专家行为。

在监督学习取得一定成效后,使用强化学习加强AI的强度。这时的AI对手就是AI自己了,用不断自博弈的方式加强自身。

在强化学习的时候,用到了三个小trick:

  • V-Trace:用于处理off-policy的数据,使得数据的收集和训练更加高效。
  • UPGO(upgoing):在策略迭代的时候,当行为策略采取比平均水平更差的动作时,通过引导,从部分轨迹更新策略,使其回报好于预期
  • TD(λ):减小方差,使得训练收敛更稳定
    具体就不展开了。

模型结构


模型结构从最下方开始看。

左下角是人类玩家打法的特征向量,在训练过程中这个向量始终保持一个定值。加入这个向量的目的是为了防止AI在不断自博弈训练的时候“迷失自我”,确保最后训练出来的策略对人类玩家也是有效的。

右边三个输入分别是 特征、单位、地图,不同的信息用不同的方式进行编码,编码后一起输入上面的LSTM。用LSTM的目的就是为了“记住”过去的信息,这是这种动态序贯博弈中非常常用的方法。

LSTM是整个网络结构的关键,里面不包含人类玩家的特征向量。两者会合后就可以用ValueNet对状态进行Value值估计。另外接上MLP后,网络则是依次考虑 动作类型、动作延迟、动作队列、动作单位、目标单位、动作细节等因素。

有了动作,有了动作价值估计,强化学习的AC方法就可以搞起来了。

用AI打dota

Dota 2 with Large Scale Deep Reinforcement Learning, 2019

这个AI迭代了好几版,网上也有不少相关的PR稿,我这里是以最终2019年论文为准的。

整体模型

整体模型如果抽象出来也是异常简单。

观测到的信息加上编码处理,结合5位英雄的信息处理,一起作为LSTM的输入。LSTM就会输出各个动作以及相对应的价值。

这么说可能比较笼统,来具体看一下LSTM后的细节。

网络结构


左边有三个输入,我们从上往下看。左上角是合法的行动,相当于一个mask。
Unit Embeddings 就是具体单位的信息。
现在可以认为,LSTM中保存了过去的信息、和当前的策略。

对可行的动作ID和LSTM点积,处理后得到选择的动作Chosen Action ID。将选择的动作和单位信息相结合,就得到了目标Target Unit。

此外,利用LSTM和动作参数,经过全连接层也可以评价出各个动作信息的具体值。
也就是第一张图中的Value。

值得一提的Surgery技术

这篇论文很长,也讲了很多技术,但是大多和强化学习在MOBA游戏中的应用没有特别大的关系。其中我觉得最有价值的就是这个Surgery技术,也就是“外科手术”。

这个技术的目的是在网络结构和参数改变的情况下进行Net2Net变换,增加/修改网络结构,同时还保证:

也就是对于任意的观测,新网络会输出和旧网络完全一致的决策。尽管他们网络结构、网络参数不同。

这个技术的目的就是在添加新功能、修改网络结构等情况下,不需要从头开始重新训练。

图中蓝色曲线就是从头到尾的一次训练,每一个黑点就是一次成功的Surgery。右边绿色的曲线就是在所有Suergery结束后,从头开始训练一个网络的训练曲线。

我们发现,Surgery确实没有打断训练的进程。这种技术使得中途改变网络架构成为可能。

用AI打王者荣耀

Hierarchical Macro Strategy Model for MOBA Game AI,2018

这篇文章参考的技术其实是dota2那篇文章的前身。虽然正式发布时间比dota2那篇文章早,但技术上蛮多都是直接借鉴的。

这篇文章主要是解决用AI打MOBA游戏的三个痛点:

  • 仅靠微观的策略很难训练得到好的“大局观”
  • 宏观策略过度依赖手工设计公式
  • 队友之间合作不紧密,没有考虑显示合作

文章的做法就是提出“attention”进行策略的宏观调控。
事先说明一下,这里的attention和深度学习中的注意力机制没有关系。

图中深红色的地方,就是英雄“attention”集中的地方,也就是英雄们要去的地方。可以看到,作为开局分配来说,这个行动方式是合理的。

模型结构


那这种attention是怎么训练出来的呢?用监督学习的方式。

在上面Task1中,使用手工编码的信息,比如大龙、男爵出现的时机,要求他们在对应时间把attention放到“对的位置”上,输出的label就是他们的attention。训练取得成效后,用完全一样的网络结构训练其他时候的attention,以此方式来体现出AI的大局观。

在实际游戏的时候,AI们会互相传递他们的attention,这样他们互相之间都能够知道队友接下来要做什么,就不会出现比如只需要一个人就能完成的任务,结果所有人都去了,导致浪费了发育的时间。
通过交换attention的方式,以此来达到“显式的合作”。

王者荣耀 1v1

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

系统框架


系统框架也没有什么特别的地方,走的也是 环境编码-内存池-RL 的套路。和dota2一样,对单位、小地图等进行独立的编码,输出的也是多头结构——每个头对应一个可行的动作。

模型结构


左半边是编码,右半边是策略和动作。

其中相比dota2,比较新颖的地方就是加入了上面提到的“attention”。虽然这是1v1的情形,但是用attention还是可以作为一个手工训练的引导,让AI尽可能在正确的时间关注正确的位置。

顺带一提,中间的Value也是直接LSTM过一层线性层直接计算得到的。

reward设计

这就是纯手工设计的了。目的是解决奖励函数“过于稀疏”的问题,毕竟20000帧出一个reward是谁都受不了的。

在设计时还要考虑到这些reward是否稀疏。具体的设计原则论文中也没有详细说明,这里贴出来大家品一品。

王者荣耀 5v5

Towards Playing Full MOBA Games with Deep Reinforcement Learning

整体结构

模型训练的时候,采用了三步走战略。个人理解的核心步骤是第二步的策略蒸馏。

第一步,根据固定阵容提取出大量的英雄池,基本属于5v5且五五开的组合。这些专家数据都是从人类高手对局中得到的。用强化学习、监督学习的方式,得到了N个策略作为Teacher策略。存入一个replay buffer中。

第二步,将N个teacher的策略蒸馏出一个student model。这里用的就是模型蒸馏这一块的方法了。最后,成功地将N个老师的策略提取出来,让student model将它们融会贯通。论文中指出,作者们“经验性地发现”,模型大概2天就训好了,而且得到的结果和阵容不太相关。自然而然想到追加第三步。

第三步,英雄池变动。随机选择英雄池,这样一来,AI就可以像人类玩家一样,在不同的英雄配队的情况下愉快地玩耍了。

网络模型结构


这部分主要是 student model的结构,整体框架都是大同小异。这里面也有attention的机制(毕竟是同一帮人搞的)。

我加了两条橙色的线加以划分,三个区域分别是:状态编码、值估计、动作选择。

结束

终于写完了,整体总结花了不少功夫,有什么不足的地方请大家指出。谢谢!

【论文笔记】MOBA类游戏中的强化学习论文5篇相关推荐

  1. 【论文笔记】AAAI2022多智能体强化学习论文五篇

    文章目录 引子 Anytime Multi-Agent Path Finding via Machine Learning-Guided Large Neighborhood Search MAPF- ...

  2. 游戏中应用强化学习技术,目的就是要打败人类玩家?

    来源:AI前线 作者:凌敏 采访嘉宾:黄鸿波 2016 年,DeepMind 公司开发的 AlphaGo 4:1 大胜韩国著名棋手李世石,成为第一个战胜围棋世界冠军的人工智能机器人,一时风头无两.Al ...

  3. Moba类游戏中如何处理网络延迟与卡顿

    <王者荣耀>技术测试版本出台的时候,延迟非常大,而且还是卡顿,现在看一下帧同步里面比较特别的地方.帧同步有点像在看电影,它传统的帧同步需要有buffer,每个玩家输入会转发给所有客户端,互 ...

  4. 谈一款MOBA类游戏《码神联盟》的服务端架构设计与实现 (转载)

    原文链接 一.前言 <码神联盟>是一款为技术人做的开源情怀游戏,每一种编程语言都是一位英雄.客户端和服务端均使用C#开发,客户端使用,数据库使用MySQL.这个MOBA类游戏是笔者在学习时 ...

  5. 谈一款MOBA类游戏的服务端架构设计

    一.前言 <码神联盟>是一款为技术人做的开源情怀游戏,每一种编程语言都是一位英雄.客户端和服务端均使用C#开发,客户端使用Unity3D引擎,数据库使用MySQL.这个MOBA类游戏是笔者 ...

  6. 谈一款MOBA类游戏《码神联盟》的服务端架构设计与实现(更新优化思路)

    一.前言 <码神联盟>是一款为技术人做的开源情怀游戏,每一种编程语言都是一位英雄.客户端和服务端均使用C#开发,客户端使用Unity3D引擎,数据库使用MySQL.这个MOBA类游戏是笔者 ...

  7. 基于Vue+Springboot的MOBA类游戏攻略分享平台【毕业设计,源码,论文】

    摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息.为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,M ...

  8. 基于Springboot+Vue的MOBA类游戏攻略分享平台

    摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息.为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,M ...

  9. 游戏美术干货:各大MOBA类游戏视觉包装设计解析

    MOBA英文全称为Multiplayer Online Battle Arena Games,意为多人联机在线竞技游戏.但是与CS等游戏又明显不同,Moba广泛使用于Dota类游戏,是作为类Dota的 ...

  10. MOBA类游戏解决方案

    一.行业综述 MOBA是英文Multiplayer Online Battle Arena Games的缩写,意为多人联机在线游戏竞技.2003年,暴雪发布发布实时RTS游戏<魔兽争霸>, ...

最新文章

  1. STM32控制OLCD显示中英文(NB-IoT专栏—基础篇6)
  2. 世界机器人领域12个前沿技术趋势
  3. desc 枚举类型id_枚举系列(四):实现接口的枚举类
  4. 【HTML】------HTML的标签
  5. table ADR6 引起的equipment download error
  6. springboot 拦截器的坑 WebMvcConfigurationSupport 失效
  7. threadpoolexecutor参数_ThreadPoolExecutor的使用
  8. 修改WordPress主题,中文显示乱码的解决办法
  9. 视觉slam第一讲——
  10. 机器学习之旅:三分钟读懂最大熵模型
  11. 代码整洁之道读书笔记----第五章---格式--如何让代码整体布局更清晰
  12. 【数据分析自学】二、Excel基础知识
  13. hive sql中常用技巧
  14. win8.1老是断网LOL老是掉线.net错误 问题集(win7适用)
  15. 下月起你的到手工资将有重大变化! 图解2019年个税怎么算
  16. 核心微生物分析_中国白酒发酵过程中的核心微生物群及其与环境因子的关系-微生物学报.PDF...
  17. 老雷:思儿壮志小诗一首(老爸写得都比我好,让我这个文艺青年情何以堪)(家人对幸福美好生活的追求,就是我的奋斗目标)...
  18. 喵喵机和咕咕机哪个好,打印效果大评测!喵喵机p2 VS咕咕机GT1
  19. UVM中的TLM通信
  20. 2017考研计算机真题错题本

热门文章

  1. 和秋叶一起学PPT之线条(课时六)
  2. qt5.14(vc2015 x64位)的安装配置和vc2015上qobjectdefs的c2134和QColor的c2661编译问题解决
  3. Windows7安装VC2015-2019_redist.x64提示“设置失败0xc8000222-未指定的错误”
  4. 从python开始学编程mobi_Python编程快速上手[azw3+epub+mobi][13.99MB]
  5. 远程复制无法读取源文件或磁盘
  6. 前端引入阿里图标库的最便捷方式
  7. 快启动win10pe制作详细图文教程
  8. matlab数学建模试卷,matlab数学建模习题
  9. windows - cmd常用操作命令 (dos窗口)
  10. 计算机英语听力速记...,2018计算机考研英语听力速记技巧才是王道