《星际2》最强AI复现计划:如何打造自己的AlphaStar(2)
时间:2019-02-14 13:47 来源:百度新闻 作者:巧天工 点击:次
这就开始脱离监督学习的范式了。系统并非一次性的完成对输入的分析,产生输出,而是试图做一个决策流,每个步骤都要根据一个本步观测(输入)得到一个相应的决策(输出)。而一个步骤的决策又会影响下一个步骤的观测。如下图所示: 它更加符合人类智能解决实际问题的方式,而游戏环境则是这类方案天然的试炼场。这也是通过人工智能程序玩游戏,在近年来获得如此关注的原因之一。事实上: 把上面流程中的“数字串原始图像”换成“星际争霸2游戏环境”, 把判定和决策的输出结果换成上面讨论过的单步宏操作, 把“截取出的图像块”换成上面讨论过的AI的对游戏的观测, 我们就基本定义好了“玩星际争霸的AI”所面对的问题。 AlphaStar面对的就是这样一个问题,我们从它的博客文章[2]提到的若干技术要素出发,对其训练方法进行解说与猜测。它使用的这套技术分为如下三个大类: 宏观训练策略 单个智能体强化学习策略 智能体的构造和训练的具体实现 拆解:AlphaStar的训练策略 1. 宏观的群体学习策略 简略地讲,AlphaStar 的总体训练过程,是一组多回合的“AI联赛”。在介绍联赛规则之前,我们先讲为什么要训练一群,而不是一个AI,来挑战星际争霸2。首先,星际争霸2本质上是一个对抗性游戏,玩家追求胜利需要考虑对手的活动,并无全局意义上的最优策略。其次,相比于围棋,星际争霸2对战场状态只能作不完全观测,且其状态空间更加庞大,导致一系列AI会各有偏好并相互克制。 对于一个的AI算法来说,强化学习任务中的诸要素,自然地分作两类:受控变量和外界环境。在学习的每个时间点,AI选择好的动作和观测结果,是两边交换信息的载体。 算法设计者须将外界环境视为黑箱,不能或不会在学习过程中加以控制。比如设计一个 AI 来挑战 Atari 主机中的某个游戏,算法设计者只能启动强化学习 AI 后从旁观察。对于星际争霸这类对战式的任务,被AI视为“外界环境”的元素,除游戏程序之外,对手一方同样满足: 不在AI的控制范围 对“本” AI 的行动作出反馈 影响游戏状态,从而影响“本” AI 在下一个时间节点取得的观测结果 因此解决方案中需要考虑对手,为此构建的学习环境中也需要包含一个对手。 AlphaStar从一个单一的“种子选手”启动联赛,每一轮挑选有潜力的互相挑战,对优胜AI略微变通后令其加入扩大联赛队伍。一轮接一轮地将联赛开展下去。启动的种子AI来自基础的监督学习:从Blizzard战网下载人类玩家对战数据,训练深度神经网络学习每局对战每个时刻的(游戏状态,玩家操作)的对应关系。(更详细的,我们猜测应该是若干步的游戏状态序列和操作流之间的对应关系) 获得启动种子后的联赛式训练见下图(取自Deepmind blog) 博客中详细介绍的是第四轮训练Network-006的过程。首先我们注意到这个训练过程能够进行就有两个前提条件:i) 本轮的Network-006是前一轮Network-004的两个变异后裔之一。ii)Network-006被选中参加本轮联赛的比赛,以绿色表示,而每一轮当中不参加比赛的AI选手以蓝色表示。无论是否参加比赛,一轮当中所有的AI选手都会被原封不动地拷贝到下一轮。 之后,Network-006本场比赛的对手选定为Network-008,设定好学习参数,就可以进行强化学习训练了。注意Network-008在这次训练中充当“陪练”的角色,其本身的网络参数不会获得调整。Network-006将Network-008当作靶子来训练,会习得专门对付008的方案。至于008的出场是根据“Matchmaking Probability”算法抽取的,大约是在随机分布的基础上,让高等级选手出场的机会略多,具体计算方式必须等论文出来才能确定。 “星际争霸AI大联盟”始终保留其历史上的所有会员,每个AI都有出场机会。这样可以避免学习终局的那些高等级AI,只会针对其它高等级AI,反而不懂如何应对菜鸟的事件。训练的时候还会给一些比较弱的人工指导,比如“初期鼓励出狂战士”等。这类指导策略也是随机选取的,为的是进一步提升下一轮联盟中AI选手的多样性。 从他们博文看来,联赛举行了800轮之多。最后一轮过后,“星际争霸AI大联盟”中存在高达877个训练过的AI神经网络。在测试阶段出战者的选择方式,则是从这些AI选手中以Nash Distribution采样。 2. 单个 AI 的训练 下面我们分析特定轮比赛中AI个体的学习问题。这是一个强化学习任务。 在“强化学习”中,AI 自行尝试输出不同的决策,训练者反馈给 AI 激励和新的数据。这些配对数据用于后期的“监督学习”,从机器在探索中得到的数据对,来学习环境输入与操作输出这两大要素之间的联系,在星际争霸2单个AI训练中,我们将这两个层面称作“强化学习探索”和“构建 AI 模型本体来学习样本数据中的关联”。 从“种子”选手开始,每个 AI 模型就继承了以前的模型从它们对战经验数据中学习到的决策策略。而首个种子选手继承的是人类选手的经验。一旦启动学习,AI 就立即面临强化学习领域经典的“守成探索不能得兼”(exploitation-vs-exploration)的问题。 根据 Deepmind 的介绍,AlphaStar 强化学习的骨干算法选用了“实干家-批评家”方法(Actor-Critic,AC)。为了加速训练以及取得稳定和可靠的效果,AlphaStar 使用了大规模并行的 AC 实现,另外结合了若干节约和利用有效经验的技巧来对付星际争霸2任务中学习远期回报的挑战。 AlphaStar 具体使用的 AC 算法是2018 年 DeepMind提出的 IMPALA 算法[5]。其设计目的是解决高度并行的大规模学习问题。运行星际争霸2这样的大型游戏环境,令 AI 与之互动产生数据,是一个昂贵的计算任务。由于在 AC 算法框架下对模型参数的求导是一个伴随剧烈波动的随机性操作,用这种方法估计出来的导数来优化策略模型,只能让策略大致上变得越来越好。这个所谓“大致”的靠谱程度,就取决于我们能不能把导数的“剧烈波动”处理得不是那么剧烈。 (责任编辑:波少) |