西宁网站建设平台公司,银川网站开发制作,设计好的商城网站建设网络公司,网页设计与制作教程内容大家好#xff0c;今天我们来介绍基于多智能体强化学习主宰星际争霸游戏这篇论文Grandmaster level in StarCraft II using multi-agent reinforcement learningdoi.org从Alphastar以后 利用强化学习的方法进行星际争霸2AI的又一大突破。Part1 前言游戏介绍(Introduction to…大家好今天我们来介绍基于多智能体强化学习主宰星际争霸游戏这篇论文Grandmaster level in StarCraft II using multi-agent reinforcement learningdoi.org从Alphastar以后 利用强化学习的方法进行星际争霸2AI的又一大突破。Part1 前言游戏介绍(Introduction to the Game)游戏简介 既然是打星际争霸的论文那么我们首先看下什么是星际争霸《星际争霸II》是一个实时进行的战略游戏。你可以从上帝视角观察和指挥部队争夺战场的控制权并最终击败你的对手。游戏的单人游戏战役主要聚焦于人类种族但你可以在多人游戏比赛中使用以下三个《星际争霸II》的种族的任意一个人类、星灵和异虫。每个种族都拥有其独特的单位这些单位在战场上各自有其特定的角色。结合不同的单位来组成一支多功能的部队是走向胜利的常规道路之一。你能指挥的最基础的单位是工人。他们会采集资源让你用来扩张基地以及为你日渐庞大的部队招兵买马同时他们也能建造新的建筑。一些高级单位在你的基地达到特定要求之后就会解锁你需要建造特定建筑或者研究相应的科技。在多人游戏比赛中如果你将地图上敌人的所有建筑都摧毁或者敌人向你投降那么你就赢得了比赛。视频介绍星际争霸介绍https://www.zhihu.com/video/1200527176032047104总结来说:1.《星际争霸2》是一款RTS即时战略游戏说白了就是造农民采矿、造建筑、造兵、攀科技最后派兵拆光对手的建筑。2.与围棋相比虽然都属于零和博弈但还多了不完全信息(比如对手的信息是看不到的)、输入输出状态空间更庞大、存在海量先验信息、游戏预测困难的问题。重大挑战与解决方案Major challenges and solutions)下面我们分别从游戏层面和算法层面解释这篇论文之前强化学习解决星际争霸2AI遇到了哪些问题以及这篇论文所做出的改进箭头前面表示问题后面就是该论文的解决方案与改进。游戏层面群体博弈 - League Learning星际争霸2是一个多人即时战略游戏所以涉及到群体博弈。不完全信息 - LSTM 不完全信息,对手的视野我们无法看到长期规划/回报稀疏 - TD(λ) UGPO一局游戏需要几万步决策但是最后只有一个稀疏的奖励实时控制(APM有限值)- Monitoring layer对于操作速度action per minuteAPM有限制,要接近人的操作速度超大状态空间 - self-attention scatter connection由于是end to end 的训练方法所以该模型的状态输入是每一帧图像。超大动作空间 - auto-regressive policy动作空间组合数目较多每一个动作都需要先选择一个对象比如农民选择动作的类型然后可能还需要地图中选择作用的位置比如走到某个位置最后还需要选择什么时候进行下一个动作。算法层面自博弈循环 -PFSP 对于算法层面如果采用自博弈自己和自己玩的方法来学习与更新策略的话随着学习的进行可能会出现循环。类似有向图中的闭环自博弈偏移 -baseline condition (z)如果纯使用自博弈来学习学习到的策略可能不能有效对抗人类策略。模型构建(Model Building)先来给大家一个直观的感受我们的智能体到底输入了(看到了什么)以及它是怎么认知的以及最后他输出了什么。首先输入的是小地图图像以及当前所有的兵种信息(这也是我在打星际的时候能看到的信息)通过神经网络层之后输出动作信息, (右下角就是他们选中的动作)其中包括选中谁、去哪里、去干什么等动作下面我们来看一下整个模型的网络结构。Part 2 网络结构网络结构介绍网络结构 整体上使用AC框架与强化学习中使用AC的Cartpole对比Alphastar不是一般的将输入放在一起输入一个CNN而是对于不同的输入类型进行不同的操作经过不同的网络输出。 总的来看输入有基准特征(baseline features)标量特征(scaler features)实体列表(entities)和minimap组成。 值函数网络输出数值而策略网络输出了五项内容。他们具体是什么我们接下来具体分析。 Alphastar的网络结构设计的很精妙。我认为他的设计思路是对于一般特征的提取就用多层感知器对于图像信息的处理它使用计算机视觉中常用的特征提取网络比如残差网络在所有用到了entities list的地方它很巧妙的利用了entities序列和句子序列的相似使用NLP中处理句子的模型提取实体列表的特征。价值函数网络价值网络 z论文中称它为statistic vector从代码来看应该是从不同人类玩家l历史数据中抽取出来的建造顺序以及单位、建筑、升级的顺序等信息。 Sc2的特点是Long term strategy 对于初始状态很敏感联系密切。单独学习人类前20个建造物顺序可以大大减小可能的状态动作空间加速收敛。 此外从结果分析可以看出加入观测的对手信息效果提升明显。 Baseline feature的概念受限于本人水平有限加上论文中并没有详细说明。我认为有两种解释引用的是Counterfactual Multi-Agent Policy Gradients论文中的反事实基线的概念具体可以参见PPT中的COMA论文baseline中的base是指以人类为基础进行学习 策略函数网络策略网络注意Alphastar不看主屏幕只看小地图小地图单位列表标量信息时间种族科技情况人口情况已经包含了所有信息策略网络不同于Alphago只有前几手的棋盘。Alphastar存储过去的所有信息将每一个time_step输入到LSTM赋予各个时间段observation和action时序性。论文中的提到的 包含过去所有时刻的obs和action信息 就是 每个time step都按次序输入LSTMLSTM使得这个模型可以记住过去做的事情Eg: 一些建筑物只需要在初期建造 即使它以后被拆除有了LSTM即使entity list里面没有了也不再建了 时间序贯性很重要Transorformer不必多说BERT肯定大家都听说过非常火。在这里可以认为是输出了一个考虑了各个元素之间依赖的新的list。List的成员和输出词汇表数据库有关没有查到相关资料动作属性动作属性表查阅开源的Pysc2平台文档得知动作class下有5个属性。框架总览总体框架首先根据所有信息 选择action typewhat 通过MLP确定delay(when) 同样使用MLP确定是否要加入队列。因为APM有限制有一些动作不能被立即执行要加入Quene等待以后的时间执行。 对于动作的执行者(Which)使用Pointer Network直接获取entities作为inputoutput一个pointer直接指向input的一个元素。至于为什么选择Pointer network笔者一开始甚至没有听说过pointer network。经过查阅资料认为原因如下 Attention和pointer类似传统的带有注意力机制的seq2seq模型的运行过程是这样的先使用encoder部分对输入序列进行编码然后对编码后的向量做attention最后使用decoder部分对attention后的向量进行解码从而得到预测结果。但是作为Pointer Networks得到预测结果的方式便是输出一个概率分布也即所谓的指针。 也就是说传统带有注意力机制的seq2seq模型输出的是针对输出词汇表的一个概率分布而Pointer Networks输出的则是针对输入文本序列的概率分布。 对于施法者选择因为candidates是inputs的子集选择pointer Network更加高效。对于被执行者的选择(Who)需要location或者entities的信息。对于entities序列我们使用NLP方法处理对于locations图片信息我们使用CV方法处理。下面我们来介绍该模型训练的方法Part 3 训练部分 AlphaStar的训练过程最概括的表示是先进行基于人类数据的监督学习然后再进行使用联盟方法的强化学习。联盟学习图解全图流程监督学习 通过匹配对抗(联盟学习)进行强化学习 AlphaStar。后文会对此进行更详细解释说明。监督学习AlphaStar的监督学习目标是学习人类对单位的操作以及建筑建造的操作。其中建筑建造的单元和顺序需要单独列出来训练因为很多情况下一些操作必须要有一些建筑作为前提。监督学习上图为论文给出的训练结构图。其中 表示人类的观察数据小地图数据 代表着建筑操作的建造单元和建造顺序阅读其伪代码可以发现对于建筑单元和顺序的学习是有选择性的学习在下文会对此进行解释。 代表人类的实际操作动作。可以看出AlphaStar会根据小地图数据 和建造操作数据 行学习并且以人类的操作 作为标签进行训练得到合适的输出 的神经网络。经过训练后其得到的是三个种族的神经网络各一个。通过阅读伪代码我们还了解到一些新的细节。 AlphaStar先使用较高技术的人类数据MMR3500并且使用较高的学习 率进行快速学习然后使用极高技术的人类数据MMR6200并且使用较低的学习率( )进行微调学习。 进行监督训练时使用交叉熵损失MLE和L2规则损失共同作为损失函数进行训练。伪代码中 。对于 其会选择性的学习。其具体过程是首先读取人类游戏回放数据并且读取建筑单元build unit和建筑单元顺序build order数据存入z列表之后其有一定概率舍弃一些建筑单元和顺序的数据。在伪代码中其读取建筑数据Bo建筑顺序和 建筑单元然后又初始化两个等长度的随机True-False数组 和 然后分别将 与 相乘 与 相乘作为最后输出的建造数据 。每个智能体的强化学习首先要注意的是此部分所介绍的是每个智能体的强化学习。AlphaStar的强化学习目标是基于AC框架通过不断的与其他玩家实际上是其他智能体或者自身后面会有详细介绍的对抗来进行学习。强化学习上图为给出的训练结构图其中 代表人类的建造单元和建造顺序防止智能体的建筑操作偏离人类情况。 代表智能体观察到的信息小地图图片。 代表对手的一些信息用于辅助训练防止偏差过大。 代表用于训练奖励由 与 组合而成。 代表伪奖励其基于人类数据 生成在后面会对其作用进行详细介绍。 代表最终的胜利/平局/失败的奖励对抗结果。训练流程如下AlphaStar会将自身观察的数据信息 输入AC框架下的神经网络为了降低方差其也会将对手的信息 输入网络输出策略 和值函数 。对于策略其通过以相比监督学习网络输出的策略 的 散度、基于R_t使用V-Trace和UPGO的方式更新。对于值函数其通过基于 的TD( )方式更新。其中细节性的技术内容将在后文有详细介绍。AlphaStar的群强化学习个人认为群强化学习思想是AlphaStar最为核心的思想。群强化学习群强化学习的核心思想是创建一个联盟League联盟内有很多个体通过不断的让联盟内部的个体之间相互对抗来进行强化学习训练使得每个个体都能得到提升。经过不断的内部对抗其得到的不是一个极度强大的个体而是一个十分强大的群体。AlphaStar的联盟智能体在AlphaStar的训练中其创建了四类个体。四类个体分别为主探索智能体Main Agents、主探索者Main Exploiters、联盟智能体League Exploiters和历史参数个体Past Players。联盟智能体 主智能体 意义最核心的智能体是最终输出的AlphaStar。 特征对抗对手全部历史个体、主探索者、主智能体。 定期存储自身参数为一个player并加入到Past Players中。 使用PFSP的方式匹配对手。PFSP是一种为了高效率学习的匹配极值。在其伪代码中每一个个体包括历史个体与当前的三类智能体个体都会记录与其他个体对抗的胜率主智能体会优先选择胜率低的个体对抗。主观上的理解就是与菜鸟对抗可能学不到什么知识但是和大佬对抗就很可能学到新技巧。 主探索者 意义用于寻找主智能体的弱点。特征定期存储自身参数为一个player并加入到Past Players中。每存储一次自身参数就会把自己还原为监督学习的参数。对抗对手主智能体、主智能体的历史个体。 联盟智能体 意义用于寻找整个群体的弱点。特征定期存储自身参数为一个player并加入到Past Players中。没存储一次自身参数就有25%概率将自己还原为监督学习的参数。 对抗对手全部历史个体。 历史个体 意义用于存储智能体的历史参数。通过对伪代码的阅读我们对联盟学习的框架进行了进一步的总结实际上与上文中的框架图表达意义一致每个智能体的大小可以代表其强度也可以理解为时间先后关系越早越小。每个主智能体都会向Past Players中添加自身的历史参数。主智能体会与主探索智能体、主智能体、全部历史参数个体对抗。主探索者会与主智能体、主智能体的历史参数对抗并且其每次存储参数都会还原自身参数为监督学习参数。联盟探索者会与权力历史参数个体对抗并且每次存储参数都有25%概率回还原自身参数为监督学习参数。AlphaStar联盟学习的技巧解释 定期存储自身参数为一个player并加入到Past Player并且使用PFSP方式学习实际上通过记录历史参数并与其对抗的方式可以使智能体克服追逐循环的情况即很容易出现A战胜BB战胜CC又战胜A。 联盟智能体和主探索智能体会将自身参数还原为监督学习的参数因为智能体很可能会学习到一种很小众且有明显弱点的策略但是其能够很好的击败一些智能体——即偏离人类的认知。因此需要对其参数进行还原。至于主智能体其是最终的输出智能体因此不能还原为监督学习的参数。 智能体的匹配机制智能体会根据目标来匹配的对手。主智能体是最终的输出目标因此必然要有极强的能力即能够打败全部的个体主探索者是为了在人类的基础上找到主智能体的弱点因此对手均为主智能体及其历史联盟探索者是为了在人类的基础上找到系统群体的弱点因此对手均为全部的历史参数。实际上通过对伪代码的阅读我们发现匹配机制要更加复杂。如有兴趣建议阅读其伪代码中的匹配函数。 联盟学习中的匹配的方式是为了更高效的学习而不是简单的随机。比如主探索者在匹配对手时会先观察其对主智能体的胜率——如果较低则其余主智能体对抗否则其会选择主智能体的历史中胜率较低的个体对抗。下面我们来介绍一下本文的技术细节与成果分析Part 4 技术细节 成果分析首先我们回到论文中强化学习的流程示意图看看这上面都写了哪些高级的技术KL散度首先论文中用了KL技术来将人类策略和智能体学习到的策略来进行比较。那么什么是KL呢一下摘自百度百科相对熵relative entropy又被称为Kullback-Leibler散度Kullback-Leibler divergence或信息散度information divergence是两个概率分布probability distribution间差异的非对称性度量。在在信息理论中相对熵等价于两个概率分布的信息熵Shannon entropy的差值。还是不太懂。那么看一下KL散度的公式离散形式与连续形式结合百科上面的介绍我们可以知道P(x)和Q(x)是两个分布KL散度就是通过上面这两种形式的公式来衡量P(x)和Q(x)这两个分布的差异性。另外KL散度还有一个性质非负性所以我们可以通过在数值上尽量减小KL散度的方式来使理论分布去逼近真实的分布。在AlphaStar中理论分布是指通过神经网络输出的分布真实分布是指人类的策略分布。TD(λ)在得到累积回报之后智能体是如何利用这些累积回报来更新值函数的呢由流程图所示论文中用了TD(λ)算法。TD(λ)的更新算法如下所示 其中 可以看到TD(λ)实际上是传统时间差分方法与蒙特卡洛方法的融合当λ0时只有当前的状态值更新 当λ1时值函数的更新总量与蒙特卡洛方法相同 伪奖励图中的立即回报Rewards经过求和等操作后变成累积回报然后经TD(λ)方法去更新值函数。实际上这里的立即回报不仅仅是真实的奖励而且包括伪奖励Pseudo Rewards图中没有写但是论文里有提及。 什么是伪奖励呢我翻遍了全网也没见到有很多大神讲解这一块儿。按照我对原论文的理解大概可以这么想如图所示智能体在状态St下选择了动作a红色的那条线到达了后继状态St1并获得回报Rt1。实际上从状态St可以转到四个不同的后继状态但是在一次试验中智能体只能转到这后继四个状态中的一个所以只能利用一个后继状态St1和回报Rt1去更新当前状态St。 从利用状态和回报的角度来看上述的指利用真实回报的更新方式似乎有些浪费没有充分利用上下文信息。从AlphaStar的角度来看缺少伪奖励的设置可能会使得智能体的神经网络参数偏离人类的大方向并且过早地收敛。如果可以通过某种方法使得智能体在一次实验中同时得到这四个后继状态的反馈岂不是能大大增加对状态和回报的利用效率 这就是设置伪奖励的出发点在更新值函数v(St)时不仅利用真实的奖励同时为其他几个没有经过的状态设置伪奖励让真实奖励和伪奖励一起去更新值函数。伪奖励的设置一般会稍大于真实的奖励从而鼓励探索避免过早的收敛。至于伪奖励的细节请参阅Pseudo-reward Algorithms for Contextual Bandits with Linear Payoffff Functions这篇论文。V-trace IMPALA智能体利用累积回报去更新策略π和值函数v的框架是IMPALA框架。什么是IMPALA呢IMPALA是一个深度强化多任务学习架构是A3C框架的一个改进版。IMPALA使用收集经验的体系结构并将收集到的经验进一步传递给计算梯度的中央Learner从而形成一个完全独立的行为和学习模型。同时这种简单的架构也使学习者能够加速使用显卡。如图IMPALA图(已更正)图中有8个Actor和2个Learner。Actors并行地根据他们自己的策略进行采样采样得到的数据到达一定量之后就将他们传输给中心的Learner由Learner来利用这些数据进行策略梯度的计算以及策略的更新。每隔一段时间Actor们将Learner的策略参数复制过来变为自己的参数。 这样一来读者可能会问了在学习过程中Actor和Learner的策略并不完全相同如何解决这种Off-policy的问题呢别急论文中的V-trace方法就是用来解决这个问题的即减小行为动作产生的时间与Learner估计渐变时间之间的误差。V-trace的公式比较复杂详细的分析可以参见专栏。个人觉得V-trace的主要特点是里面两个类似于重要性因子的选取其中一个决定收敛到什么样的值函数另外一个决定收敛的速度。另外为了防止过早收敛V-trace方法里在Actor的梯度公式中加了一个熵作为惩罚即UPGO最后一个要介绍的技术是UPGOupgoing policy upgrade。UPGO是策略更新的一种方法在该方法中策略更新的方向为 其中 分析这个回报G的分段函数形式不难看出只有当行为动作值函数优于当前的值函数时才去更新它否则就还是使用原来的值函数通过这样的方法来保证回报的选取是一致朝着更好的方向的并且反向传播时不会太容易衰减掉。结果分析上图是论文中智能体Elo值衡量智能体能力的数值通过和历史策略打循环赛得到的分数随学习的进行而变化的图。 从左到右第一个红线AlphaStar Supervised表示只进行监督学习没有进行强化学习时的水平第二个红线AlphaStar Mid表示进行了一半强化学习时的水平32块TPU上学习27天第三个红线AlphaStar Final表示强化学习完成后的水平32块TPU上学习44天。 从上到下Main agents是我们所训练的主体其分数随学习的进行而升高League Agents由于每过一段时间都有一定的几率还原为人类策略模型的参数因此策略的水平比较分散总体上在Main agents和Main exploiters之间Main exploiters由于每过一段时间也是会被还原为人类策略模型参数因此一直保持在相对低的水平。这两张图不是很好理解以下分析摘自知乎专栏文章还弄了一个遵循特殊策略的 held-out 策略集合main agents 和该集合中策略比赛的结果如图 b 所示。这反映了策略学习的绝对效果。图 c 反映了不同 agent 对应的不同纳什均衡分布这个图有点不好理解比如 ID40 的 agent 在大概第 25 天被造出来之后在大概之后的五天里面都还会经常能够战胜后面新学到的策略但是大概在 30 天之后新产生的所有策略都完全战胜 ID40 的策略。这说明了整个策略集合的学习过程中新的策略能够完全战胜以前的所有策略而没有出现前面提到的训练过程中的循环不稳定的情况.上图是为了说明学习到的策略具有比较高的多样性。同时可以发现Main agents的多样性其实是少于League exploiters和Main exploiters的。上图定量分析了各个技术的作用。有趣的是在直觉中我们以为在其他条件相同的条件下更高的手速会给智能体带来更高的分数。但根据图g我们发现并非如此智能体的水平随着APM限制的放宽先升高后降低同时论文所设置的手速限制恰恰落在了智能体水平最高峰附近。为什么手速限制的放宽反而可能导致智能体水平降低呢论文给出的解释是APM限制的放宽使得智能体需要在相同时间内做出更多的决策这使得智能体需要学习更多的“微决策”“微操作”从而可能放慢了智能体的学习速度拉低了训练时间不变的条件下智能体的水平。