3.1 Our PySC2 Extension(PySC2扩展)

SC2LE [16]是DeepMind和Blizzard联合提出的平台。 暴雪提供的游戏核心库提供了原始界面和功能映射界面。 DeepMind PySC2环境进一步将核心库包装在Python中,并完全公开了功能图界面。 目的是紧密模拟人为控制(例如,鼠标单击某处或按下某些键盘按钮),由于SC2内部结构的复杂性,它会导致大量操作。 因此,这给决策系统带来了不小的困难。 而且,这样的“玩家级”建模对于“单位级”建模是不便的,尤其是在考虑多主体样式方法时。 在这项工作中,我们付出了更多的努力来展示单元控制功能并编码技术树。

曝光单元控制。 在我们的PySC2分叉中,我们另外公开了SCII核心库的原始接口,该接口可实现每单位的观察/操作。 在每个游戏步骤中,都可以检索玩家可见的所有单位(取决于是否启用战争迷雾)。 每个单元由属性列表充分描述,该属性列表包括例如位置,健康状况等。将这种原始单元阵列作为返回给代理的观察来进行。 同时,允许以每个单元的动作来控制每个单元。 因此,代理能够将原始动作命令发送到感兴趣的单个单元(例如,某个单元移动到某个地方,某些单元攻击某个其他单元,等等)。 单位的定义和每个单位的作用可以在SCII核心库的protobuf中找到。

对技术树进行编码。 在《星际争霸II》中,玩家需要特定的单位/建筑物/技术,作为其他高级单位/建筑物/技术的先决条件。 按照UAlbertaBot [19],我们将这些依赖关系形式化为一个技术树,在我们的fork中缩写为TechTree。 我们已经收集了完整的Zerg TechTree,其中提供了每个Zerg单位的成本,建造时间,建造能力,制造商和前提条件。

除了上述两个附加功能外,我们的PySC2前叉与原始的Deepmind PySC2完全兼容。

3.2 TStarBot1: A Macro Action Based Reinforcement Learning Agent(基于宏观动作的强化学习智能体)

研究人员一共总结了165个大型操作,其中建造13个、爆兵/补农民22个、科技树27个、采矿/采气3个、对抗100个。图片底部是人为编码的游戏规则先验知识(如技能树TechTree)和如何进行操作(巢穴造哪儿),也就是说,它帮控制器省去了不少决策过程和操作细节

我们在图2中说明了代理是如何工作的。在顶部,有一个全局控制器,它将通过RL算法学习并对暴露在其中的宏操作做出决策。在底部,有一个宏操作池,这些宏操作硬编码游戏规则的先验知识(如TechTree)以及如何执行操作(例如,构建操作的无人机和构建操作的位置)。因此,它向控制器隐藏琐碎的决策因素和执行细节。通过这种架构,我们减轻了学习算法直接处理大量原子操作的沉重负担,同时仍然保留了整个游戏宏观策略的大部分关键决策灵活性。而且,这样的代理甚至在学习之前就可以掌握一些硬游戏规则的基本知识。有了这样一个中级抽象和丰富的知识的行动空间,代理可以从零开始快速学习,并在1∼2天内通过单个GPU击败最难的内置机器人。更多细节将在以下小节中提供。

3.2.1 Macro Actions(宏观动作)

如表1所示,我们为Zerg-vs-Zerg SCII完整游戏设计了165个宏动作(完整列表请参阅附录I)。

如上所述,宏操作的目的有两个:

  1. 硬编码游戏规则的先验知识(例如,技能树);
  2. 对控制器隐藏琐碎的决定因素(例如,构建布局)和一些执行细节

每一个宏动作执行一个有意义的基本任务,如建造某个建筑、生产某个单元、升级某项技术、获取某个资源、攻击某个地方等,并由一个组合或若干个原子操作组成。在行动空间中有了这样的抽象,赢得一场完整比赛的高层策略就变得更容易探索和学习了。

虽然大大缩小了动作空间,但这种做法也存在不少问题。由于智能体是基于大型操作集学习的,一旦做出决策,它就要完整执行完大型操作里的所有动作,但有时其中的一些动作在每个决策步骤中是互斥的。此外,由于会不可避免地大范围引入不必要的操作,这会带来许多不必要的观察值,冗余信息会干扰模型训练。另一方面,这个AI注定无法在小操作上学到东西。

下面主要对宏动作进行说明:

Buildaction(建筑行为):

建筑是科学院进一步单元生产和技术升级的先决条件。建筑类别包含13个宏操作,每一个宏操作在执行时都会构建一个特定的虫族建筑。例如,宏操作BuildSpawningPool 9使用一系列原子ui-actions3构建一个生成池单元(eg: 建造蟑螂温室=移动视野窗口+随机挑选工蜂+选取界面坐标位置+建造):

1)把相机移到基地,

2)屏幕点选一个无人机(目标单位),

3)在屏幕的某个地方建立产卵池。

这一系列的原子操作涉及两个内部决策:

1)建造哪架无人机?

2)在哪里建造?

由于这两个决策通常被认为对整个游戏过程和结果几乎没有影响,因此我们将其委托给一些基于随机和基于规则的决策者,即随机无人机选择器和随机空间放置器。注意到随机空间放置机必须编码基本的放置规则,例如:虫族建筑只能放置在蠕动区;孵化场必须位于靠近矿物的地方,以获得公平的收获效率。此外,TechTree规则,如“只有Drone才能构建产卵池”也被编码在这个宏操作中。

Production & Tech Upgrading Actions:

单位生产和技术升级在很大程度上影响了游戏的经济和技术发展。生产类别包含22个宏动作,技术升级包含27个,每个动作产生某种类型的单元或升级某种技术。 这些宏操作的硬编码类似于上述构建操作的硬编码,不同之处在于它们不需要空间放置器。

Resource Harvesting Actions(资源收集):

矿产,天然气和幼虫(仅Zerg-race)是SCII游戏中的三个关键资源。 它们的存储和收集速度会极大地影响经济增长。 我们设计了3个相应的宏动作:CollectMinerals,CollectGas和InjectLarvas。 CollectMinerals和CollectGas将一定数量的随机工作人员(即Zerg-race中的Drone)分配给矿物碎片或瓦斯提取器,以便通过这两个宏动作,可以将工作人员重新分配给不同的任务,从而进行矿藏和天然气储藏 (或其存储比例)已更改以满足某些需求。 InjectLarvas只需命令所有空闲的女王/王后注入Larvas,以加快单位生产过程。

Combat Actions:战斗动作:

如何设计战斗动作仍然是决定一场游戏结果的最决定性的部分,并且由于可能存在多种多样的宏观战斗策略,因此它也是最抽象的宏观动作部分。 举些例子:

•攻击时间:例如匆忙,提早骚扰,以最佳时间窗口攻击。

•攻击路线:例如,在狭窄的斜坡上行走可能会限制攻击火力。

•集结位置:例如,在进攻前集结以集中火力(请注意,各个单位的移动速度可能不同)。

我们尝试通过区域宏动作来表示这种作战策略,其定义如下(如图2所示):我们首先将整个世界地图划分为9个作战区域(称为A区到I区), 为整个世界增加了一个J区,总共有10个区; 根据区域划分,定义了100个(= 10×10)宏动作,并执行每个宏动作,例如,“ X区域中的战斗部队如果有敌人在那里开始攻击Z区域,否则,集结至Z区域 -Y,等等”。 对于每个宏观行动中的微攻击战术,在这项工作中,我们只需对每个作战部队的“即冲即跑”规则进行硬编码,即,该部队向最近的敌人开火并在健康状况不佳时逃跑。 我们将其留作未来工作,以研究针对微观战术的更复杂的多主体学习。

通过这些宏观行动的组成,可以代表并实现各种各样的宏观作战策略(尽管不是完全灵活的)。 例如,进攻路线的选择可以通过一系列区域性的集会宏观行动来完成。 通过此定义,我们避免使用复杂的多主体设置。

A vailable Macro Action List(可用的宏操作列表):

并非在任何时间步都可用上述每个预定义的宏操作。 例如,TechTree约束某些单位/技术只能在某些条件下建造/生产/升级:例如,足够的矿物质/天然气/食品存储,某些必要的单位/技术的存在。 当不满足这些条件时,相应的宏操作应“不执行任何操作”。 我们会在每个时间步骤维护此类可用宏操作的列表,对TechTree知识进行编码。 此可用操作列表会掩盖每个步骤中的无效操作,从而简化了探索过程。 该列表也可以作为特征。

3.2.2 Observations and Rewards(状态及奖赏设置)

状态观测:

这些观察结果是一组空间二维特征图和一组非空间标量特征,它们是从SCII游戏核心提供的单位信息中提取的,并在我们的PySC2分支中公开的(请参阅第3.1节)。

空间特征图。渲染尺寸为N×N的特征地图(不像原始PySC2 [16]那样分成小地图和屏幕特征),每个像素表示世界地图的某个统计信息(例如,某种类型的单位计数)与特征图像素相对应的区域。这些特征图包括自身和敌人常用单位类型的计数,以及具有某些属性(例如“ 可攻击地面can-attack-ground”,“可攻击空域can-attack-air”)的单位的计数。

非空间功能。标量特征包括收集的气体和矿物质的量,剩余食物的量,每种单位类型的计数等。我们还可以选择包括热门的游戏进度和当我们不使用重复动作时最近采取的动作的功能模型以跟踪过去的信息。

奖励:

我们使用了奖励结构:在游戏结束时收到三元1(获胜)/ 0(并列)/-1(亏损),并且在游戏过程中奖励始终为零。尽管奖励信号非常稀疏且延迟很长时间,但它与我们可处理大小的宏动作空间配合使用。

3.2.3  Learning Algorithms and Neural Network Architectures(学习算法与神经网络框架介绍)

根据上面定义的宏动作和观察,可以将该问题视为顺序决策过程,其中离散的动作空间具有可处理的大小,并且缩短了时间范围。 在时间步骤t,代理从游戏环境中接收观察值∈S,并根据其策略(在A上的条件概率分布)选择宏动作∈A,其中A表示集合 3.2.1节中定义的宏动作; 然后,通过上述手工调整的规则,将选定的宏动作at转换为游戏核心可接受的原子动作; 采取原子动作后,主体收到报酬和下一步观察值。这个循环一直持续到游戏结束。

我们的目标是Agent学习到最佳策略,以在未来的所有步骤中最大化其预期的累积奖励。 当我们直接使用第3.2.2节中定义的奖励函数而无需进行其他奖励调整时,优化目标相当于(最大化奖励折扣被忽略时)最大化代理的获胜率。我们训练TStarBot1代理通过使用内置的强化学习算法(例如Dueling-DDQN [8、38、39]和PPO [40])与内置的AI进行竞争,从头开始学习这种策略。基础设施。详细说明如下。

Dueling Double Deep Q-learning (DDQN)(双深度强化学习):

(Double DQN,分为主网络和target网络,主网络选择动作,target网络拟合Q值。主网络的变化浮动大,target网络变化浮动小。

Dueling DQN,用一个深度网络来拟合强化学习中的Q值,只不过在网络最后部分,分为状态V值和动作V值,而Q值就通过状态V值和动作V值相加得来。其目的是说,状态值一样,而每个动作所带来的优势不一样。)

深度Q网络[8]首先学习最佳状态作用值函数(Q函数)的参数化估计。其中:是策略π下的预期累积未来奖励。然后,可以从估计的最佳Q函数轻松得出最佳策略:如果,则,否则为0。诸如重放内存的技术[8], 目标网络[8],双重网络[38]和决斗架构[39]可用于减少样本相关性,更新目标不一致,最大化偏差和更新目标方差,从而提高学习稳定性和样本效率。由于奖励的稀疏性和长期延迟,我们使用了蒙特卡洛(MMC)混合[41]收益与增强型Q学习收益作为Q更新目标,这进一步加快了收益传播并稳定了训练。

Proximal Policy Optimization (PPO算法):

我们还通过近端策略优化(PPO)直接学习了随机策略的参数形式进行了实验[40]。 PPO是一种有效的策略梯度方法样本,它利用策略比率信任区域裁剪(clip操作)来避免解决TRPO中的KL散度约束的保守策略迭代问题所需的复杂的共轭梯度优化[42]。 我们使用了广义利益估计的截断形式[43],以权衡利益估计的偏差和方差。 第3.2.1节中描述的可用操作列表用于掩盖不可用的操作,并在每个步骤重新规范操作上的概率分布。

Neural Network Architecture(神经网络架构).

采用多层感知神经网络对状态作用值函数、状态值函数和策略函数进行参数化。虽然可以考虑更复杂的网络结构(例如,提取空间特征的卷积层,或补偿部分观测值的递归层),但这超出了本文的范围,我们将重点讨论这种简单的网络结构。

Distributed Rollout Infrastructure(分布式部署基础结构)

分布式部署基础结构。 SCII游戏核心占用大量CPU且部署缓慢,因此在RL训练期间会出现瓶颈。 为了缓解此问题,我们构建了一个分布式部署基础架构,其中利用一组CPU机器(称为actor)并行执行部署过程。 缓存在每个参与者的重放存储器中的推出体验将被随机采样,并定期发送到基于GPU的机器(称为学习器)。 目前,我们以1920个并行actor(在80台计算机上使用3840个CPU)来生成重放转换,其速度约为每秒16,000帧。 由于探索的轨迹的多样性增加,这大大减少了培训时间(从几周到几天),并且还提高了学习稳定性。

实验结果

腾讯星际争霸 TStarBots1解读相关推荐

  1. 探秘AlphaStar:星际争霸人工智能

    (声明:此文已发表于<爱上机器人>2019年2月刊,转载请联系作者) 前言   近十年来,人工智能的研究人员们一直在尝试将游戏用作测试和评估人工智能系统的方法.得益于算法的发展和计算能力的 ...

  2. DeepMind科学家:AI对战《星际争霸》胜算几何?

    记者 | 周翔 AI科技大本营1月29日消息,在<麻省理工科技评论>与深科技举办的新兴科技峰会上,谷歌DeepMind科学家Oriol Vinyals在会上发表了主题为<AI对战星际 ...

  3. 深度 | 人工智能的游戏征途:超级玛丽简直小菜一碟,星际争霸、LOL才是大boss...

    人类玩家依然能在类似<星际争霸>这样的游戏中夺冠 AP Photo/David Goldman "深蓝"打败人类距今已有20年,离 AlphaGo和李世石的世纪围棋之战 ...

  4. 说人话教AI打游戏,Facebook开源迷你版星际争霸,成果登上NeurIPS 2019

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 怎么教AI打游戏呢?当然是直接下指令啦. 告诉AI造农民,基地就开始唰唰往外吐农民: △下方英文指令:创造新农民 指挥农民挖矿造兵工厂,一句 ...

  5. 算法全覆盖,还能玩星际争霸,开源决策智能平台OpenDILab面世

    开源是推动人工智能技术进步的重要力量. 近年来,AI 开发者们也一直在享受着开源带来的技术红利:前沿算法.数据.AI框架.甚至算力.这些开源资源为开发者们带来了极大的便利,而反过来,通过汇聚开发者们的 ...

  6. 要玩转这个星际争霸II开源AI,你只需要i5+GTX1050

    DeepMind.OpenAI 和暴雪对于星际争霸 2 人工智能的研究仍在进行中,面对复杂的即时战略游戏,人们目前还鲜有进展.尽管近期腾讯.南大.伯克利等均在星际 II 上攻克了全场游戏,但其训练规模 ...

  7. 前阿里P10大神AI创业,主打决策智能,从《星际争霸II》开始

    李根 假装发自 克普鲁  量子位 报道 | 公众号 QbitAI 看看别人家的玩游戏事迹. 在北京大学第42届ACM-ICPC国际大学生程序设计竞赛全球总决赛现场,一款基于<星际争霸II> ...

  8. 玩转星际争霸局部战斗 —— QMIX

    这里写自定义目录标题 写在前面 QMIX 论文解读 多智能体的相关工作 Dec-POMDP DRQN IQL(Independent Q-Learning) VDN(Value Decompositi ...

  9. DeepMind AI碾压《星际争霸2》人类职业玩家 但它还不完美

    来源 | The Verge 编译 | 网易智能 参与 | 小小 [网易智能讯 1月25日消息]谷歌旗下DeepMind开发的人工智能AIphaStar在<星际争霸2>(Starcraft ...

最新文章

  1. 云米冰箱能控制扫地机器人_用冰箱就能掌控全屋家电?云米21Face 428L确实可以...
  2. 怎么设置表格根据窗口自动调整_Word排版技巧之表格美化,你值得拥有!
  3. c hello world_C和C++使用对方编译的动态链接库
  4. Maven 发布到本地仓库
  5. java中arges.length_java中的args.length
  6. js程序中美元符号$是什么
  7. NuGet是什么?理解与使用(上)
  8. java执行程序默认多线程吗_Java多线程 执行程序(1)
  9. linux ps进程管理命令,Linux 进程管理命令之ps
  10. 下列哪个不是python元组的定义方式_Python基础知识笔试
  11. 群晖 mysql 自动备份_宝塔定时备份网站及数据库至群晖FTP存储空间
  12. Python中的字符串特性(索引、切片、重复、连接、成员操作符号)
  13. python爬虫结果是字节_入门爬虫?一文搞定!
  14. maya刀剑神域 建模_王者玩家最想联动的动漫——刀剑与铠甲勇士,如果实现会联动谁?...
  15. Android Studio新建工程syncing失败;Android studio Connection timed out: connect
  16. DDA算法和Bresenham算法
  17. oracle10g exp下载,oracle 10g 导出数据 exp 10g
  18. 综合项目之闪讯破解(六)之 如何解决程序/C++Dll的兼容性问题
  19. WINCE ROM 定制大教程
  20. 分治——最近点对问题

热门文章

  1. C++网易云课堂开发工程师-class的声明
  2. 地方门户还有未来吗?
  3. 电脑锁定之后重新打开屏幕,双屏幕只能显示一个(娱乐向记录,技术向勿入)
  4. iphone手机拷贝照片到电脑端,经常出现设备连接失败,传输中断问题,办法来了
  5. 利用区块链进行数据安全共享的思考
  6. 十二生肖运势微信小程序源码
  7. 2017.04.01号最新cpu天梯图 包含7代cpu
  8. 一.微软office制作PPT时需要优化的一些设置
  9. 推荐一个分屏软件,spectacle
  10. [附源码]计算机毕业设计Python+uniapp一站式婚庆服务平台APP6kqlk(程序+lw+APP+远程部署)