去年,OpenAI 在 DOTA 的 1v1 比赛中战胜了职业玩家 Dendi,而在距离进阶版 OpenAI Five 系统战胜人类业余玩家不过一个月的时间,今天凌晨,它又以 2:1 的战绩再次完成对人类高级玩家的“屠杀”,GG(人类赢的最后一局纯属耍赖)。

相比之下,人类这次输给的是怎样的进阶版“AI 英雄”?

此次,OpenAI Five 对阵 5 个高级玩家(解说员+前职业玩家)——Blitz, Cap, Fogged, Merlini 和 Moonmeander,他们的平均天梯分 7000 左右。反观 OpenAI Five,根据公开资料,它的实力相当于人类玩了 180 年的游戏,而且每天都与自己进行对抗学习,学习过程非常复杂,需要在 256 个 GPU 和 128,000 个 CPU 上运行扩展版本的近端策略优化(PPO)进行训练。

它对每个英雄使用了单独的 LSTM(长短期记忆递归神经网络),并且没有人类数据,它会学习可识别的策略,这表明强化学习可以产生可实现规模的长期规划。

此外,就应用环境而言,不同于棋牌游戏的固定规则,像 DOTA2 这样的复杂视频游戏是 5v5 对决的战略游戏,况且,DOTA 游戏已经不断开发了十几年,游戏逻辑中有数十万行代码,且每两周更新一次,游戏语义在不断产生变化。

因此,AI 玩 DOTA 的难度可想而知,它首先需要解决以下四大问题:长时视野;局部观察状态;高维、连续的动作空间;高维、连续的观察空间。

▌模型架构

OpenAI Five 的每个网络都包含一个单层的、1024-unit 的 LSTM,它可以查看当前的游戏状态(从 Valve 的 Bot API 中抓取),并通过几个可能的 action heads 发出动作。每个 head 都具有语义含义,例如延迟动作的刻度数,选择哪一个动作,该动作在单元周围网格中的 X 或 Y 坐标等。Action heads 是独立计算的。

OpenAI Five 使用观察空间(observation space)和动作空间(action space)进行交互式演示。OpenAI Five 将世界视为 20000 个数字的列表,并通过发出一个包含 8 个枚举值(enumeration values)的列表来执行操作。通过选择不同的行动和目标,我们可以了解 OpenAI Five 如何编码每个动作,以及如何观察世界。下图是人类会看到的场景。

OpenAI Five 可以对与它所看到的相关的丢失状态片段做出反应。例如,直到最近,OpenAI Five 的观察区域才包括狙击手的技能范围(子弹落在敌人身上的区域)。然而,我们观察到 OpenAI Five 可以学习走出(虽然不能避免进入)狙击手的技能范围,因为当进入这个区域时,它可以看到自己的血量是在减少的。

▌探索

就算有学习算法能够处理较长的视野,我们仍然需要对环境进行探索。因为即使我们设定了各种限制,仍然有数百种道具、几十种建筑、法术、单元类型、长尾游戏机制,以及因此产生的各种组合,想要有效地探索这个巨大的空间其实并不容易。

OpenAI Five 可以从随机权重开始,从自我博弈中学习。 为了避免“策略崩溃”,智能体在训练的时候,80% 的游戏都是自我对抗, 另外 20% 则是与过去的自己进行对抗。在自我对抗时,英雄首先会漫无目的绕着地图游走。经过几个小时的训练后,智能体开始有了一些概念,例如建造、中路对线等。几天之后,他们始终采用基本的人类策略:试图从对手那里偷走 Bountyrunes等。 通过进一步的训练,它们可以熟练掌握 5 个英雄集中推塔的高级策略。

OpenAI Five 使用了 1v1 机器人里的随机化的方法 。它还使用了一个新的路线分配(lane assignment)策略。 在每个训练游戏开始时,他们随机地将每个英雄“分配”到一些 lane 的子集,在到随机选择的时间之前,如果英雄偏离这些路线,就会受到惩罚。

当然,也有奖励来帮助智能体探索环境,主要包括净值(net worth)、杀敌数(kills)、死亡数(deaths)、助攻(assists)、最后一击(last hits) 等指标。他们通过减少其他团队的平均奖励,来对每个智能体的奖励进行后续处理,以防止智能体找到正和博弈(positive-sum)的情况。

他们也对道具和技能构建进行了硬编码,同时,也通过脚本基线( scripted baseline)引入了信使管理( Courier management)。

▌Rapid

这个系统的实现使用了被称为“Rapid”的通用 RL 训练系统,它适用于任何多人模式环境。

训练系统分为 rollout workers,运行游戏副本,智能体(agent),用来收集经验,优化器节点(optimizer nodes)执行跨 GPU 组的同步梯度下降。每次训练还包括分别对训练机器人以及样本机器人进行评估的组件,以及监视软件,比如 TensorBoard,Sentry 以及 Grafana。

在同步梯度下降运算过程中,每一个 GPU 组件都会运算自己负责的批处理部分的梯度计算,随后整体梯度再进行平均计算。他们原本使用消息传递借口的规约算法进行平均计算,现在则使用英伟达的多卡通型框架 NCCL2 的封装函数来实行 GPU 并行计算以及网络间数据传输。同步 58MB 大小数据(用于 OpenAI Five 的参数)的延迟显示在表格之中,延迟时间足够低能满足大部分数据被进行并行运算的 GPU 标记。

▌与人类的不同

OpenAI Five 获取的信息和人类完全一致,但是系统能马上反应到类似位置、生命值以及物品更新情况等等人类玩家需要定时观察的信息。OpenAI Five 的平均 APM 在 150-170 之间(理论上最快可以达到 450 考虑到每四帧一动),平均反应时间为 80 毫秒,比人类平均速度要快很多。

很多职业选手在去年 TI 结束后都使用 bot 进行训练。根据 Blitz 的说法 solo bot已经改变了人们对 solo 赛节奏的看法,bot 偏向于快节奏风格,现在大多数选手也已经使用快节奏风格来和 bot 抗衡。

AI 在 Dota2 中的节奏和执行力非常强了,这是不是意味着它没有优化空间了?当然不是, 此次的 OpenAI Five 还是有诸多限制,比如系统在进行最后一击时较弱,其客观优先级与一个共同的专业策略相匹配,获得战略地图控制等长期奖励往往需要牺牲短期奖励。

Open AI 方面称,在今年后续的 TI 表演赛上,还会有职业玩家继续挑战 AI,但结果想来也是实力“嘲讽”人类。或许,更让人期待的是,在 Dota2 这样的复杂游戏中,是否会出现“AI vs AI”的神仙打架比赛?

▌推荐

  • 腾讯云年中最大活动,注册即领500减350卷!云服务器最低2折,最低325元/年!戳此直达活动现场!

  • 阿里云推行全民云计算计划,注册即领1000元代金卷,云服务器低至2折,最低293元/年!戳此直达活动


原文https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/81454459

Dota2团战实力蔑视人类,解剖5只“AI英雄”的更多相关文章

  1. 面对最菜TI战队,OpenAI在Dota2上输的毫无还手之力

    作者:Tony Peng 去年,OpenAI 的 1v1 AI 击败了世界顶尖选手 Dendi,OpenAI CTO Greg Brockman 承诺:明年,我们会带着 5v5 的 AI bot 重回 ...

  2. 读书笔记《疯狂人类进化史》,第五章,关于xing ai这件事

        像人类这样沉迷于交配的却少之又少--传宗接代并不需要无休止的xing ai,这种小事只要在发情期做几次就可以了.在其他动物眼里,人类简直"淫荡至极",他们在床上花费大量时间 ...

  3. 基于SpringBoot+SSM实现的Dota2资料库智能管理平台

    Dota2资料库智能管理平台的设计与实现 摘    要 当今社会,游戏产业蓬勃发展,如PC端的绝地求生.坦克世界.英雄联盟,再到移动端的王者荣耀.荒野行动的火爆.都离不开科学的游戏管理系统,游戏管理系 ...

  4. 基于深度学习方法的dota2游戏数据分析与胜率预测(python3.6+keras框架实现)

    很久以前就有想过使用深度学习模型来对dota2的对局数据进行建模分析,以便在英雄选择,出装方面有所指导,帮助自己提升天梯等级,但苦于找不到数据源,该计划搁置了很长时间.直到前些日子,看到社区有老哥提到 ...

  5. 游戏编程算法与技巧 Game Programming Algorithms and Techniques (Sanjay Madhav 著)

    http://gamealgorithms.net 第1章 游戏编程概述 (已看) 第2章 2D图形 (已看) 第3章 游戏中的线性代数 (已看) 第4章 3D图形 (已看) 第5章 游戏输入 (已看 ...

  6. 十大最佳Leap Motion体感控制器应用

    十大最佳Leap Motion体感控制器应用   Leap Motion Controller也许还没有准备好大规模的发售,但是毫无疑问,这款小巧的动作捕捉器是我们见过的最酷的设备之一.这款设备的硬件 ...

  7. 维格表2月更新:智能图表上线,唤醒全量工作数据堪比AI

    你是否曾经想过,你的维格表数据有朝一日变化出如科幻电影般的数据图表? 你是否感到厌倦,对当前的后台系统密密麻麻的数据累觉不爱? 你是否一直期待,拥有一个专属大数据 BI 看板,让你的规划如有神助,挥斥 ...

  8. cg tut

    Gesture Drawing with Alex Woo Gesture Drawing with Alex Woo and Louis Gonzales http://eisneim.com/?p ...

  9. 看德日进,凯文·凯利与Kurzweil老师?

    生命从哪里来.要到那里去.生命存在的意义是什么.这些差点儿是人类可以探究的最深层次问题.基督教给出的答案是毁灭和审判.佛学给出的答案是无常,科学的达尔文进化论给出了生命的起点和进化的过程,对于未来.达 ...

随机推荐

  1. 将mysql数据库数据导出为.sql文件

    打开Navicat ,在我们要到处的数据上面右击鼠标,然后弹出的快捷菜单上点击“转储SQL 文件”,在再次弹出的子菜单项中选择第一个“数据跟结构”.

  2. python的for else语句

    Python循环中的else语句 绝大部分编程语言中都有条件判断语句,比如 if … else ,在大部语言中,else 一般只在条件判断语句中出现,与 if 语句配套出现,不过在 Python 中, ...

  3. Django学习系列之Form验证

    django表单基础 django表单分类 基于django.forms.Form:所有表单类的父类 基于django.forms.ModelForm:可以和模型类绑定的Form Form验证流程 定 ...

  4. 用yarn替代npm

    最近,从npm拉取vue-cli总失败,后来干脆直接用yarn 全局安装yarn(官网首推用系统包安装,更加安全) npm i yarn -g 用yarn添加全局vue-cli yarn global ...

  5. nginx负载均衡向后台传递參数方法(后端也是nginxserver)

    做了一个站点是用nginx 做的负载均衡.后端也是多个nginxserver 遇到了一个问题.当做SSL支持时 前端nginx分发到 后端nginx后就成 http形式了(这样后台php用$_SERV ...

  6. 嵌入式开发之函数解析---ip地址2进制转字符inet_ntoa 调用中只生效一次

    inet_addr()   简述:将一个点间隔地址转换成一个in_addr. #include <winsock.h> unsigned long PASCAL FAR inet_addr ...

  7. Go 语言的下一个大版本:Go 2.0 被安排上了(全面兼容1.X,改进错误处理和泛型这两大主题)

    今年 8 月 Go 开发团队公布了 Go 2.0 的设计草案,包括错误处理和泛型这两大主题.现在备受瞩目的 Go 2.0 又有了新动向 —— 昨日 Go 开发团队在其官方博客表示,Go 2 已经被安排 ...

  8. Codeforces Round #311 (Div. 2) D - Vitaly and Cycle

    D. Vitaly and Cycle time limit per test 1 second memory limit per test 256 megabytes input standard ...

  9. 【170】◀▶ IDL 学习初体验-全

    IDL Reference 操作符号 数组 字符及字符串 结构体 指针 链表 & 哈希表 程序控制(循环.条件.跳转语句) 过程 & 函数 输入与输出 系统变量 文件系统操作 直接图形 ...

  10. vue中sync,v-model----双向数据绑定

    需求:父子组件同步数据 实现方式:sync或者v-model 一.sync 官网:https://cn.vuejs.org/v2/guide/components-custom-events.html ...