参与刘晓坤 张倩

伯克利星际争霸II AI「撞车」腾讯,作者:我们不一样

来自加州大学伯克利分校的研究者在星际争霸 II 中使用了一种新型模块化 AI 架构,该架构可以将决策任务分到多个独立的模块中。在虫族对虫族比赛中对抗 Harder(level 5)难度的暴雪 bot,该架构达到了 94%(有战争迷雾)和 87%(无战争迷雾)的胜率。只是腾讯等近期也在星际争霸 II 的 AI 架构上提出了模块化方法,而伯克利研究者甚至也发现二者是同期进行的研究。至于有没有撞车,看看他们怎么解释~

深度强化学习已经成为获取有竞争力游戏智能体的有力工具,在 Atari(Mnih et al. 2015)、Go(Silver et al. 2016)、Minecraft(Tessler et al. 2017)、Dota 2(OpenAI 2018)等许多游戏中取得了成功。它能够处理复杂的感觉输入,利用大量训练数据,通过自己摸索在不借助人类知识的情况下发展自身技能(Silver et al. 2017)。星际争霸 II 被公认为 AI 研究的新里程碑,但由于其视觉输入复杂、活动空间巨大、信息不完整且视野较广,星际争霸 II 仍然是困扰深度强化学习的一大挑战。实际上,直接的端到端学习方法甚至无法打败最简单的内建 AI(Vinyals et al. 2017)。

星际争霸 II 是一款实时策略游戏,包括搜集资源、搭建生产设备、研究技术及管理军队打败对手等。它的上一个版本(即星际争霸)受到了众多研究者的关注,包括分层规划(Weber, Mateas, and Jhala 2010)和树搜索(Uriarte and Ontan˜on 2016)(见 Ontan˜on et al. (2013) 的研究)。之前的多数方法都聚焦于大量手工设计,但因其无法利用玩游戏的经验,智能体还是无法打败职业玩家(Kim and Lee 2017)。

图 1:本文提出的针对星际争霸 II 的模块化架构

本文研究者认为,适当整合人类知识的深度强化学习可以在不损失策略表达性和性能的前提下有效降低问题的复杂性。为了实现这一目标,他们提出了一种灵活的模块化架构,可以将决策任务分到多个独立的模块中,包括劳工管理、构建顺序、策略、微管理及侦察等(见图 1)。每个模块可以手工设计或通过一个神经网络策略实现,这取决于该任务属于易于手工解决的常规任务,还是需要从数据中进行学习的复杂任务。所有模块向策划者推荐宏指令(预定义的动作序列),策划者决定它们的执行顺序。此外,更新者持续追踪环境信息,适应性地执行由策划者选择的宏指令。

研究者还通过带有自行探索能力的强化学习进一步评估了这一模块化架构,着眼于这个游戏中可以从大量训练经验中获益的重要方面,包括构建顺序和策略。智能体是在 PySC2 环境中训练的(Vinyals et al. 2017),该环境中有个颇具挑战性的类人控制接口。研究者采用了一种迭代训练方法,首先训练一个模块,同时其他模块遵循非常简单的脚本化行为,然后用一个神经网络策略替换另一个模块的脚本化组成,在之前训练的模块保持固定的情况下继续训练。研究者评估智能体玩虫族 v.s. 虫族对抗梯形图上的内建 bot,在对抗「Harder」bot 时取得了 94%(有战争迷雾)或 87%(无战争迷雾)的胜率。此外,该方法的智能体在延伸测试图中泛化良好,并且取得了类似的性能。

本文的主要贡献在于展示了深度强化学习、自行探索与模块化架构及适当人类知识相结合可以在星际争霸 II 上取得有竞争力的表现。虽然本文聚焦于星际争霸 II,但将该方法泛化至其他现有端到端强化学习训练范式无法解决的复杂问题也是可能的。

论文:Modular Architecture for StarCraft II with Deep Reinforcement Learning

论文链接:https://arxiv.org/pdf/1811.03555.pdf

摘要:我们在星际争霸 II 中使用了一种新型模块化 AI 架构。该架构在多个模块之间分割责任,每个模块控制游戏的一个层面,例如建造次序选择或策略。有一个集中策划者会审查所有模块的宏指令,并决定它们的执行顺序。有一个更新者会持续追踪环境变化并将宏指令实例化为一系列可执行动作。该框架的模块可以通过人类设计、规划强化学习独立地或联合地进行优化。我们应用深度强化学习技术的自我对抗来训练一个模块化智能体六个模块中的两个,在虫族对虫族比赛中对抗"Harder"(level 5)难度的暴雪 bot,达到了 94%(有战争迷雾)或 87%(无战争迷雾)的胜率。

模块化架构

表 1 总结了每个模块的作用和设计。在以下部分中,我们将详细描述我们实现的虫族智能体。请注意,此处介绍的设计只是实现此模块化体系架构的所有可能方法的一个实例。只要能与其他模块协同工作,就可以将其他方法(例如规划)合并到其中一个模块中。

表 1:在当前版本中每个模块的作用以及设计。FC=全连接网络。FCN=全卷积网络

更新者

更新者作为记忆单位、模块的通讯枢纽以及 PySC2 的入口。

为了保证 AI 和人类的公平比较,Vinyal 等人(2017)定义了 PySC2 的观察输入,使其和人类玩家看到的相似,包括屏幕的图像特征地图以及小地图(例如单位类型、玩家身份等),和一系列非空间特征,如收集矿物的总数量。由于过去的动作、过去的事件和视野外的信息对于决策很重要,但不能直接从当前观察获取,智能体需要发展高效的记忆。尽管从经验中学习这样的记忆是可能的,我们认为适当手工设计的记忆也能达到类似的目的,同时也降低了强化学习的负担。表 3 列出了更新者维护的示例记忆。一些记忆(例如构建队列)可以从过去采取的动作推断出来。一些记忆(例如友好单位)可以通过检查所有单位名单推断出来。其它记忆(例如敌对单位)需要进一步处理 PySC2 观察,并与侦察模块协作才能推断出来。

表 3:更新者维护的示例记忆。

宏指令

在玩星际争霸 II 时,人类通常从一系列的子程序中选择动作,而不是从原始环境动作选取。例如,为了构建一个新的基地,玩家识别到一个未被占领的中立基地,选择劳工,然后构建基地。这里我们将这些子程序命名为宏指令(如表 2 所示)。学习策略来直接输出宏指令可以隐藏更高级命令的一般执行细节,因此允许更高效地探索不同策略。

表 2:对每个模块可用的示例宏指令。一个宏指令(斜体字)由宏指令序列或 PySC2 动作构成(非斜体字)。更新者提供 base.minimap location、base.screen location 和 bases hotkey 等信息。

构建顺序

星际争霸 II 智能体必须平衡我们在许多需求之间的资源消耗,包括供应(人口容量)、经济、战斗单位、升级等。构建顺序模块在选择正确的构建策略方面起着至关重要的作用。例如,在游戏早期,智能体需要专注于创建足够的劳工来收集资源;而在游戏中期,它应该选择能够击败对手的正确类型的军队。尽管存在由专业玩家开发的许多有效构建顺序,在没有适应的情况下简单地执行一种顺序可能带来高度可利用的行为。智能体的构建顺序模块可以从大量的游戏经验中获益,而不是依赖复杂的 if-else 逻辑规划来处理各种场景。因此,我们选择通过深度强化学习来优化该模块。

图 2:构建顺序模块的细节。

该部分还包括了策略、侦察、微管理、劳工管理、策划者模块,详情请参见原论文。

图 3:我们的智能体在面对不同难度的对手时的胜率。星号表示在训练过程中没有见过的内建 bot。1 epoch = 3 × 10^5 策略步。

表 4:不同训练过程下和不同难度内建 bot 的最终胜率(3 个种子,每个种子 100 场比赛的平均值)。

表 5:和不同对手的胜率对比(100 场比赛)。括号里写的是预训练部分。「V」表示「非常」。从表中可以看出,我们的方法能超越简单的脚本智能体。

图 4:学习的军队组成。显示每种单位类型的总产出与战斗单位总数量的比值。

表 6:我们的智能体在不同地图面对不同对手时的胜率(100 场比赛)。我们的智能体仅在 AR 上训练。AR=深海礁岩(Abyssal Reef),DS=黑暗避难所(Darkness Sanctuary),AP=强酸工厂(Acid Plant)。

表 7:我们的智能体在深海礁岩中使用战争迷雾得到的胜率高出 10%(100 场比赛),这可能是因为学习到的构建顺序和战术可以更好地泛化到不完美信息,而内建智能体依赖于具体观察。

讨论

本研究与腾讯、罗切斯特大学和西北大学的联合研究《TStarBots: Defeating the Cheating Level Builtin AI in StarCraft II in the Full Game》同时期开展,他们也提出了分层、模块化架构,并手工设计了宏指令动作。Berkeley 的研究者解释道,二者不同之处在于,本研究中的智能体是在模块化架构下仅通过自我对抗及与几个脚本智能体对抗来训练的,直到评估阶段才见到内建 bot。

上图是 TStarBots 的评估结果(有战争迷雾)。通过和表 4 对比我们可以发现,智能体在 L-4 到 L-7 级别的虫族对虫族对抗中取得的胜率普遍高于本文的研究。此外,Berkeley 的研究者并没有让智能体和作弊级别(L-8、9、10)的内建 bot 比赛。

不过,仅仅是这种表面的比较有失公允,它们还存在很多训练设置上的区别。例如,TStarBots 使用了单块 GPU 和 3840 块 CPU,而 Berkeley 在该研究中使用了 18 块 CPU;它们使用的强化学习算法也不同。关于两项研究中使用的方法,TStarBots 的论文中提出了两种架构:TStarBot1 和 TStarBot2,它们都包含了手工定义的宏操作,并且后者还拥有双层结构,可以兼顾微操层面的训练。其中 TStarBot1 定义了 building、production、upgrading、resource、combating 等宏操作。但是,TStarBot1 并没有类似本文中提出的更新者、策划者等模块,这些模块发挥的作用有更加广泛的含义,估计这也是研究者声称其方法具备更好泛化性能的原因。

TStarBot2 双层结构。论文地址:https://arxiv.org/pdf/1809.07193.pdf

此外,南京大学近期也在星际争霸 II 上取得了不错的成绩。研究者让智能体通过观察人类专业选手游戏录像来学习宏动作,然后通过强化学习训练进一步的运营、战斗策略。他们还利用课程学习让智能体在难度渐进的条件下逐步习得越来越复杂的性能。在 L-7 难度的神族对人族游戏中,智能体取得了 93% 的胜率。这种架构也具有通用性更高的特点。

结合分层强化学习、自动生成宏动作和课程学习的架构。论文地址:https://arxiv.org/abs/1809.09095

总之,三项研究各有千秋,对架构设计的考量围绕着通用-专用权衡的主题,并且都抓住了宏指令(宏动作)定义的关键点,展示了分层强化学习的有效性。值得一提的是,这三项研究都是目前在星际争霸II 上能完成全场游戏的工作。

理论星际争霸强化学习
2
相关数据
OpenAI 机构

OpenAI是一家非营利性人工智能研究公司,旨在以惠及全人类的方式促进和发展友好的人工智能。OpenAI成立于2015年底,总部位于旧金山,旨在通过向公众开放其专利和研究与其他机构和研究人员“自由合作”。创始人的部分动机是出于对通用人工智能风险的担忧。

https://www.openai.com/
全卷积网络技术

全卷积网络最开始在论文 Fully Convolutional Networks for Semantic Segmentation(2015)中提出,它将传统卷积神经网络最后几个全连接层替换为卷积层。引入全卷积的意义在于它能实现密集型的预测,即在二维卷积下对图像实现像素级的分类,在一维卷积下对序列实现元素级的预测。

深度强化学习技术

强化学习(Reinforcement Learning)是主体(agent)通过与周围环境的交互来进行学习。强化学习主体(RL agent)每采取一次动作(action)就会得到一个相应的数值奖励(numerical reward),这个奖励表示此次动作的好坏。通过与环境的交互,综合考虑过去的经验(exploitation)和未知的探索(exploration),强化学习主体通过试错的方式(trial and error)学会如何采取下一步的动作,而无需人类显性地告诉它该采取哪个动作。强化学习主体的目标是学习通过执行一系列的动作来最大化累积的奖励(accumulated reward)。 一般来说,真实世界中的强化学习问题包括巨大的状态空间(state spaces)和动作空间(action spaces),传统的强化学习方法会受限于维数灾难(curse of dimensionality)。借助于深度学习中的神经网络,强化学习主体可以直接从原始输入数据(如游戏图像)中提取和学习特征知识,然后根据提取出的特征信息再利用传统的强化学习算法(如TD Learning,SARSA,Q-Learnin)学习控制策略(如游戏策略),而无需人工提取或启发式学习特征。这种结合了深度学习的强化学习方法称为深度强化学习。

分层强化学习技术

分层强化学习是强化学习领域中的一个分支。传统强化学习通过与环境的交互,进行试错(trial-and-error),从而不断优化策略(policy)。但是强化学习的一个重要不足就是维数灾难 (curse of dimensionality),当系统状态(state)的维度增加时,需要训练的参数数量会随之进行指数增长,这会消耗大量的计算和存储资源。 分层强化学习将复杂问题分解成若干子问题(sub-problem),通过分而治之(divide and conquer)的方法,逐个解决子问题从而最终解决一个复杂问题。这里的子问题分解有两种方法:①所有的子问题都是共同解决被分解的任务(share tasks);②不断把前一个子问题的结果加入到下一个子问题解决方案中(reuse tasks)。分层强化学习核心思想是通过算法结构设计对策略(policy)和价值函数(value function)施加各种限制(constraints),或者使用本身就可以开发这种限制的算法。

规划技术

人工智能领域的「规划」通常是指智能体执行的任务/动作的自动规划和调度,其目的是进行资源的优化。常见的规划方法包括经典规划(Classical Planning)、分层任务网络(HTN)和 logistics 规划。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

推荐文章
暂无评论
暂无评论~