• 论文题目: Mastering Complex Controlin MOBA Games with DeepReinforcement Learning

主要贡献

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

系统架构

考虑到复杂的Agent控制问题可能会引入随机梯度的高方差问题,在王者荣耀1V1中,大的batch size可以加速训练,所以文章所采用的强化学习架构由四部分构成:

  • RL Learner:是一个分布式训练环境,并行从pool采样得到梯度,同步全部梯度取均值,更新策略后将策略传给AI Server。

  • AI Server:涵盖了游戏环境和AI之间的交互逻辑,用来产生数据。即从游戏中收集state,预测英雄行为。在使用中,一台AI服务器绑定一个cpu内核。我们构建了快速推断库FeatherCNN,以来更有效的生成推断模型。开源地址:https://github.com/Tencent/FeatherCNN

  • Dispatch Module:从多个AI server搜集数据并压缩、打包奥、传送到Memory

  • Memory Pool:也是服务器。它的内部实现为内存高效的循环队列,用于数据存储。它支持各种长度的样本以及基于生成时间的数据样本

算法设计

Reinforcement Learning用的还是熟悉的actor-critic网络,具体如下图所示:

  • 状态设计:如上图;将图像特征fi,向量特征fu和游戏状态信息fg(可观察到的游戏状态)分别通过卷积层、最大池化层和全连接层编码。LSTM输出动作按钮和移动方向。
  • 动作解耦:认为动作之间独立,目标为最终几个策略累积奖励之和;
  • 初始随机动作产生数据;
  • action mask:根据专家经验去掉明显不合理、受限制的动作;
  • dual-PPO:原始PPO在Advantage小于0的时候也容易产生大的策略梯度,作者改进了PPO,使其支持大范围的数据训练。

dual-PPO公式:

实验部分

实验运用了大量的CPU和GPU资源。框架运行在封装在Dockers和1,064个Nvidia GPU(Tesla P40和V100的混合物)中的总共600,000个CPU内核上。我们框架的数量允许并行实验。数据用float16存储,训练时转成float32。minibatch为4096。每个epoisode从游戏开始到结束。每天的数据量相当于人类玩500年的数据。PPO的eps=0.2,c=3,折扣因子是0.997,half-life大概46秒。GAE的lambda=0.97。游戏时按顶级玩家的133ms反应时间进行预测。训练时间跟Elo的曲线如下:

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

我们训练的AI强化学习跟人类顶级玩家进行1v1的竞赛



Reward设计

【AAAI2020】强化学习玩王者荣耀相关推荐

  1. java游戏为什么_手机Java游戏老玩家:为什么我开始了玩王者荣耀?

    原标题:手机Java游戏老玩家:为什么我开始了玩王者荣耀? 王者看阿泽,荣耀来开黑!大家好,我是助手君阿泽~! 一位手机Java游戏老玩家:为什么,我开始了玩王者荣耀? 其实,大部分的手游,我是不喜欢 ...

  2. 轩辕剑java版怎么玩_手机Java游戏老玩家:为什么我开始了玩王者荣耀?

    王者看阿泽,荣耀来开黑!大家好,我是助手君阿泽~! 一位手机Java游戏老玩家:为什么,我开始了玩王者荣耀? 其实,大部分的手游,我是不喜欢玩的,尤其是近几年的,比如<阴阳师>,<梦 ...

  3. 这个太酷了 | python实现AI玩王者荣耀

    简介 基于pytorch框架用resnet101加GPT搭建AI玩王者荣耀,1.4k star.作者使用后裔100多局对战数据进行训练,训练的模型可以直接拿来用,也可以自己操作产生训练数据来训练自己的 ...

  4. 荣耀v10玩flash游戏_沫子玩王者荣耀被打哭?直言这个游戏比吃鸡还难玩

    对于经常玩<绝地求生>的小伙伴,说起吃鸡一姐沫子相信不少人都会有所耳闻,职业选手出身的沫子,操作在很多技术主播中都是相当排前的,再加上有一颗大大咧咧的心脏,直播间内也是不缺乏欢声笑语.然而 ...

  5. 华为android9王者荣耀卡,华为mate9玩王者荣耀怎么样 mate9玩王者荣耀卡吗

    华为mate9玩王者荣耀怎么样?mate9玩王者荣耀卡吗?mate9是基于安卓7.0再开发的手机系统,很多小伙伴似乎不知道华为mate9玩王者荣耀断触怎么办,小编今天就带来了华为mate9玩王者荣耀优 ...

  6. 用自己训练的AI玩王者荣耀是什么体验?

    一.前言 大家好,我是 Jack . 「王者荣耀」想必大家就算没有玩过,也都听过. 腾讯 AI Lab 开发的策略协作型"绝悟",最强 AI 分分教你做人. 但那个是像 Alpha ...

  7. 王者荣耀服务器维护中可是别人能玩,王者荣耀:当别人玩你的号,最怕别人动你账号里哪些东西?...

    原标题:王者荣耀:当别人玩你的号,最怕别人动你账号里哪些东西? 当我们玩王者荣耀上分上不去的时候,有的玩家会把号给朋友或者别的好友帮忙上分.如果是认识的人还好,账号交给他还算放心.如果交给了不认识的玩 ...

  8. 教程:用强化学习玩转恐龙跳跳

    DeepMind在2013年发表了一篇题为<用深度强化学习玩Atari>的文章,介绍了一种新的用于强化学习的深度学习模型,并展示了它仅使用原始像素作为输入来掌握Atari 2600计算机游 ...

  9. 用计算机玩王者荣耀,王者荣耀你们用电脑玩王者荣耀顺手吗? - 游戏发言 - 酷酷跑手机游戏...

    我感觉有一点不顺手,那我也是一个职业,专门玩撸啊撸的玩家,但是呢,我就觉得王者荣耀这款游戏不应该搬上电脑这个平面上.王者荣耀是手游它搬上电脑给了诸多英雄,造成不便.比如其中的李白,难道你在李白释放技能 ...

最新文章

  1. 【Android View基础】View中几个容易混淆的距离及坐标量
  2. 这次不忽悠:3个成功案例告诉你,开一家AI公司其实不难
  3. 【struts2】struts2简介
  4. vue 页面url参数_Vue下URL地址栏参数改变却不能刷新界面
  5. 设备密码的设置以及遗忘重设置
  6. Upgrade to Spring Boot 1.4
  7. 4~20mA变送器量程与输入电流、输出电流的关系
  8. 100个人奇数枪毙Java,在JAVA中用for循环编写程序计算1~100之间的奇数之和
  9. 华为性格测试挂的原因是什么?这局怎么破?
  10. android自定义4级联动,使用Android如何实现四级联动地址选择器
  11. 文通车牌识别 SDK
  12. html水平导航栏代码连接状态,水平导航栏1.html
  13. 【十三香吗?】网易严选-苹果12商品评论数据可视化分析
  14. Codeforces Round #620 (Div. 2)(D. Shortest and Longest LIS)(O(n log n)的最长上升子序列或者贪心)
  15. js正则表达式(2)
  16. 亚信安全与新华三达成战略合作联手打造“更安全”的云数据中心
  17. 用户信息管理的功能开发
  18. spring事务5个隔离界别和7钟传播行为
  19. ipad一代应用_通过下一代图像提高您的应用程序性能
  20. C++实现:求坐标系中的某一点到原点的距离(使用构造函数)

热门文章

  1. Oracle ebs ap表结构,oracle,ebs,r12,常用表表结构总结之ap.docx
  2. 面试——HashMap实现原理以及面试常见问题
  3. 明星签名长啥样?古天乐王源字体笑翻 大张伟出乎意料
  4. 20170515_建立排序二叉树BST
  5. golang 本地缓存
  6. Encryption algorithm | Network security
  7. 如何测试linux服务器的带宽,Linux服务器如何测试带宽上行和下行网速
  8. python实现SHA-256加密
  9. 通过微信分享链接,后面被加上from=singlemessageisappinstalled=1导致网页打不开
  10. Vagrant 基本使用操作