OpenAI 一直致力于用深度强化学习战胜《Dota 2》的人类玩家,目前 OpenAI Five 勉强达到了职业玩家水准。而由于游戏主体数量更多(几十到数百)、观察空间以及动作空间巨大,《星际争霸 II》的游戏难度实际上比 Dota 2(5 个游戏主体)更高,目前 AI 仅在「星际争霸 II 学习环境」的多个小游戏上达到专业水平。近日,腾讯 AI Lab 等利用深度强化学习开发出了能在《星际争霸 II》全场游戏中打败「开挂」内置 AI 的智能体(深海暗礁地图,虫族 1 对 1),这个「开挂」AI 的能力相当于暴雪战网(Battle.net)天梯排名系统中前 30% - 50% 的人类玩家。
最近,深度学习与强化学习的结合为许多棘手问题的决策系统带来了重大突破。深度强化学习从头开始训练(或从预训练的模型开始训练),馈入的(几乎)都是原始的观察特征,在一大批应用中表现出了令人惊艳的性能,包括玩围棋游戏 [6, 7]、玩电子游戏(如 Atari [8]、第一人称射击游戏 Doom/ViZDoom [9, 10] 或 Quake/DeepmindLab [11]、Dota 2 [12])、机器人视觉运动控制 [13] 及机器人巡航 [14, 15] 等。学到的策略/控制器运行效果出人意料,有时甚至超越人类 [8, 7]。
然而,《星际争霸 II》,这一被公认为最具挑战性的 RTS 游戏还一直没有被 AI 攻克。在这款游戏中,人类玩家必须控制数十至数百个单位(unit)来实现各种目的,如收集两种资源、扩展额外资源、更新技术、组建其它单位、派遣队伍进行攻击或防御、对战斗中的每个单位实施微观管理等。这是《星际争霸 II》比 Dota 2 难的关键原因之一,后者的单位总数要控制在 5 个以内(分别由 5 个玩家控制)。图 1 是人类玩家互动的截图。对手对玩家隐藏,除非对手的单位出现在玩家的视野范围内。因此,玩家需要派遣单位侦察对手的策略。所有决策都要实时做出。在设计 AI 智能体方面,《星际争霸 II》包含很大的观察空间、巨大的动作空间、局部观察、多玩家同时游戏、长期决策等。所有这些因素都增加了《星际争霸 II》的难度。为了扩展 AI 能力的边界,Deepmind 和 Blizzard 联合推出了「星际争霸 II 学习环境」(StarCraft II Learning Environment,SC2LE)[16]。Deepmind 的近期研究成果 [16, 17] 显示其 AI 智能体能够在多个小游戏中达到职业选手的水平,但要在全场游戏上达到专业水平还有很长的路要走。
图 1:《星际争霸 II》游戏中人类玩家操控单位的截图。
为了在全场游戏中开展研究,本文作者将研究限制在以下环境中:深海暗礁地图上的 1 对 1,虫族对虫族。他们开发了两个 AI 智能体——智能体 TStarBot1 基于平面动作(flat action)的深度强化学习,智能体 TStarBot2 基于分层动作(hierarchical action)的规则控制器。TStarBot1 和 TStarBot2 都能够在全场游戏中击败水平从 1 级到 10 级的内置 AI 智能体。注意,8、9、10 级内置 AI 都作弊了:8 级拥有对整个地图的完整视角;9 级的资源收获增加,而 10 级则前两者都有。另外,根据《星际争霸 II》论坛里的一些非正式讨论,10 级内置 AI 智能体被估计为白金级至钻石级 [1],相当于暴雪战网(Battle.net)Leagues 排名系统中排名前 30% - 50% 的人类玩家。
具体而言,TStarBot1 基于「平面」动作建模,它会展平动作结构并生成一系列离散的动作。通过这种方式,TStarBot1 能马上为任何现成的 RL 算法做好准备,并将离散动作作为输入。TStarBot2 基于「深度」动作建模,这令我们可以手动指定动作的层级。「深度」建模直观上更好地捕捉了动作依赖关系,并具有倍增的表达能力。然而,由于复杂的分层 RL 可能会参与其中,训练将更具挑战性。请注意这种权衡,在这项初步研究中,研究者为 TStarBot2 采用了基于规则的控制器。
论文:TStarBots: Defeating the Cheating Level Builtin AI in StarCraft II in the Full Game
论文链接:https://arxiv.org/pdf/1809.07193.pdf
摘要:《星际争霸 II》(SCII)被公认为是目前最具挑战性的即时战略(RTS)游戏,因为它具有很大的观察空间、巨大的(连续和无限)动作空间、局部观察、多玩家同时游戏模式、长期决策等。为了扩展 AI 的能力边界,DeepMind 和暴雪联合推出了「星际争霸 II 学习环境」(SC2LE)——一个设计复杂决策系统的测试平台。SC2LE 提供了一些小型游戏,如 MoveToBeacon、CollectMineralShards、DefeatRoaches。虽然在这些游戏中,一些 AI 智能体达到了专业玩家的水平,但它们离在全场游戏中达到专业水平还有很远的距离。为了启动全场游戏中的调研,我们开发了两个 AI 智能体:智能体 TStarBot1 基于平面动作结构上的深度强化学习;智能体 TStarBot2 基于分层动作结构上的规则控制器。TStarBot1 和 TStarBot2 都能在全场游戏中击败水平 1 到 10 级的内置 AI 智能体(在深海暗礁地图里,虫族 1 对 1),注意在全场游戏中,8、9、10 级的智能体作弊了:8 级拥有对整个地图的完整视角;9 级的资源收获增加,而 10 级则前两者都有。具体来说,TStarBot1 采用一组平面宏观动作,在这些动作上,单个控制器通过强化学习进行训练;TStarBot2 采用分级组织的宏微观混合动作,并依赖硬编码专家规则的控制器。
据我们所知,这是第一次公开调查能够在《星际争霸 II》全场游戏中击败内置 AI 的智能体。代码将开源 [3]。我们希望本研究提出的框架在这些方面有益于未来的研究:1)成为混合系统的基线,在该系统中越来越多的学习模块将逐渐被采用,规则仍然被用来表达难以学习的逻辑;2)生成用于模仿学习的轨迹;3)成为自我对抗(self-play)训练的对手。
TStarBot1:基于宏观动作的强化学习智能体
图 2:基于宏观动作和强化学习的智能体架构概览。
如图 2 所示,顶部:基于宏观动作的可学习控制器;底部:165 个可执行宏观动作,硬编码了游戏规则的先验知识(例如,技能树),并对控制器隐藏了琐碎的决定因素(例如,构建布局)和一些执行细节。图中还展示了两个宏观动作的定义作为示例:BuildRoachWarren 和 ZoneAAttackZoneI。
表 1:165 个宏观动作的总结:分类、示例和硬编码规则/知识。在最右列,RandUnit 表示随机选择一个主体单元; RandPlacer 表示随机选择一个有效的放置坐标。
TStarBot2:一个基于分层宏观-微观行动的智能体
基于宏观动作的智能体 TStarBot1 可能存在局限。尽管宏观动作可以按功能分组,单个控制器必须基于整个动作集合来工作,其中这些动作在每个决策步骤是互相排斥的。此外,当预测采取哪个策略时,共同观察(对于动作组是不可知的)被馈送给控制器。这给控制器训练带来了不必要的困难,因为不想要的信息可能会影响观察和动作。另一方面,宏观动作本身并不对微观动作(即,每个单元的控制)控制产生影响,当我们想使用多智能体类型的方法时,这变得很不灵活。因此,我们尝试了一系列不同的行动,如图 3 所示。
图 3:宏观-微观分层动作总览
写代码的时候,我们将每个控制器封装为一个模块。模块以类似于 UAlbertaBot 的方式组织,如图 4 所示。
图 4:基于宏观-微观分层行动的智能体模块图。
实验
我们在 1v1 虫族对虫族的全场比赛中分别测试 TStarBot1 和 TStarBot2 智能体。具体来说,智能体需要和等级 1(最简单)到等级 10(最困难)的内置 AI 进行比赛。我们使用的地图是深海暗礁模式,据报道在该地图中,在原始 PySC2 观察/动作上,一般 A3C 智能体与内置 AI 进行人族 vs 人族全场比赛时表现不佳。
图 5:TStarBot1 使用 PPO 算法的学习曲线。注意 TStarBot1 - PPO 在大约 30M 帧后开始打败等级 2(简单)的内置 AI(至少 75% 的胜率),打败等级 4(困难)、等级 6(非常困难)、等级 9(资源作弊)、等级 10(疯狂作弊)则分别是在大约 250M 帧、800M 帧、2000M 帧、3500M 帧的时候。
表 2:TStarBot1 和 TStarBot2 智能体在不同难度等级下和内置 AI 比赛的胜率(%)。对于 TStarBot1,我们报告了使用 DDQN、PPO 和随机策略的比赛结果。每个胜率通过对使用不同的随机种子在 200 场比赛的结果取平均值得到,其中允许使用战争迷雾。
表 3:TStarBot vs 人类玩家。每个项表示 TStarBot1/TStarBot2 的胜利/失败场数。
图 6:关于 TStarBot1 战争时机的学习策略:Rush 和经济优先。
理论 腾讯AI Lab 强化学习 星际争霸
相关数据
Deep reinforcement learning
强化学习(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)学习控制策略(如游戏策略),而无需人工提取或启发式学习特征。这种结合了深度学习的强化学习方法称为深度强化学习。
来源: Scholarpedia
Imitation learning
模仿学习(Imitation Learning)背后的原理是是通过隐含地给学习器关于这个世界的先验信息,就能执行、学习人类行为。在模仿学习任务中,智能体(agent)为了学习到策略从而尽可能像人类专家那样执行一种行为,它会寻找一种最佳的方式来使用由该专家示范的训练集(输入-输出对)。
来源:机器之心
Logic
人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。
来源:机器之心
prior knowledge
先验(apriori ;也译作 先天)在拉丁文中指“来自先前的东西”,或稍稍引申指“在经验之前”。近代西方传统中,认为先验指无需经验或先于经验获得的知识。先验知识不依赖于经验,比如,数学式子2+2=4;恒真命题“所有的单身汉一定没有结婚”;以及来自纯粹理性的推断“本体论证明”
来源: 维基百科
Reinforcement learning
强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。
来源:机器之心
Deep learning
深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。
来源: LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. nature, 521(7553), 436.
机器之心编辑
以上所述就是小编给大家介绍的《首次!腾讯的人工智能在星际争霸2中打败了「开挂」内建AI》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 星际争霸:打响分布式共享存储第一战
- DeforGAN:用GAN实现星际争霸开全图外挂!
- 多图详解 DeepMind 的超人类水准星际争霸 AI 「AlphaStar」
- 伯克利星际争霸II AI「撞车」腾讯,作者:我们不一样
- 2018 AIIDE星际争霸AI挑战赛亚军CherryPi开源TorchCraftAI
- 要玩转这个星际争霸II开源AI,你只需要i5+GTX1050
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Developing Large Web Applications
Kyle Loudon / Yahoo Press / 2010-3-15 / USD 34.99
As web applications grow, so do the challenges. These applications need to live up to demanding performance requirements, and be reliable around the clock every day of the year. And they need to withs......一起来看看 《Developing Large Web Applications》 这本书的介绍吧!