DeepMind:星际争霸2:强化学习新挑战(翻译)

DeepMind:StarCraftII:A New Challenge for Reinforcement Learning

星际争霸2:强化学习新挑战

原文下载链接:https://deepmind.com/documents/110/sc2le.pdf

本文绿色字体是学习过程中的注释,蓝色字体为总结,可以忽略,最后附有个人翻译后记。

整个论文分为:

摘要(Abstract)

1.介绍(Introduction)

2.相关工作(Related work)

3.sc2le环境(The SC2LE Environment)

4.强化学习:基线代理(Reinforcement Learning : Baseline Agents)、

5.录像监督学习(Supervised Learning from Replays)

6.结论和未来工作(Conclusions & Future Work)

 

摘要

本文介绍了SC2LE(星际争霸II学习环境),这是一个基于星际争霸II游戏的强化学习环境。该领域对强化学习提出了新的巨大挑战,代表了比大多数先前工作中考虑的更具挑战性的一类问题。这是多个玩家互动的多代理问题;由于地图的部分观察性,信息不完善;它有一个大的行动空间,涉及数百个单位的选择和控制;它有一个大的状态空间,必须仅从原始输入特征层观察;并且它延迟了信度分配,需要数千个步骤的长期策略。我们描述了星际争霸II的观察,动作和奖励规范并提供了基于Python接口的开源,用于与游戏引擎进行通信。除了主要的游戏地图,我们还提供一系列小游戏,专注于星际争霸II游戏的不同元素。对于主要游戏地图,我们还提供来自人类专家玩家的游戏回放数据的附带数据集。我们给出了根据用这些数据训练的神经网络的初始基线结果,以预测游戏结果和玩家行为。最后,我们提出应用于星际争霸II领域的规范化深度强化学习代理的初始基线结果。在小游戏中,这些代理学会达到与新手玩家相当的游戏水平。但是,当对完整游戏进行训练时,这些代理无法取得明显的进展。因此,SC2LE为探索深度强化学习算法和架构提供了一个新的,具有挑战性的环境。(信度分配问题与强化学习有关。 假设你正在玩象棋游戏,每次移动都会给你零奖励,直到最后一次移动。 最后的移动决定了你是否赢了比赛。 如果你赢了比赛,你将获得+1奖励。但是哪一步(或一系列动作)导致了你的胜利? 也许你的第一步将获胜的几率提高了25%,但第二步实际上减少了你的机会。 在未来的迭代中,你想要进行更多的移动,比如移动棋子1,但不太喜欢移动棋子2。不幸的是,你在游戏结束时只获得+1,因此你不知道每个移动如何影响你的游戏,这是就是信度分配问题。)

 

 

 

  1. 介绍

语音识别[7],计算机视觉[15]或自然语言处理[37]等领域的最新进展可以归因于深度学习的复兴[16],它为使用神经网络的非线性函数逼近提供了强大的工具。这些技术在强化学习问题上也证明是成功的,在Atari [20],围棋[31]游戏,三维虚拟环境[3]和模拟机器人领域[17,28]中取得了显著的成功。这种成功的大部分是由具有适当困难度的模拟领域的可用性所刺激的。基准测量对于测量和因此推进深度学习和强化学习(RL)研究至关重要[4,20,27,8]。因此,因此,确保超出当前方法能力的领域的可用性至关重要。。

在本文中,我们介绍了基于星际争霸II视频游戏的SC2LE1(星际争霸II学习环境),这是一个新的,更具挑战性的强化学习领域。 “星际争霸”是一款即时战略(RTS)游戏,它结合了快节奏的微操与高水平的计划和执行能力的需求。星际争霸I,星际争霸II和开展电子竞技活动的先锋和保持者,有着数以百万计的休闲玩家和高竞技水平的职业玩家。因此,击败顶级人类玩家将成为一个有意义且可衡量的长期目标。

从强化学习的角度来看,星际争霸II还提供了一个无与伦比的机会来探索许多具有挑战性的新领域。首先,这是一个多智能体问题,其中有几个参与者竞争影响力和资源。它也是较低级别的多智能体:每个玩家控制数百个单位,需要协作以实现共同目标。其次,它是一个不完善的信息游戏。仅通过本地镜头部分地观察地图,必须主动移动该镜头以便玩家整合信息。此外,还有“战争迷雾”,模糊了地图中未被访问的区域,有必要积极探索地图,以确定地图的状态。第三,动作空间和多样性。玩家在大约108种可能性的组合空间中进行选择,使用点击式界面。有许多不同的单位和建筑类型,每个都有独特的动作。此外,随着玩家通过可能科技树的发展,这套动作规则也会有所不同。第四,游戏通常持续数千帧和动作,并且玩家必须做出早期决定(例如构建哪些单位),其结果可能直到游戏后期(玩家的军队相遇时)才能看到,导致来自信度分配和探索所带来的丰富挑战。

本文介绍了一个接口,旨在使星际争霸中的强化学习更直接:观察和动作是根据低分辨率网格特征定义的;奖励是基于星际争霸II引擎对内置计算机对手的得分;除了完整的游戏地图,还提供了几个简化的小游戏。未来版本将扩展接口以应对星际争霸II的全面挑战:观察和行动将根据RGB像素;代理将根据多人游戏中的最终赢/输结果进行排名;并且评估将仅限于在具有竞争性的在人类游戏中使用的完整游戏地图。

此外,我们提供了一个基于人类玩家记录的游戏回放的大型数据集,随着人们玩游戏,这将增加到数百万次回放。我们相信开源接口和这个数据集的结合将提供一个有用的基准,不仅可以测试现有的和新的强化学习算法,还可以测试感知,记忆和注意力,序列预测和建模不确定性等有趣方面,所有这些都是机器学习研究的活跃领域。

在星际争霸的原始版本中已经存在几种用于强化学习的环境[1,33,32]。我们的工作在以下几个方面与以前的环境有所不同:它关注的是更新版本的星际争霸2;观察和动作是基于人类界面而不是底层程序化的;并且由Windows,Mac和Linux上的游戏开发者暴雪娱乐直接支持。

目前最好的人造星际争霸机器人,基于内置AI或以前的环境研究,可以被全部业余玩家击败[cf.6,and later versions of the AIIDE competition]。这一事实加上星际争霸有趣的游戏特性和大型玩家群,使其成为探索深度强化学习算法的理想研究环境。

 

 

2.相关工作

计算机游戏为评估和比较在标准化任务中的不同的学习和计划方法提供了一个引人注目的解决方案,并且是人工智能(AI)研究的主要挑战。这些游戏具有多重优势:1。他们有明确的客观成功衡量标准; 2.计算机游戏通常输出丰富的观测数据流,这是深度网络的理想输入;它们在人类看来很有难度且有趣。这确保了研究人员不会调整挑战本身,以使开发算法的问题更容易; 4.游戏被设计成可以在任何地方运行,无论是接口还是游戏引擎,这使研究者很方便地分享;

 

图1:星际争霸II学习环境SC2LE,其组件插入一个神经网络代理。

 5.在某种程度下,一群狂热的人类玩家的存在使得有可能对高度熟练的个人进行基准测试.6.在游戏模拟中,他们可以精确控制,并且可以大规模运行。

也许推动强化学习研究的游戏的最好的例子是街机学习环境(ALE [4]),在此环境之下,可以对Atrari电子游戏进行简单且可复现的实验。这个标准化的任务集合到现在一直是AI研究领域的翘楚。这个环境的游戏分数可以直接测量和比较不同的算法。 ALE是人工智能[30]丰富的视频游戏基准线传统中的一个突出例子,包括超级马里奥[35],吃豆小姐[26],毁灭战士[13],虚幻竞技场[11],以及一般视频游戏框架[29,5]和比赛[23]。 RTS游戏类型吸引了大量的人工智能研究,包括最初的星际争霸(母巢之战)。我们推荐Ontanon等人的研究 [21]和Robertson&Watson [25]的概述。许多研究方向集中于游戏的特定方面(例如,构建顺序或战斗微管理)或特定的AI技术(例如,MCTS规划)。我们还没有发现用端到端RL方法解决完整游戏的成果。由于丰富的输入和输出空间以及非常稀疏的奖励结构(即游戏结果),解决完整版本的RTS游戏似乎令人生畏。到目前为止,星际争霸的标准API是BWAPI [1]和相关的包装器[32]。 RTS游戏的简化版本也已经开发用于AI研究,最著名的是microRTS3或更新的ELF [34]。此外,已经在例如微管理迷你游戏(例如,[22,36])或学习游戏结果或来自重放数据的构建顺序[9,12]中探索了基于学习的代理。

 

 

 

3.SC2LE环境

 

我们论文的主要贡献是SC2LE的发布,它将星际争霸II作为一个研究环境。该版本包含三个子组件:Linux系统StarCraft II二进制文件,StarCraft II API和PySC2(参见图1)。

星际争霸II API4允许对星际争霸II进行编程控制。该API可用于启动游戏,地理观测,拍摄和回放播放。这个版本可以在Windows和Mac上使用,但是我们还提供了一个在Linux上运行的有限制的版本,尤其适用于机器学习和分布式用例。

使用这个API,我们们构建了PySC25,一个为强化学习代理优化的开源环境。PySC2是一个Python环境,它包含了星际争霸II API,以简化Python强化学习代理和星际争霸II之间的交互。PySC2定义了一个动作和观察规范,并包括一个随机代理和一些脚本代理作为例子。它还包括一些迷你游戏作为挑战和可视化工具,以了解代理可以看到和做什么。

星际争霸II每秒更新游戏模拟进度以16(“正常速度”)或22.4(“快速”)时间。游戏主要是确定性的,但它确实有一些随机性,这主要是出于美观的原因;两个主要的随机元素是武器攻击速度和更新顺序。可以通过设置随机种子来移除/减轻这些随机性源。我们现在描述用于本文所有实验的环境。

(3 https://github.com/santiontanon/microrts

4 https://github.com/Blizzard/s2client-proto

5https://github.com/deepmind/pysc2)

 

图2:PySC2查看器在左侧显示人类可解释的游戏视图,在右侧显示特征层的彩色版本。 例如,地形高度,战争迷雾,行军,摄像机位置和玩家身份,这些信息显示在特征层图的顶行。 可以在https://youtu.be/-fKUyT14G-8找到视频。

 

 

 

3.1 完整游戏描述与回馈结构

在星际争霸II的完整1v1游戏中,两个对手在地图上出生,地图上其中包含资源和其他元素,如坡道,瓶颈路段和岛屿。要赢得比赛,玩家必须:1.积累资源(晶体矿和瓦斯),2.建造生产建筑,3.积聚军队,4.消灭所有对手的建筑物。游戏通常持续几分钟到一小时,并且在游戏中采取的早期动作(例如,建造哪些建筑物和单元)具有长期后果。玩家拥有不完善的信息,因为他们只能看到他们拥有单位的地图部分。如果他们想要了解并对他们的对手战略做出反应,他们必须派出部队进行侦察。正如我们在本节后面所述,动作空间也非常独特且具有挑战性。

大多数人在线对抗其他人类玩家。最常见的游戏是1v1,但团队游戏也是可能的(2v2,3v3或4v4),以及人数不平衡团队游戏或超过两个团队的更复杂的游戏。在这里,我们专注于1v1格式,这是最受欢迎的竞争星际争霸形式,但未来可能会考虑更复杂的情况。

 “星际争霸II”包含一个内置的AI,它基于一套手工制作的规则,并且有10个难度级别(其中三个最强的AI通过获取额外资源或视觉特权作弊)。不幸的是,他们编写脚本的事实意味着他们的策略相当狭窄。因此,它们很容易被利用,这意味着人类往往会很快失去对它们的兴趣。然而,对于纯粹学习的方法来说,它们是合理的第一个挑战,例如我们在第4和第5节中研究的基线;它们比随机代理玩的要好得多,只需很少的计算资源就可以很快地运行,并提供一致的基线来进行比较。

我们定义了两种不同的奖励结构:在游戏结束时收到的三元1(胜利)/ 0(平局)/ -1(失败)(在比赛期间获得全零奖励)和暴雪得分。三元赢/平/输分数是我们关心的真正奖励。暴雪得分是玩家在游戏结束时在胜利屏幕上看到的分数。虽然玩家只能在游戏结束时看到这个分数,但我们在游戏的每一步都可以访问暴雪的得分,以便分数的变化可以用作强化学习的奖励。它由当前研究的资源和升级的总和,以及当前存活和正在建造的单元和建筑物所统计而来的分数总和。这意味着玩家的累积奖励随着更多的开采资源而增加,当丢失单位/建筑物时减少,而所有其他行动(训练单位,建筑物和研究)不会影响它。暴雪得分不是零和,因为它是以玩家为中心的,它远不如三元奖励信号稀疏,并且它在某种程度上与输赢相关。

 

 

 

 

3.2 观察

星际争霸II使用游戏引擎,以3D形式呈现图形。虽然利用模拟整个环境的底层游戏引擎,但StarCraft II API目前不会渲染RGB像素。它会生成一组“特征层”,这些图像是从人类游戏中看到的RGB图像中抽象出来的,同时保持星际争霸II的核心空间和图形概念(见图2)。

因此,主要观察结果是以N×M像素呈现的特征层集合(其中N和M是可配置的,尽管在我们的实验中我们总是使用N = M)。这些图层中的每一个都代表游戏中的特定内容,例如:单位类型,生命值,所有者或可见性。其中一些(例如,生命点,高度图)是标量,而其他(例如,可见性,单位类型,所有者)是分类的。有两组要素图层:小地图是整个世界状态的粗略表示,屏幕是对应于玩家屏幕视图的世界子部分的详细视图,其中大多数动作执行。屏幕和小地图都存在一些特征(例如,所有者或可见性),而其他特征(例如,单元类型和命中点)仅存在于屏幕上。有关所提供的所有观察的完整描述,请参阅环境文档6。

除了屏幕和小地图之外,游戏的人机界面还提供各种非空间观察。这些包括收集的天然气和矿物质的数量,当前可用的一系列行动(取决于游戏背景,例如,选择哪些单位),有关所选单位的详细信息,构建队列和运输车辆中的单位。这些观察结果是也由PySC2公开,并在环境文档中有详细描述。

在完整的游戏中,屏幕使用高分辨率的全3D透视镜头进行渲染。这导致了复杂的观察,单位越来越小,因为它们在屏幕上变得“更高”,并且在后面可以看到比前面更多的世界空间。为了简化这一点,通过使用自上而下的正投影的相机渲染要素特征图层。这意味着要素图层中的每个像素对应于完全相同的真实世界土地,因此所有单位都将是相同的大小,无论如何它们在哪里。不幸的是,它还意味着要素层渲染与人类看到的不完全匹配。一个代理在前面看得多一点,在后面会看得少一点。这确实意味着人类在重放中所做的一些动作无法完全表现出来。

在将来的版本中,我们将公开一个渲染的API,允许代理从RGB像素玩游戏。这将使我们能够研究从原始像素学习到从特征层学习的效果,并与人类游戏进行更密切的比较。与此同时,我们使用要素图层来玩游戏,以验证代理人没有严重缺陷。虽然游戏体验明显改变,但我们发现N,M≥64的分辨率足以让人类玩家选择并单独控制小单位,如小狗。鼓励读者使用pysc2- play7尝试这一点。另见图2。

6https://github.com/deepmind/pysc2/blob/master/docs/environment.md 7https://github.com/deepmind/pysc2/blob/master/pysc2/bin/play.py

总结:在3.2Observation中论述了基于特征层的agent是如何观察游戏的,尽量做到与人类观察相近(公平游戏,目的就是要求教会机器如何像人类一样玩游戏,甚至更好)。

 

 

 

3.3 动作

我们设计了环境动作空间,以尽可能地模仿人类观察界面,同时保持一些强化学习环境中使用的一些惯例,例如Atari [4]。图3显示了由玩家和代理生成的一小段动作。

游戏中的许多基本动作都是复合动作。例如,要在地图上移动选定的单位,玩家必须首先选择通过按m移动它,然后可能选择通过按住shift来排列动作,然后单击屏幕或小地图上的某个点来执行操作。而不是要求代理按照三个独立动作的顺序生成这3个按键/鼠标按下,我们将其作为原子复合函数动作:move screen(queued, screen)。

更正式地,动作a表示为函数标识符a0的组合以及函数标识符所需的参数序列:a1,a2,...,aL。例如,考虑通过绘制矩形来选择多个单位这时的操作时select_rect(select add,(x1,y1),(x2,y2))。第一个参数select_add是二进制的。其他参数是定义坐标的整数 - 它们的允许范围与观察的分辨率相同。此操作以[select rect,[[select add],[[x1,y1],[x2,y2]]]的形式提供给环境。为了表示完整的动作空间,我们定义了大约300个动作函数标识符,其中包含13种可能类型的参数(从二进制到指定离散2D屏幕上的点)。有关通过PySC2可用操作的更详细说明和描述,请参阅环境文档;有关一系列操作的示例,请参见图3。

在星际争霸中,并非每个游戏状态都可以使用所有操作。例如,移动命令仅在选择单位时可用。人类玩家可以在屏幕上的“命令卡”中查看哪些操作可用。类似地,我们通过在每个步骤给代理的观察提供可用操作的列表。执行不可用的操作被认为是错误,因此代理应该过滤他们的操作选择,以便仅采取合法的行动。人类通常每分钟进行30到300次动作(APM),APM大致随着玩家技能的提高而增加,专业玩家通常会超过500 APM。在我们所有的强化学习实验中,我们每8个游戏帧行动​​一次,相当于约180 APM,这对于中级玩家来说是一个合理的选择。

我们相信这些早期的设计选择使我们的环境成为开发复杂强化学习代理的有希望的测试平台。特别地,固定大小的特征层输入空间和类似人的动作空间对于基于神经网络的代理是自然的。这与其他最近的工作[32,22]形成对比,其中游戏以单位/单位进行访问,并且每个单元都单独指定操作。虽然两种界面风格都有优势,但是PySC2提供了如下优点:

1.使从人类录像中学习变得更简单

2.没有要求针对于每个单位超人类操作

3.agent和UI界面玩,并不是通过底层API。

 

 

总结:在3.3Actions中,首先简述设计环境动作空间的目的是尽可能最小化与人类界面的动作空间的差别与此同时又使这种设计模式能运用到其他深度学习环境。然后介绍游戏中的一些基础的操作演习是由一系列的动作符合而成(例如建造建筑)。接下来说明了,在不同游戏状态下,合法操作是不同的,代理通过过滤动作选择来做出合法动作。其次,讲清楚了agentAPM(每分钟操作数)的问题,通过控制在每8帧的动作数使平均APM稳定在180左右,相当于人类中等水平。最后总结了PySC2的优点。Pysc2使代理的操作条件尽可能和人类玩家一致,鼓励代理通过策略取胜。

 

 

3.4 小游戏任务描述

为了单独研究游戏的元素,并为完整游戏提供进一步细化的步骤,我们构建了几个小游戏。这些是小地图上的重点场景,这些小地图的构建目的是测试具有明确奖励结构的动作子集和/或游戏机制。与奖励只是赢/输/平的完整游戏不同,迷你游戏的奖励结构可以奖励特定行为(如在相应的.SC2Map文件中定义的那样)。

我们鼓励社区使用强大的星际争霸地图编辑器构建mod或新的迷你游戏。这不仅会让小型游戏任务种类更多而且会让研究者们分享统一设置与评价标准,进而获得更加直观地获得可比较的评价分数。受限制的动作集,自定义回馈方程或有时间限制在SC2Map文件中。       

图3:人类在星际争霸II上的行为与PySC2显示的行为进行比较。我们将行动空间设计为尽可能接近人类行为。第一行显示游戏屏幕,第二行显示人类操作,第三行显示PySC2中的逻辑操作,第四行显示环境公开的操作(以及红色,代理在每个时间步骤选择的内容) )。请注意,前两列没有“建造补给站”操作,因为在这些情况下代理尚不可用,因为必须先选择工人。

 

因此,我们鼓励用户使用这种定义新任务的方法,而不是在代理进行自定义。

我们发布的七个迷你游戏如下:

1.MoveToBeacon:一个机枪拾矿,基于平常的贪婪策略。

2.CollectMineralShards:两个机枪拾矿,效率高,分数高。

3.FindAndDefeatZerglings:三个机枪在地图上搜寻并打败小狗,需要移动镜头,效率高,分数高。

4.DefeatRoaches:打败蟑螂,起始9个机枪对阵4只蟑螂,每打败所有蟑螂奖励5个机枪,又开始新的一轮,产生4个蟑螂,打败一只蟑螂加十分,死掉一个机枪减一分

5.ZerglingsAndBanelings:打败狗和毒爆,打败一个加五分(PS:看我用枪兵滚毒爆。2333

6. CollectMineralsAndGas:收集晶体矿和瓦斯,目的:在有限时间内收集尽可能多的矿和气,其中包括生产更多的农民

7. BuildMarines:在有限的时间和动作集条件下生产更多的枪兵,动作包括生产农民,收集资源,建造补给站,建造兵营,训练枪兵(人族开局)

以上均有时间限制。在线更详细地介绍https://github. com/deepmind/pysc2/blob/master/docs/mini_games.md。

 

 

3.5内部回调接口

在这种情况下,利用接口可以同时看见在视野范围内的所有单位的特征而不用移动摄像头,这被认为是作弊。因为这样可以不用框选单位而同时操作所有单位,远超人类界面所能做的操作。虽然机器学习用不着,但是被包括在发布版本中,因为社区研究可能会用的着(脚本代理或者可视化)。

 

 

3.6表现

我们经常可以比实时更快地运行环境。观察的速度取决于几个因素:地图复杂性,屏幕分辨率,每个动作的非渲染帧数和线程数。

对于复杂的地图(例如,完整的天梯地图),计算主要受模拟速度的影响。较少采取行动,允许较少的渲染帧,减少计算,但收益递减的速度相当快,意味着每个动作的超过8个步数的增益较少。花一些时间渲染高分辨率上并不伤,并且在并行线程中运行更多实例可以扩展的很好。

对于更简单的地图(例如,CollectMineralShards收集晶体矿),世界模拟速度非常快,因此渲染观察界面很重要。在这种情况下,增加每个动作的帧数并降低分辨率会产生很大的影响。而瓶颈在于python解释器,当在一个解释器上运行大约在4个线程以上时,渲染效果变得消极。

在分辨率是64x64和每个动作8帧的速度的条件下,单线程的天梯地图的游戏速度从200到700游戏步数每秒不等,这比实时速度快一个数量级。游戏的实际速度取决于多重因素,包括:游戏的阶段、操作单位的数量、游戏所运行的计算机。在收集晶体矿的地图上,同样的设置允许1600到2000游戏步骤每秒。

总结:3.5讲了原生API已经包含在里面,我们搞机器学习用不着,有需要的自取。

3.6节主要讲了观察过程的速度控制问题,有很多因素会影响观察的速度进而影响游戏的进程。主要从小地图和大地图两个方面论述了动作频率、渲染高分辨率对游戏效果的影响。意思是我们控制观察速度方面已经摸透了,你也可以自己去研究和调试。

 

 

4.ReinforcementLearning:BaselineAgents强化学习:基线代理

这一节提供了一些用于校准地图难题和证明已建立的RL算法至少在小型游戏中可以学习有用的策略的基线结果,但是仍有很多挑战。另外,我们还提供了两个人类玩家的分数:一位游戏测试者(新手级别)和一位星际争霸大师(职业水平)

4.1介绍了重中之重————学习算法

在我们强化学习代理的的核心有着具有参数θ的深度神经网络,这确定了πθ,πθ由输入观察St,输出动作at确定

然后从环境中收到一个rt的回馈值。代理的目标是最大化返回值,其中γ是折扣因子。为了表达地更清楚,我们假设策略仅仅以观察St为条件,但不失一般性,它可能以先前所有的状态为条件,例如通过一个我们接下来描述的一个隐藏的记忆状态。

策略的参数通过使用A3C算法来学习。这种算法能在不同的环境中表现出最先进的结果。这是一种在E[Gt]上表现出近似梯度上升的策略梯度方法。A3C梯度下降被定义如下:

其中 vθ(s)是由同样的网络产生的预期返回的价值函数估值。与一次全部返回不同,这时我们在上面的梯度中可以使用n步返回Gt = ,其中n为超参数。

在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数。 相反,其他参数的值通过训练得出。超参数:定义关于模型的更高层次的概念,如复杂性或学习能力。

1.不能直接从标准模型培训过程中的数据中学习,需要预先定义。

2.可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定

超参数的一些示例:

   1. 树的数量或树的深度
   2. 矩阵分解中潜在因素的数量
   3. 学习率(多种模式)
   4. 深层神经网络隐藏层数

   5. k均值聚类中的簇数)

最后一个术语是规则化策略以免熵变大,促进探索进程并且β和η是权衡不同损失成分重要性的超参数。若想获取更多细节建议读者参考原论文。

4.1总结:介绍了主要算法,神经网络的一些参数设定,介绍了参数学习的参考算法A3C

 

 

4.2策略表示

正如第三节描述的一样,API将动作显示为包含函数标识符a0和一组参数的嵌套列表a。因为所有的参数包括屏幕和小地图上的点的坐标是离散的,所以参数π(a | s)的朴素参数化将需要数百万个值来指定a上的联合分布,即使对于低空间分布率。相反,我们建议使用链式规则,以自动回归的方式表示策略:

这种表示如果实施得当可以说是相当简单了,因为它把选择一整个动作a的问题转化为对于每一个参数at一系列决策。注意,根据函数标识符a0,所需参数的数量L不同。一些动作(例如noop—action,无操作)不要求任何操作,与此同时其他动作(例如,move_screen(x,y))要求参数。请参见图3,以了解表示这种可变性的一系列简短操作的示例。

你可以使用对参数使用任意的排列去定义链式规则的使用顺序,然而,点击的位置自然取决于点击的目的,即被称为函数标识符。在我们的大多数实验中,我们发现很容易独立地模拟子动作,然而,我们还探讨了自动回归策略,其中选择了排序,以便我们首先确定函数标识符,然后确定所有分类参数,最后,如果相关的话,确定像素坐标。

4.2总结:用链式规则以自动回归的方式表示策略是本节的重点,侧重讲如何完成一系列动作的策略数学表示。

 

 

 

4.3代理结构

本节介绍了几种代理体系结构,旨在生成合理的基线。我们采用文献【20,19】中的既定架构,并根据环境的具体情况,特别是动作空间进行调整。

输入预处理 :所有基线代理分享同样的输入特征层的预处理。我们将所有包含分类值的特征层嵌入到一个连续空间中,这相当于在通道维度中使用一个独热编码One-hot编码:One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。

One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1,而我们使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。

将离散型特征使用one-hot编码,确实会让特征之间的距离计算更加合理。),然后使用1×1卷积。我们也用对数转换重新缩放数值特征,因为其中的一些特征,如撞击点(?)或矿物,可能会达到相当高的值。

Atari-net Agent :第一个基线是成功用于Atari [4]基准测试和DeepMind Lab环境的架构的近似改编[3]。它使用与 [19深度强化学习的异步方法]  中相同的卷积网络处理屏幕和小地图特征层 - 两层分别具有尺寸为8,4和步长4,2的16,32个过滤器。非空间特征向量由具有tanh非线性的线性层处理

 

结果被连接并通过具有ReLU激活的线性层发送(ReLURectified Linear Unit,修正线性单元,神经网络中使用激活函数来加入非线性因素,提高模型的表达能力。

最后,结果向量这时用作线性层的输入,线性层通过动作函数id a0和每个动作函数参数{al} L l = 0独立地输出策略。

 

图4:本论文所使用的基线代理的结构

对于空间动作(坐标),我们独立地对策略建模以选择(离散化)x和y坐标。

FullyConvAgent(完全卷积代理):用于强化学习的卷积网络(如上面的Atari网络基线)通常会降低每层输入的空间分辨率,并在最终的确定完全连接的层将其丢弃。这允许在推断动作之前提取空间信息。然而,在星际争霸中,一个主要的挑战是推断空间动作(点击屏幕和小地图)。由于这些空间动作在与输入在相同的空间内起作用,因此丢弃输入的空间结构可能是有害的。

在这里,我们提出了一个完全卷积网络代理,它直接通过一系列保持分辨率的卷积层来预测空间动作。我们提出的网络没有跨步,并且在每一层都使用填充,从而保留了输入中空间信息的分辨率。为了简单起见,我们假设屏幕和小地图输入具有相同的分辨率。我们通过单独的两层卷积网络来传递屏幕和小地图的观察,其中1632个过滤器的尺寸分别为5x5、3x3。然后通过屏幕和小地图网络输出的级联以及沿着信道维度的广播矢量统计来形成状态表示。为了计算分类(非空间)操作的基线和策略,状态表示首先通过一个有256个单元和relu激活的完全连接的层,然后通过完全连接的线性层。最后,利用单输出信道状态表示的卷积获得空间动作策略。有关此计算的可视化表示,请参见图4。

FullyConvLSTMAgent(完全卷积LSTM代理):上述两个基线都是前馈体系结构,因此没有内存。虽然这对某些任务来说是足够的,但我们不能指望它足以满足星际争霸的全部复杂性。这里我们介绍一种基于卷积LSTM的基线架构。LSTMLong Short-Term Memory)是长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。

LSTM 已经在科技领域有了多种应用。基于 LSTM 的系统可以学习翻译语言、控制机器人、图像分析、文档摘要、语音识别图像识别、手写识别、控制聊天机器人、预测疾病、点击率和股票、合成音乐等等任务。)我们遵循上面描述的完全卷积代理的管道,并在小地图和屏幕特征通道与非空间特征连接后简单地添加卷积LSTM模块。

Random agents (随机代理):我们使用两个随机基线。随机策略是一种在所有有效动作中随机一致地选择的代理,它突出了在一个非常大的动作空间中跌跌撞撞成功的困难(成功很难,但是最后结果较可靠)。随机搜索基线的工作原理是采用许多独立的,随机初始化的策略网络(具有低softmax温度,可引发接近确定性的动作)(在机器学习尤其是深度学习中,softmax是个非常常用而且比较重要的函数,尤其在多分类的场景中使用广泛。他把一些输入映射为0-1之间的实数,并且归一化保证和为1,因此多分类的概率之和也刚好为1 

首先我们简单来看看softmax是什么意思。顾名思义,softmax由两个单词组成,其中一个是max。对于max我们都很熟悉,比如有两个变量a,b。如果a>b,则maxa,反之为b。用伪码简单描述一下就是 if a > b return a; else b 

另外一个单词为softmax存在的一个问题是什么呢?如果将max看成一个分类问题,就是非黑即白,最后的输出是一个确定的变量。更多的时候,我们希望输出的是取到某个分类的概率,或者说,我们希望分值大的那一项被经常取到,而分值较小的那一项也有一定的概率偶尔被取到,所以我们就应用到了soft的概念,即最后的输出是每个分类被取到的概率

此外,softmax在增强学习领域内,softmax经常被用作将某个值转化为激活概率,这类情况下,softmax的公式如下:带温度参数的softmax函数,其中,T被称为是温度参数(temperature parameter)。当T很大时,即趋于正无穷时,所有的激活值对应的激活概率趋近于相同(激活概率差异性较小);而当T很低时,即趋于0时,不同的激活值对应的激活概率差异也就越大。)

对每个网络进行20次评估,并保持最高的平均分数的网络。这是互补的,因为它在策略空间而不是行动空间中进行采样。

总结:4.3节主要介绍了代理的结构,分别从输入预处理、Atari网络代理、完全卷积代理、完全卷积LSTM代理、随机代理五个方面阐述了代理的结构。

在输入预处理方面,主要是将特征值连续化,以及重新缩放一些值。

Atari网络代理方面,这个基线用来处理屏幕和小地图的特征层,并用tanh函数将非空间特征向量,转化为与空间特征向量相同的状态表示值,最终形成空间策略和非空间策略。

在完全卷积代理方面,主要介绍了Atari网络代理的缺点是会降低每层输入的空间分辨率,从而对输入的完整结构具有破坏性。因此提出了完全卷积代理,它拥有通过填充卷积层来保持分辨率。看图4

在完全卷积LSTM代理方面,以上的代理均是前馈网络(见注释),为了完全满足星际争霸2的复杂度,必须考虑并处理和预测时间序列中间隔和延迟相对较长的重要事件,因此提出了采用LSTM代理,并介绍了添加方式。

(注释:

 

深度前馈神经网络也叫作多层感知机,是深度学习中最常用的模型。它包含输入层,隐含层和输出层三个部分。它的目的是为了实现输入到输出的映射。它定义了一个函数 y = f(x,theta),并且通过学习theta,得到了映射函数f

  深度前馈神经网络之所以称之为深度是因为它包含了很多层(隐含层可能会有很多层),而称之前馈则是因为它在输出和模型本身之间没有反馈,而有这种反馈的网络叫做循环神经网络。深度前馈神经网络的本质就是复合函数。

  为什么需要深度前馈神经网络呢?这要从线性模型谈起,刚开始线性模型只能够解决线性问题,后来引入了核函数就可以解决非线性的问题,但是这个核函数怎么来呢?通常的做法一个是采用通用式的核函数,容易过拟合,泛化误差太大。还有一种是通过手工设计,但是这一种的代价太大,经常几年甚至几十年才会出成果。为了更好地得到这个核函数,我们引入了神经网络。它能够通过学习,自己得到一个效果不错的核函数,我们在它的隐藏层可以加入通用的核函数,也可以结合经验加入手工设计一些核函数,那这样它就既具备前面两者的优点,又有自身的长处。  

前馈网络中,不论是离散还是连续,一般都不考虑输入和输出之间在时间上的滞后性,而只是表达两者间的映射关系,但在Hopfield网络中,需考虑输入输出间的延迟因素,因此需要通过微分方程或差分方程描述网络的动态数学模型。   

从系统观点看,前馈神经网络模型的计算能力有限,具有自身的一些缺点。而反馈型神经网络是一种反馈动力学系统,比前馈神经网络拥有更强的计算能力,可以通过反馈而加强全局稳定性。反向传播神经网络模型虽然很适合处理学习问题,但是却不适合处理组合优化问题。理论上来说,如果参数设置得当,Hopfield神经网络可以被用来优化任何问题。反馈神经网络中,所有神经元具有相同的地位,没有层次差别。它们之间可以互相连接,也可向自身反馈信号。典型的反馈性神经网络包括Hopfield神经网络和BAM双向联想记忆神经网络。)

在随机代理方面,为了保证学习效果的可靠性,运用随机策略学习,虽然学习过程相较于确定性策略较慢,但是能保证不同动作概率的接近确定性差异。

(在强化学习中,确定性策略和随机策略是modle free策略搜索的两类主要方法。这两者的区别也比较明显,有各自的优缺点。

两者的区别

确定性策略,在相同的状态下,其输出的动作是确定的;而对于随机策略,对于相同的状态,其输出的状态并不唯一,而是满足一定的概率分布,从而导致即使是处在相同的状态,也可能输出不同的动作。

另外,就两者的优缺点来说,确定性策略的优点是能够利用确定性梯度优化策略,所以不需要太多的采样数据,计算效率也很快。缺点是由于每次面对同一状态其输出的动作是唯一的,无法讨论一些其它动作的效果,不具有自学习的能力;

而随机策略的优点是能够探索好的经验,然后集成到一个策略中。而且随机策略比较成熟,现有的轮子比较多。而缺点是需要采样的数据量较大,学习比较慢;

两者对应的经典算法

确定性策略的经典算法

DPG

DDPG

随机性策略的经典算法

TRPO

PGQ

MC Control

SARSA

Q learning

 

 

 

4.4结果

A3C中,我们在一个网络的k=40前进步数后,或者在接收到终端信号时,切断轨迹并进行反向传播。 优化过程使用共享的rmsprop算法运行64个异步线程。

RMSProp算法的全称叫 Root Mean Square Prop,是Geoffrey E. HintonCoursera课程中提出的一种优化算法,在上面的Momentum优化算法中,虽然初步解决了优化中摆动幅度大的问题。所谓的摆动幅度就是在优化中经过更新之后参数的变化范围,如下图所示,蓝色的为Momentum优化算法所走的路线,绿色的为RMSProp优化算法所走的路线。 

DeepMind:星际争霸2:强化学习新挑战(翻译)_第1张图片

对于每种方法,我们进行了100个实验,每个实验都使用随机抽样的超参数。从表格(10-5,10-3)间隔中抽取学习率。 对于所有的代理,学习率从一个采样值线性退火到初始速率的一半。

(模拟退火算法来源于固体退火原理,退火就是讲材料加热后再经过特定速率冷却,目的是增大晶粒的体积,并且减少晶格的缺陷。材料中的原子原来会停留在使内能有局部最小值的位置,加热使能量变大,原子会离开原来的位置,而随机在其他位置中移动。退火冷却时速度较慢,徐徐冷却时粒子渐趋有序,原子有可能找到内能比原先更低的位置,最后在常温时达到基态,内能减为最小。

根据Metropolis准则,粒子在温度T时趋于平衡的概率为e-E/(kT),其中E为温度T时的内能,为其改变量,KBoltzmann常数。用固体退火模拟组合优化问题,将内能E模拟为目标函数值f,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法由初始解i和控制参数初值t开始,对当前解重复进行产生新解–>计算目标函数差–> 接受或舍弃的迭代,并逐步衰减t值,算法终止时的当前解即为所得近似最优解,这是基于蒙特卡罗迭代求解法的一种启发式随机搜索过程。退火过程由冷却进度表控制,包括控制参数的初值t及其衰减因子t,每个t值时的迭代次数L和停止条件S

思路

针对学习率不变化、收敛速度较慢的情况,即可使用退火算法方案,让学习率随时时间而变化。学习率计算公式为

训练深度网络时,让学习率随着时间退火通常很有帮助。如果学习率很高,系统的动能就过大,参数向量就会无规律地跳动,不能够稳定到损失函数更深更窄的部分去。

 何时开始衰减学习率是有技巧的:缓慢减小它,可能很长时间内只能是浪费计算资源地看着它混沌地跳动,实际进展很少。而如果快速地减小它,系统可能过快地失去能量,不能到达原本可以到达的最好位置。

通常,实现学习率退火以下三种:

随步数衰减:每进行几个周期就根据一些因素降低学习率。典型的值是每过5个周期就将学习率减少一半,或者每20个周期减少到之前的0.1。这些数值的设定是严重依赖具体问题和模型的选择的。在实践中经验做法是:使用固定的学习率训练的同时观察验证集错误率,每当验证集错误率停止下降,就乘以一个常数(比如0.5)来降低学习率。

指数衰减。数学公式是α=α0ektα=α0ekt,其中α0,kα0,k是超参数,tt是迭代次数(也可以使用周期作为单位)。

1/t1/t衰减的数学公式是α=α0/(1+kt)α=α0/(1+kt),其中α0,kα0,k是超参数,t是迭代次数。)

我们以每8个游戏步数一个固定的速率行动,这相当于每秒约三次动作或180 APM

4.4.1 完整游戏

为了完整的游戏实验,我们挑选了作为在线排位和职业比赛的深海暗礁天梯地图。代理以人类对战人类的方式与最简单的内置AI对战。游戏最长时间设为30分钟,之后宣布平局,该场比赛终止。

比赛结果在图表5中。

DeepMind:星际争霸2:强化学习新挑战(翻译)_第2张图片

5:有着最好的超参数的对阵内置的最简单AI的完整游戏表现(TVT,深海暗礁天梯地图):1.使用结果作为反馈(-1 = 输,0 = 平,1 =赢);2.使用暴雪提供的本地游戏分数作为奖励。值得注意的是,基线代理甚至没有学会赢得一场比赛。使用的结构体系包括:(a)用于DQN的原始Atari-Net架构(b)使用convnet保存屏幕和小地图操作的空间信息的网络,(ConvNet是一个基于GPU实现的卷积神经网络开源代码(C++11),是由多伦多大学的Geoffrey Hinton深度学习团队编写的,它的最初版本是Hinton的学生Alex Krizhevsky编写的cuda-convnet(其项目地址在google code上面),最近cuda-convnet也从1.0版本更新到2.0版本。(c):和(b)相同但是在一层有一个卷积LSTM。线条是平滑的以提高可视性。

 

不出所料,接受过稀疏三元奖励训练的代理中没有一个能为整个比赛制定出可行的策略。最成功的代理基于无内存的完全卷积结构,通过使用人族升起建筑物并将其移出攻击范围来避免持续损失。

接受暴雪分数训练的代理们集中在一些琐碎的策略上,这些策略只能避免分散工人单位对采矿的注意力,从而保持分数的稳定提高。(PS:光采矿也不行)因此,大多数代理的得分集中到简单地保留初始挖掘过程,而不构建更多的单元或结构(在下面提出的迷你游戏中也观察到了这种行为)。

这些结果表明,完整的星际争霸游戏是一个有趣并富有挑战性的强化学习的领域,尤其在不利用例如人类回放的其他信息来源时。

4.4.2 小游戏

正如在第三节描述的一样,可以通过定义一些集中关注某些领域的方面的一系列小游戏来避免完整游戏的复杂性(有关每个迷你游戏的粗略描述,请参阅第3节)。

我们在每个小游戏上训练我们的代理。汇总的训练结果如图6所示,与人类基线比较的最终结果可以在表1中找到。展示我们的代理的视频也可以在https://youtu.be/6L448yg0Sm0找到。

总体而言,完全卷积代理在非人类基线中表现最佳。有点令人惊讶的是,Atari-net代理似乎是涉及战斗的小游戏的强大竞争者,即FindAndDefeatZerlingsDefeatRoachesDefeatZerlingsAndBanelings。(PSAtari-net按道理时是相较于后两个较弱的)

CollectMineralsAndGas小游戏中,只有最好的卷积代理才能学会通过生产更多的工人单位并将其分配给采矿来增加初始资源收入。

我们发现造枪兵(人族开局)是最具有策略性要求的小游戏,也或许是最接近星际争霸完整游戏的小游戏。完全卷积LSTM和随机搜索在这个小游戏上实现了最好的结果,与此同时,Atari-Net代理在每一次游戏中没有学习到持续不断生产枪兵的策略。值得注意的是,如果没有地图所带来的对动作空间的限制,小游戏将会很难学习。所有的代理与大师级对手相比表现都不好,除了只需要良好的机械性和反应能力的MoveToBeacon小游戏任务————这是人工代理所期望擅长的方面。然而,在像DefeatRoachesFind And Defeat Zerglings这样的游戏中,我们的代理与DeepMind游戏测试员相比表现不错。我们的基线代理的结果表明,即使是相对简单的小游戏也会带来有趣的挑战,我们希望这些挑战能够启发新的研究。

DeepMind:星际争霸2:强化学习新挑战(翻译)_第3张图片

6:基线代理体系结构的训练过程。所示图线是游戏步数的函数平均分数。(x轴为游戏步数,y轴为平均分数)。在这里我们展示在本论文中使用的三种结构体系。(a)用于DQN的原始Atari-Net架构(b)使用convnet保存屏幕和小地图操作的空间信息的网络。(c):和(b)相同但是在一层有一个卷积LSTM

虚线展示了100次用不同参数的运行结果,实线是最好平均值的运行结果。线条是平滑的以提高可视性。

 

1:小游戏中人类基线和代理的综合结果。所有代理都接受过600M游戏步骤的训练。平均值对应于平均代理性能,最佳平均值是最佳代理在不同超参数下的平均性能,最大值对应于观察到的个体事件最高得分。

DeepMind:星际争霸2:强化学习新挑战(翻译)_第4张图片

 

总结:4.4节主要介绍了游戏的结果。首先介绍A3C算法的一些具体过程设置、具体的优化算法rmsprop、实验的次数、随机抽样选取超参数、学习率的抽取和采用线性退火方式以及APM(游戏速度)。然后从完整游戏和小游戏的结果对代理进行了简要而富有启发的阐述。

 

对于完整游戏,所有代理对阵最简单的内置AI均未获得胜利。表现最好的是单纯的完全卷积代理,其特点是飞基地止损。另外,用暴雪分数评价的缺点是使代理将注意力集中在采矿上,并没能进一步建造更多建筑与生产更多单位。(钱多也不一定能赢啊)。如何在不利用学习人类录像回放的监督学习的情况下,让代理学会玩完整的星际争霸游戏这是一个挑战。(正如AlphaZero是在没有学习任何人类棋谱的情况下,自学围棋,并最终击败看棋谱的AlphaGo)。

 

对于小型游戏任务,总的来说完全卷积代理在三个代理中表现最好。Atari-Netzai在战斗型小游戏中表现的很好。另外还总结了其他代理在不同小游戏中的特点,这些结果特点启发着新的挑战。

 

 

5.从回放中进行监督学习

      游戏回放是专业和业余玩家都使用的重要资源,他们通过回放学习新策略,发现游戏中的重大失误,或者只是喜欢将看别人玩作为一种娱乐形式。回放在星际争霸中尤其重要,因为隐藏的信息:“战争的迷雾”隐藏了所有的对手的单位,除非他们是在你的视野中。因此,在职业玩家中,回顾和分析他们玩的每一场游戏,即使他们赢了,也是标准的做法。

        监控数据的使用,如回放或人类演示,已经实现成功地实现了机器人技术[2,24]、围棋游戏[18,31]和Atari[10]。它也被用于星际争霸的背景下(如[12]),虽然不是为了训练基本的动作策略,而是为了发现建造顺序。星际争霸II提供了收集和学习大量不断增长的人类回放的机会。虽然没有集中和标准化的机制来收集星际争霸I的回放,但是通过暴雪的在线1v1天梯比赛可以随时获得大量匿名的星际争霸II游戏。此外,随着数量相对稳定的玩家不断玩新游戏,将有更多的游戏回放定期添加到此集合中。

        从重播中学习应该有助于引导或补充强化学习。单独而言,它还可以作为处理长期相关性的序列建模或内存结构的基准。事实上,要在游戏展开时理解它,必须有效地跨多个时间步骤整合信息。此外,由于部分可观察性,重放也可用于研究不确定性模型,例如(但不限于)变分自动编码器[14]。最后,比较结果/行为预测的性能,有助于指导神经系统结构的设计,并在该强化学习领域中提供合适的归纳偏差。

在本节的其余部分,我们使用第4节中描述的体系结构提供基线,但使用一组800K场游戏数据来学习价值函数(即,从游戏观察中预测游戏的获胜者)和策略(即 ,预测从游戏观察中采取的行动)。 游戏包含星际争霸II中所有可能的对决(即,我们不限制代理人参加单一比赛)(随机种族)。

 

图7:我们用于监督训练我们的策略和价值网络的回放集的统计数据。 (左)作为APM函数的玩家匹配等级(MMR)的分布。 (右)按人类玩家使用概率排序的动作分布。

图7显示了我们使用的重放的统计数据。 我们总结了一些最有趣的统计数据:1.通过比赛制作评级(MMR)测量的球员技能水平,从休闲玩家,高端业余,直到职业选手。 2.平均每分钟动作次数(APM)为153,平均MMR为3789. 3.重放没有过滤,而是使用在战网上玩的所有排位赛。4.不到百分之一是来自顶级选手的大师级比赛回放。 5.我们还显示了按人类玩家使用频率排序的动作分布。 最常见的动作,占43%时间的动作是移动相机。 总的来说,动作分布具有重尾部,其具有一些常用动作(例如,移动摄像机,框选,攻击屏幕)和不经常使用的大量动作(例如,构建工程站)。(8http://wiki.teamliquid.net/starcraft2/Battle.net_Leagues)

我们训练双头网络,预测游戏结果(1 =赢vs.0=输或平),以及玩家在每个时间步的动作。 共享网络主体使得有必要平衡两个损失函数的权重,但它也允许值和策略预测相互通知。 我们没有在监督训练设置中关联单独的游戏结果类,因为与胜利和失败相比,数据集中的关系数量非常低(<1%)。

 

5.1值预测

预测游戏结果是一项具有挑战性的任务。尽管有完全访问游戏状态(即不受部分可观察性限制,地图全开),但即使是专业的星际争霸II评论员也经常无法预测获胜者。准确预测游戏结果的价值函数是可取的,因为它们可用于减轻从稀疏奖励中学习的挑战。 从给定的状态中,训练有素的价值函数可以在看到比赛结果之前建议哪些邻近状态值得进入。

我们的监督学习设置从第4节:Atari-net和FullyConv中描述的直接基线架构开始。网络不考虑先前的观察,即,它们预测单帧的结果(这显然是次优的)。 此外,观察不包括任何特权信息:代理必须仅根据在任何给定时间步骤可以看到的内容产生价值预测(即启用战争迷雾)。因此,如果对手已设法秘密进行 产生许多对代理所建立的军队非常有效的单位,它可能错误地认为自己比它强。

 

图8:使用在屏幕和小地图特征平面上运行的网络以及标量形式地玩家统计数据预测星际争霸游戏结果的准确性。 (左)三种不同网络架构的训练曲线。 (右)游戏时间的准确性。 在游戏开始时(2分钟之前),网络准确率达到50%(相当于输或赢的机会)。 这是意料之中的,因为游戏早期的结果不太清楚。 到15分钟时,网络能够在65%的时间内正确预测胜利者。

第4节中提出的网络独立地产生了动作识别器及其参数。 然而,通过调节基本动作,例如建立额外的基地而不是移动军队,可以提高预测屏幕上的点的准确性。 因此,除了Atari-net和FullyConv架构之外,我们还有arFullyConv,它使用第4.2节中介绍的自动回归策略指导,即使用函数标识a0和先前采样的参数a

在星际争霸II的所有可能的对决中,网络都经过20万步梯度下降训练。 我们使用从所有时间一致的重放中随机抽取的64个观察结果的小批量训练数据集进行训练。 使用8的乘数步长对观测值进行采样,与强化学习设置一致。 屏幕和小地图的分辨率为64×64。 每个观察包括屏幕和小地图空间特征层以及玩家统计数据,例如人口上限和收集晶体矿数量,这些都是玩家在屏幕上所能看到的。我们使用90%的重放作为训练集,以及从其余10%的回放中提取的0.5M帧的固定测试集。 随着训练的进行,针对该测试集不断地评估代理性能。

图8显示了训练步骤的平均准确度以及作为游戏时间函数的训练模型的准确性。 随机基线将在大约50%的时间都在纠正(?),因为游戏在所有种族相对平衡,并且平局非常罕见。 随着训练的进行,完全卷积架构的准确率达到64%。 此外,随着游戏的进行,价值预测变得更加准确,如图8(右)所示。 这反映了星际争霸I [9]的先前工作成果。

 

5.2 策略预测

训练预测值的同一网络具有单独的输出,输出用于预测用户发出的动作。 我们有时会将网络的这一部分称为策略,因为它可以很容易地部署来玩游戏。

有许多方案可以用来训练网络模仿回放中的人类行为。这里我们使用一种简单的方法,与第4节中的强化学习工作直接连接。

 

表2:基本操作和屏幕/小地图参数的策略前1和前5精度。 arFullyConv指的是FullyConv的自回归版本。随机基线是随机初始化权重的arFullyConv。

在训练我们的政策时,我们以8帧的乘数固定步长对观测值进行采样。我们将每8帧内发出的第一个动作作为策略的学习目标。 如果在此期间没有采取任何行动,我们将目标定为“无操作”,即一项无效的特殊动作。

当人类玩“星际争霸II”时,在任何给定时间内只有所有可能动作的子集可用。 例如,仅在当前选择兵营时才启用“建造枪兵”。 网络不应该需要学习避免非法行为,因为这些信息随时可用。 因此,在训练期间,我们会过滤人类玩家无法使用的操作。为此,我们采用过去8帧的所有可用操作的集合,并应用一个掩码,将所有不可用操作的概率设置为接近零。

请注意,如前所述,我们训练策略以参与所有可能的对决。 因此,原则上,代理可以参加任何比赛。 但是,为了与第4节中研究的强化学习代理保持一致,我们报告了单人族与人族对战中的游戏内指标。

表2显示了不同架构在预测动作标识符、屏幕和小地图参数方面准确性的不同表现。正如预期的那样,完全卷积和自动回归完全卷积架构在空间参数方面的性能都要好得多。此外,a自动回归完全卷积体系结构的性能优于完全卷积,这可能是因为它知道哪些参数将用于特征识别。

如果直接将训练的策略插入到游戏中,代理则可以生产更多的单位,并根据观察到的回放数据发挥更好的作用,如图9和视频https://youtu.be/weozide5xfc所示。它还胜过所有在第4节中训练过建造枪兵的简单小游戏的代理,该小游戏具有受限的行动空间,相比之下,监督的策略是玩一个不受限制的完整1v1游戏。这些结果表明,监督模仿学习可能是一个引导星际争霸二号代理的有前途的方向。未来的工作应该通过加强对我们真正关心的目标(即游戏结果)的强化学习来直接培训,从而改进对初始策略的模仿。

 

图9:随着训练策略网络的进展,在训练数据上建立部队的概率。游戏设置是人族对人族。(左)在游戏中建立任何部队的概率。(右)每场比赛建立的部队平均数量。

 

 

6. 结论和未来工作

本文介绍了星际争霸II作为深度强化学习研究的新挑战。 我们提供免费的Python接口的详细信息,以及通过暴雪的官方战网天梯排名比赛中收集的回放数据。 通过这个初始版本,我们描述了针对策略和价值网络的在人类比赛回放数据上的监督学习结果。我们还描述了七个小游戏和完整游戏中直接基线强化学习代理的结果。

我们主要把小游戏当作单元测试。也就是说,如果要在整个比赛中取得成功,强化学习代理应该能够相对轻松地在这些方面达到人的水平。建立额外的小游戏可能很有指导意义,但我们将整个游戏(根据最终结果进行评估)视为最有趣的问题,并希望首先鼓励对其进行研究,从而得出解决方案。

虽然代理一些小游戏的表现接近专业人类玩家,但我们发现,正如预期的那样,目前最先进的基线代理无法在完整游戏中学会赢得最简单的内置AI。 这不仅在游戏结果(即-1,0,1)被用作奖励信号时,而且在每个时间步(即,由暴雪提供的本机游戏得分)提供成型的奖励分数时也是如此。 从这个意义上说,我们提供的环境提出了一个如何规则化、外部定义,也是现成的基线算法的完全难以处理的挑战。

这个版本简化了人类玩游戏的几个方面:1.观察在给予代理之前进行了预处理,2。动作空间已经简化为更容易被强化学习代理使用而不是使用人类使用的鼠标点击和键盘设置,3.它以锁定步数玩游戏,以便代理可以在每个时间步长而不是实时计算他们需要的时间,并且4.完整游戏只允许对阵内置AI。 然而,我们认为构建能够在人类的地盘上发挥像最佳人类玩家表现一样的代理才是真正的挑战,即使用RGB像素观察和严格的时间限制。 因此,未来的发布可能会改变上述简化,并使自己能玩,使我们朝着培养人类认为是公平对手的代理的目标迈进。

参考文献看原文

 

 

翻译后记

作为一个忠实的星际争霸II爱好者和即将毕业的CS(IS)大学生,我有一天看到DeepMind开发的AlphaStart以10:1的比分击败人类职业选手的新闻,感到很好奇,由此想了解一下其中的奥妙,恰逢准备考研复试,要考察英文论文能力,遂决定翻译此论文以锻炼英语水平。

翻译的过程很艰难,刚开始有很多单词不懂,只能一个个词谷歌或百度,翻译的效率也很低,通常半天只能翻译几段话,并且有一些从未见过的CS专有名词也得百度、知乎、谷歌或Quora。另外,翻译软件也有很多问题,例如bdfy经常太过于中国话而没有忠实于英文原文,谷歌翻译虽然准确,但是有些介词、定语位置翻译不好,有时又会应为单词紧靠在一起而误翻。因此,只能翻译之后,不断的手动比较和校对。

过程虽然艰难,但收获很多,在翻译的同时,我不仅进一步深入了解星际争霸II这款游戏,而且算是打开了强化学习的大门,为以后的学习铺上道路。

另外,关于PySC2的进一步实践探索也没停下脚步:

DeepMind:星际争霸2:强化学习新挑战(翻译)_第5张图片

希望有兴趣的小伙伴可以一起交流学习!

你可能感兴趣的:(学习笔记,DeepMind,RL,星际争霸2)