Update chapter13.md

This commit is contained in:
Yiyuan Yang
2022-09-20 01:57:07 +08:00
committed by GitHub
parent 0647bdf6c7
commit 315a74e9cf

View File

@@ -1,170 +1,220 @@
# AlphaStar 论文解读
## AlphaStar及背景简介
## AlphaStar及背景简介
相比于之前的深蓝和go对于星际争霸2等策略对战型游戏使用AI与人类对战难度更大。比如在星际争霸2中操作枯燥是众所周知的要想在PVP中击败对方,就要学会各种战术,各种微操和Timing。在游戏中你还得侦查对方的发展做出正确判断进行转型,甚至要欺骗对方以达到战术目的。总而言之,想要上手这款游戏是非常困难的,对不起,DeepMind做到了。
相比于之前的深蓝和AlphaGo对于星际争霸Ⅱ》等策略对战型游戏使用AI与人类对战难度更大。比如在星际争霸Ⅱ》中,要想在玩家对战玩家的模式中击败对方,就要学会各种战术,各种微操和掌握时机。在游戏中玩家还需要对对方阵容的更新实时地做出正确判断以及行动,甚至要欺骗对方以达到战术目的。总而言之,想要让AI上手这款游戏是非常困难的。但是DeepMind做到了。
AlphaStar是DeepMind公司与暴雪使用深度强化学习技术进行PC与星际争霸2人类玩家进行对战的产品,其近些年在星际争霸2中打败了职业选手以及99.8%的欧服玩家而被人所熟知。北京时间2019年1月25日凌晨2点暴雪与谷歌DeepMind团队合作研究的星际争霸人工智能“AlphaStar正式通过直播亮相。按照直播安排AlphaStar与两位《星际争霸2》人类职业选手进行了5场比赛对决演示。加上并未在直播中演示的对决在人类vs AlphaStar人工智能的共计11场比赛中人类取得了场胜利。DeepMind也将研究工作发表在了2019年10月的Nature杂志上。我们也将对这篇Paper进行深入的分析,下面是论文的链接:
AlphaStar是DeepMind与暴雪使用深度强化学习技术实现的计算机与《星际争霸Ⅱ》人类玩家对战的产品,其因为近些年在星际争霸Ⅱ》比赛中打败了职业选手以及99.8\%的欧服玩家而被人所熟知。北京时间2019年1月25日凌晨2点暴雪公司与DeepMind合作研发的AlphaStar正式通过直播亮相。按照直播安排AlphaStar与两位《星际争霸》人类职业选手进行了5场比赛对决演示。加上并未在直播中演示的对决在人类对阵AlphaStar的共计11场比赛中人类取得了1场胜利。DeepMind也将研究工作发表在了2019年10月的 *Nature* 杂志上。本章将对这篇论文进行深入的分析,有兴趣的读者可以阅读原文。
[Vinyals, Oriol, et al. "Grandmaster level in StarCraft II using multi-agent reinforcement learning." Nature (2019): 1-5.](https://www.nature.com/articles/s41586-019-1724-z?)
## AlphaStar的模型输入和输出是什么呢————环境设计
## AlphaStar的模型输入输出是什么?——环境设计
构建DRL模型的第一部分就是构建输入输出对于星际争霸2这个复杂的环境paper第一步做的就是将游戏的环境抽象成为许多的数据信息。
构建深度强化学习模型的第一步就是构建模型输入输出,对于《星际争霸Ⅱ》这一个复杂的环境,文章第一步就是将游戏的环境抽象成众多独立的数据信息。
### 状态(网络的输入)
AlphaStar将星际争霸2的环境状态分为部分,分别为实体信息Entities、地图信息Map、玩家数据信息Player data、游戏统计信息Game statistics
AlphaStar将星际争霸Ⅱ》的环境状态分为4部分,分别为实体entities信息、地图map信息、玩家数据player data信息、游戏统计game statistics信息如图13.1所示
![img1](img\13.1.png)
<div align=center>
<img width="550" src="img\13.1.png"/>
</div>
<div align=center>图 13.1 环境状态的构成</div>
- 第一部分:实体信息,例如当前时刻环境中有什么建筑、兵种等,并且我们将每一个实体的属性信息以向量的形式表示例如对于一个建筑,其当前时刻的向量中包含此建筑的血量、等级、位置以及冷却时间等信息。所以对于当前帧的全部实体信息,环境会给神经网络 $N$ 个长度为 $K$ 的向量,表示此刻智能体能够看见的 $N$ 个实体的具体信息(向量信息)
- 第二部分:地图信息,这个比较好理解,也就是将地图中的信息以矩阵的形式送入神经网络中,来表示当前状态全局地图的信息。(向量信息或者说是图像信息)
- 第三部分:玩家数据信息,也就是当前状态下,玩家的等级、种族等等信息。(标量信息)
- 第四部分:游戏统计信息,相机的位置(小窗口的位置,区别于第二部分的全局地图信息),还有当前游戏的开始时间等等信息。(标量信息)
第一部分————实体信息,例如当前时刻环境中有什么建筑、兵种等,并且我们将每一个实体的属性信息使用向量表示例如对于一个建筑,其当前时刻的向量中包含此建筑的血量、等级、位置以及冷却时间等信息。所以对于当前帧的全部实体信息,环境会给神经网络 $N$ 个长度为 $K$ 的向量,分别表示此刻智能体能够看见的 $N$ 个实体的具体信息(向量信息)
第二部分————地图信息,这部分比较好理解,即将地图中的信息以矩阵的形式输入神经网络中,来表示当前状态全局地图的信息(向量信息或图像信息)。
第三部分————玩家数据信息,也就是当前状态下,玩家的等级和种族等信息(标量信息)。
第四部分————游戏统计信息,视野的位置(小窗口的位置,区别于第二部分的全局地图信息),还有当前游戏的开始时间等信息(标量信息)。
### 动作(网络的输出)
AlphaStar的动作信息主要分为个部分,分别为动作类型(Action type、选中的单元Selected units、目标Target、执行动作的队列Queued、是否重复Repeat延时(Delay每一个部分间是有关联的。
AlphaStar的动作信息主要分为6个部分,如图13.2所示,分别为动作类型(action type、选中的单元selected units、目标target、执行动作的队列queued、是否重复repeat以及延时(delay个部分间是有关联的。
![img2](img\13.2.png)
<div align=center>
<img width="550" src="img\13.2.png"/>
</div>
<div align=center>图 13.2 动作信息的构成</div>
- 第一部分:动作类型,即下一次要进行的动作的类型是移动小兵、升级建筑还是移动小窗口的位置等
- 第二部分:选中的单元,即承接第一部分,例如我们要进行的动作类型是移动小兵,那么我们就应该选择具体“操作”哪一个小兵
- 第三部分目标承接第二部分我们操作小兵A后是要去地图的某一个位置还是去攻击对手的哪一个目标等等即选择目的地和攻击的对象
- 第四部分执行动作的队列具体说是是否立即执行动作对于小兵A我们是到达目的地后直接进行攻击还是等待
- 第五部分是否重复做动作如果需要小兵A持续攻击那么就不需要再通过网络计算得到下一个的动作了直接重复以上一个动作的相同的动作即可。
- 第六部分:延时,也就是等候多久才接收网络的输入,可以理解为我们人类玩家的一个操作的延迟等等
第一部分————动作类型,即下一次要进行的动作的类型是移动小兵、升级建筑还是移动小窗口的位置等
## AlphaStar的计算模型是什么呢——网络结构
第二部分————选中的单元,承接第一部分,例如我们要进行的动作类型是移动小兵,那么我们就应该选择具体移动哪一个小兵。
上面我们说明了AlphaStar网络的输入和输出即状态和动作那么从状态怎么得到动作呢其网络结构是怎么样的呢
第三部分————目标承接第二部分我们移动小兵A后是要去地图的某一个位置还是去攻击对手的哪一个目标等即选择目的地或攻击的对象。
![img3](img\13.3.png)
第四部分————执行动作的队列即是否立即执行动作对于小兵A是到达目的地后直接进行攻击还是原地待命。
第五部分————是否重复如果需要小兵A持续攻击那么就不需要再通过网络计算得到下一个动作直接重复上一个动作即可。
第六部分————延时,即等候多久后再接收网络的输入,可以理解为一个操作的延迟。
## AlphaStar的计算模型是什么呢————网络结构
我们在13.2节说明了AlphaStar网络的输入和输出即状态和动作那么从状态怎么得到动作呢这里我们先给出其网络结构的总览如图13.3所示,后面对此详细讨论。
<div align=center>
<img width="550" src="img\13.3.png"/>
</div>
<div align=center>图 13.3 AlphaStar网络结构总览</div>
### 输入部分
![img4](img\13.4.png)
<div align=center>
<img width="550" src="img\13.4.png"/>
</div>
<div align=center>图 13.4 AlphaStar网络结构输入部分</div>
图的红框可以看出,模型的输入框架中主要有个部分即Scalar features(标量特征),例如前面述的玩家等级小窗口的位置等信息、Entities(实体),是向量即前面所叙述的一个建筑一个兵的当前所有属性信息、Minimap地图即上面说的图像数据。
从图13.4中的红框可以看出,模型的输入部分主要有3个部分标量特征scalar features),例如前面述的玩家等级以及小窗口的位置等信息实体entities),是向量即前面所叙述的一个建筑一个兵的当前所有属性信息小地图minimap图像数据。
- 对于Scalar features标量特征,使用多层感知MLP就可以得到对应的向量或者说是一个embedding的过程。
- 对于Entities使用NLP中常用的transformer作为encoder
- 对于Minimap使用图像中常用的Resnet作为encoder,得到一个定长的向量。
- 对于标量特征,使用多层感知multilayer perceptronMLP就可以得到对应的向量可以认为是一个嵌入过程。
- 对于实体,使用自然语言处理中常用的Transformer架构作为编码器(encoder)。
- 对于小地图使用图像中常用的ResNet架构作为编码器,得到一个定长的向量。
### 中间过程
中间过程比较简单,即通过一个deep LSTM进行融合种当前状态下的embedding进行下一时刻的embedding输出,并且将该结果分别送入ValueNetwork、Residual MLP以及Actoin type的后续的MLP中。
中间过程比较简单,即通过一个深度长短期记忆网络模块融合3种当前状态下的嵌入并进行下一时刻的输出如图13.5所示,并且将该输出分别送入价值网络value network、残差多层感知机residual MLP以及动作类型的后续的多层感知机中。
![img5](img\13.5.png)
<div align=center>
<img width="550" src="img\13.5.png"/>
</div>
<div align=center>图 13.5 AlphaStar网络结构中的深度长短期记忆网络模块</div>
### 输出部分
正如前面介绍的,输出的动作是前后关联的,按照顺序
正如前面介绍的,输出的动作是前后关联的,如图13.6所示,我们按照顺序一一介绍。
![img6](img\13.6.png)
<div align=center>
<img width="550" src="img\13.6.png"/>
</div>
<div align=center>图 13.6 AlphaStar网络结构输出部分</div>
- 首先是动作类型Action type使用Deep LSTM的embedding的向量作为输入使用residual MLP得到Action type的softmax的输出结果并传给下一个子模型进行embedding
- 然后是延时Delay使用上一个上面的embedding的结果以及Deep LSTM的结果一起输入MLP后得到结果并传给下一个子模型进行embedding。
- 接下来是执行动作的队列Queued使用delay的结果以及embedding的结果一起输入MLP后得到结果并传给下一个子模型进行embedding。
- 然后是选中的单元Selected units使用queued的结果、embedding的结果以及Entity encoder的全部结果非平均的结果一起送入到Pointer Network中得到结果并传给下一个子模型进行embedding。这里的Pointer Netowrk为指针网络即输入的是一个序列输出是另外一个序列并且输出序列的元素来源于输入的序列主要用于NLP中在这里很适合与我们的Selected units的计算。
- 接着是目标单元Target unit和目标区域Target point两者二选一进行对于Target unit使用attention机制得到最优的动作作用的一个对象对于target point使用反卷积神经网络将embedding的向量反卷积为map的大小从而执行目标移动到某一点的对应的动作。
首先是动作类型使用深度长短期记忆网络的嵌入向量作为输入使用残差多层感知机得到动作类型的Softmax激活函数的输出结果,并将其传给下一个子模型进行嵌入
## 庞大的AlphaStar如何训练呢——学习算法
然后是延时:将动作类型嵌入的结果以及深度长短期记忆网络的结果一起输入多层感知机后得到结果,并传给下一个子模型进行嵌入。
对于上面复杂的模型AlphaStar究竟如何来进行训练呢总结下来一共分为4个部分即监督学习主要是解决训练的初始化问题、强化学习、模仿学习配合强化学习以及多智能体学习和自学习面向对战的具体问题下面我们一一分析:
接下来是执行动作的队列:将延时的结果以及嵌入的结果一起输入多层感知机后得到结果,并传给下一个子模型进行嵌入。
然后是选中的单元将队列的结果、嵌入的结果以及实体编码后的全部结果非平均的结果一起送入指针网络pointer network中得到结果并传给下一个子模型进行嵌入。这里的指针网络的输入是一个序列输出是另外一个序列并且输出序列的元素来自输入的序列。其主要用于自然语言处理中在这里很适合我们选中的单元的计算。
接着是目标单元target unit和目标指针target point两者二选一对于目标单元使用注意力attention机制得到最优的动作作用的一个对象对于目标区域使用反卷积残差网络将嵌入的向量反卷积为地图的大小从而执行目标移动到某一点的对应动作。
## 庞大的AlphaStar如何训练呢————学习算法
对于上面复杂的模型AlphaStar究竟如何进行训练呢总结下来一共分为4个部分即监督学习主要是解决训练的初始化问题、强化学习、模仿学习配合强化学习以及多智能体学习或自学习面向对战的具体问题下面我们一一分析。
### 监督学习
在训练一开始首先使用监督学习利用人类的数据进行一个比较好的初始化。模型的输入是收集到的人类的对局的信息,输出是训练好的神经网络。具体的做法是,对于收集到人类对局数据,对于每一个时刻解码游戏的状态,将每一时刻的状态送入网络中得到以上每一个动作的概率分布最终计算模型的输出以及人类数据的KL Loss并以此进行网络的优化其中在KL Loss中需要使用不同的 Loss 函数例如,Action类型的输出,即分类问题的loss就需要使用Cross Entropy。而对于target location等类似回归问题就需要计算MSE。当然还有一些细节大家可以自行阅读paper。总之,经过监督学习,我们的模型输出的概率分布就可以与人类玩家输出的概率分布类似。
在训练一开始AlphaStar首先使用监督学习利用人类的数据进行比较好的初始化。模型的输入是收集到的人类的对局数据,输出是训练好的神经网络。具体的做法是,对于收集到人类对局数据,对于每一个时刻解码游戏的状态,将每一时刻的状态送入网络中得到每一个动作的概率分布,最终计算模型的输出以及人类对局数据的KL散度并以KL散度进行网络的优化其中在KL散度中需要使用不同的损失函数例如,动作类型的损失,即分类问题的损失就需要使用交叉熵。而对于目标定位等类似回归问题就需要计算均方误差mean square errorMSE。当然还有一些细节,大家可以自行阅读论文。总之,经过监督学习,模型输出的概率分布就可以与人类玩家输出的概率分布类似。
### 强化学习
这里的目标就是通过优化策略使得期望的reward最大,即
$$
J(\pi_{\theta}) = \Epsilon_{\pi_{\theta}} \sum_{t=0}r(s_t,a_t)
$$
但AlphaStar的训练的模型使用不是采样的模型即off-policy的模型这是因为其使用的架构为类似于IMPALA的结构即Actor负责与环境交互并采样learner负责优化网络并更新参数而Actor和learner通常是异步进行计算的并且由于前面介绍的输出的动作的类型空间复杂所以导致我们的value function的拟合比较困难。
这里AlphaStar利用了以下的方式进行强化学习模型的构建
- 首先是采取了经典的Actor-critic的结构使用策略网络给出当前状态下的智能体的动作即计算$\pi(a_t|s_t)$ ,使用价值网络计算当前状态下的智能体的期望收益,即计算 $V(s_t) = \Epsilon \sum_{t'=t}r_{t'} = \Epsilon_{a_t}[r(s_t,a_t)+V(s_{t+1})]$。具体的计算方法是:
- 对于当前的状态 $s$ ,计算当前计算出的动作 $a$ 相对于“平均动作”所能额外获得的奖励。$A(s_t,a_t)=[r(s_t,a_t)+V(s_{t+1})]-V(s_t)$即当前动作的预期收益减去当前状态的预期收益。在AlphaStar中UPGOUpgoing Policy Update也得到了应用即UPGO使用了一个迭代变量 $G_t$ 来取代原来的动作预期收益的 $r(s_t,a_t)+V(s_{t+1})$ ,即把未来乐观的信息纳入到我们额外奖励中,上式可改写为:
这里的目标就是通过优化策略使得期望的奖励最大,即
$$
A(s_t,a_t)=G_t-V(s_t)
J(\pi_{\theta}) = E_{\pi_{\theta}} \sum_{t=0}r(s_t,a_t)
$$
$$
G_t=\left\{
\begin{aligned}
r_t+G_{t+1} && Q(s_{s+1},a_{t+1})\geq V(s_{t+1}) \\
r_t+V(s_{t+1}) && otherwise \\
\end{aligned}
\right.
$$
- 在基于上面计算得到的action更新策略梯度即 $\nabla_{\theta}J = A(s_t,a_t)\nabla_{\theta}log \pi_{\theta}(a_t|s_t)$,在我们之前的笔记中也介绍了,如果基于 $\pi_{\theta}$ 的分布不好求解,或者说学习策略 $\pi_{\theta}$ 与采集策略 $\pi_{\mu}$ 不同的话,我们需要使用重要性采样的方法,即 $\nabla_{\theta}J = E_{\pi_{\mu}}\frac{\pi_{\theta} (a_t|s_t)}{\pi_{\mu} (a_t|s_t)} A^{\pi_{\theta}}(s_t,a_t)\nabla_{\theta}log \pi_{\theta}(a_t|s_t)$。当然我们还需防止 $\frac{\pi_{\theta} (a_t|s_t)}{\pi_{\mu} (a_t|s_t)}$ 出现无穷大的情况我们需要使用V-trace限制重要性系数。这也是用于off-policy的一个更新方法在 IMPALA 论文中的4.1小节有所体现。即将重要性系数的最大值限制为1公式可表达如下
但AlphaStar的训练模型使用非采样模型即免策略的模型这是因为其使用的架构为类似于 IMPALA 的架构,即演员负责与环境交互并采样,学习者负责优化网络并更新参数,而演员和学习者通常是异步进行计算的,并且由于前面介绍的输出动作的类型空间复杂,因此导致价值函数的拟合比较困难。
AlphaStar利用以下的方式进行强化学习模型的构建。
1首先是采取经典的演员-评论员actor-critic结构使用策略网络给出当前状态下的智能体的动作即计算 $\pi(a_t|s_t)$ ,使用价值网络计算当前状态下的智能体的期望奖励,即计算 $V(s_t) = E \sum_{t'=t}r_{t'} = E_{a_t}[r(s_t,a_t)+V(s_{t+1})]$。具体的计算方法是:对于当前的状态 $s$ ,计算当前动作 $a$ 相对于“平均动作”所能额外获得的奖励。
$$
\nabla_{\theta}J = E_{\pi_{\mu}}\rho_tA^{\pi_{\theta}}(s_t,a_t)\nabla_{\theta}log \pi_{\theta}(a_t|s_t)
A(s_t,a_t)=[r(s_t,a_t)+V(s_{t+1})]-V(s_t)
$$
即当前动作的预期奖励减去当前状态的预期奖励。在 AlphaStar 中向上移动的策略更新upgoing policy updateUPGO也得到了应用向上移动的策略更新使用一个迭代变量 $G_t$ 来取代原来的动作的预期奖励 $r(s_t,a_t)+V(s_{t+1})$ ,即把未来乐观的信息纳入额外奖励中,上式可改写为:
$$
A(s_t,a_t)=G_t-V(s_t)
$$
其中,
$$
G_t=
\begin{cases}
r_t+G_{t+1} &, \text{如果} Q(s_{s+1},a_{t+1})\geqslant V(s_{t+1}) \\
r_t+V(s_{t+1}) &, \text{否则} \\
\end{cases}
$$
2基于上面计算得到的动作更新策略梯度即 $\nabla_{\theta}J = A(s_t,a_t)\nabla_{\theta}\mathrm{log} \pi_{\theta}(a_t|s_t)$。我们在前面介绍了,如果基于 $\pi_{\theta}$ 的分布不好求解,或者说学习策略 $\pi_{\theta}$ 与采集策略 $\pi_{\mu}$ 不同,我们需要使用重要性采样,即 $\nabla_{\theta}J = E_{\pi_{\mu}}\frac{\pi_{\theta} (a_t|s_t)}{\pi_{\mu} (a_t|s_t)} A_{\pi_{\theta}}(s_t,a_t)\nabla_{\theta}\mathrm{log} \pi_{\theta}(a_t|s_t)$。当然我们还需防止 $\frac{\pi_{\theta} (a_t|s_t)}{\pi_{\mu} (a_t|s_t)}$ 出现无穷大的情况我们需要使用V-trace限制重要性系数。这也是用于免策略的一个更新方法在 IMPALA 论文中的4.1节有所体现。即将重要性系数的最大值限制为1公式如下
$$
\rho_t = min(\frac{\pi_{\theta} (a_t|s_t)}{\pi_{\mu} (a_t|s_t)},1)
\nabla_{\theta}J = E_{\pi_{\mu}}\rho_t A_{\pi_{\theta}}(s_t,a_t)\nabla_{\theta}\mathrm{log} \pi_{\theta}(a_t|s_t)
$$
- 利用了TD($\lambda$) 来优化价值网络,并同时输入对手的数据。对于我们的价值函数 $V^{\pi_{\theta}}(s_t)=E_{\pi_{\theta}}\sum_{t'=t}\gamma^{t'-t}r(s_t,a_t)=E_{a_t\sim\pi_{\theta}(\cdot|s_t)}[r(s_t,a_t)+\gamma V(s_{t+1})]$可以使用TD的方法计算MSE损失有如下几种
- $TD(0)$ ,表达式为 $L = [(r_t+\gamma V_{t+1})-V_t]^2$ 即当前step的信息有偏小方差
- $TD(1)$也就是MC方法表达式为 $L = [(\sum_{t'=t}^\infty\gamma^{t'-t}r_{t'})-V_t]^2$即未来无穷个step的信息无偏大方差
- $TD(\lambda)$ 以上两个方法的加权平均。即平衡当前step、下一个step到无穷个step后的结果
- 已知对于 $\lambda \in (0,1)$, $(1-\lambda)+(1-\lambda)\lambda+(1-\lambda)\lambda ^2+...=1$
- $R_t = \lim_{T\rightarrow\infty} (1-\lambda)(r_t+V_{t+1})+(1-\lambda)\lambda(r_t+\gamma r_{t+1}+\gamma^2 V_{t+2})+...$
其中,
$$
\rho_t = \mathrm{min}(\frac{\pi_{\theta} (a_t|s_t)}{\pi_{\mu} (a_t|s_t)},1)
$$
3利用时序差分$\lambda$)来优化价值网络,并同时输入对手的数据。对于我们的价值函数
$$
V_{\pi_{\theta}}(s_t)=E_{\pi_{\theta}}\sum_{t'=t}\gamma^{t'-t}r(s_t,a_t)=E_{a_t\sim\pi_{\theta}(\cdot|s_t)}[r(s_t,a_t)+\gamma V(s_{t+1})]
$$
可以使用时序差分方法计算均方差损失,有如下几种。
- $\mathrm{TD}(0)$ ,表达式为 $L = [(r_t+\gamma V_{t+1})-V_t]^2$ 即当前步step的信息有偏小的方差存在。
- $\mathrm{TD}(1)$ ,即蒙特卡洛方法,表达式为 $L = [(\sum_{t'=t}^\infty\gamma^{t'-t}r_{t'})-V_t]^2$,即未来无穷步的信息,无偏大方差。
- $\mathrm{TD}(\lambda)$ ,即以上两个方法的加权平均。平衡当前步、下一步到无穷步后的结果。
- 已知对于 $\lambda \in (0,1)$ $(1-\lambda)+(1-\lambda)\lambda+(1-\lambda)\lambda ^2+...=1$。
- $r_t = \lim_{T\rightarrow\infty} (1-\lambda)(r_t+V_{t+1})+(1-\lambda)\lambda(r_t+\gamma r_{t+1}+\gamma^2 V_{t+2})+...$。
### 模仿学习
使用模仿学习额外引入了监督学习Loss以及人类的统计量 $Z$ 即对于Build order建造顺序、Build Units建造单元、Upgrades升级、Effects技能等信息进行了奖励。对于统计量 $Z$ ,本质来说是一系列的数据,将其作为输入信息输入到策略网络和价值网络中。另外对于人类信息的利用还体现在前面介绍的使用监督学习进行网络的预训练工作。
模仿学习额外引入了监督学习损失以及人类的统计量 $Z$ 即对于建造顺序build order、建造单元build unit、升级upgrade、技能effect等信息进行奖励并将统计量 $Z$ 输入策略网络和价值网络。另外AlphaStar对于人类数据的利用还体现在前面介绍的使用监督学习进行网络的预训练工作中。
### 多智能体学习/自学习
自学习在AlphaGo中得到了应用就是自己和自己玩,Alpha对此做了一些更新,即有优先级的虚拟自学习策略,对于虚拟自学习就是在训练过程中,每一些时间就进行存档,并随机均匀从存档中选出对手与正在训练的智能体对战。而有优先级的虚拟自学习指的是优先挑选能击败我的或者说常能打败智能体的对手进行训练对战,评判指标就是概率。对于AlphaStar中其训练的agent分为了三种
自学习在AlphaGo中得到了应用。自学习通俗讲就是自己和自己玩,自己和自己对战。AlphaStar对此进行了一些更新,即有优先级的虚拟自学习策略虚拟自学习就是在训练过程中,每隔一段时间就进行存档,并随机均匀从存档中选出对手与正在训练的智能体对战。而有优先级的虚拟自学习指的是优先挑选常能打败智能体的对手进行训练对战,评判指标就是概率。AlphaStar中其训练的智能体分为3种主智能体main agent、联盟利用者league exploiter和主利用者main exploiter
- Main Agent 主智能体),即正在训练的智能体及其祖先其中有50%的概率从联盟中的所有中挑选,使用有优先级的虚拟自学习策略,即能打败的概率高,不能打败的概率低,有35%的概率与自己对战有15%的概率与能打败的联盟利用者或者老的主智能体对战,通过利用了有优先级的虚拟自学习策略
- League Exploiter联盟利用者能打败联盟中的所有智能体的agent其按照有优先级的虚拟自学习策略计算的概率与全联盟的对手训练在以70%的胜率打败所有的agent或者距离上次存档 $2 \times10^9$ step后就保存并且在存档的时候有25%概率把场上的联盟利用者的策略重设成监督学习给出的初始化。
- Main Exploiter主利用者能打败训练中的所有agent在训练的过程中随机从3个中挑1个主智能体如果可以以高于10%的概率打败该agent就与其进行训练如果不能就从其他的老主智能体中再挑选对手当以70%的胜率打败全部三个正在学习的策略主智能体,或者距上次存档 $4 \times10^9 $ 个step之后就存并且进行重设初始化的操作。
- 主智能体正在训练的智能体及其祖先。其有0.5的概率从联盟中的所有对手中挑选对手,使用有优先级的虚拟自学习策略,即能打败智能体的概率高,不能打败智能体的概率低。有0.35的概率与自己对战0.15的概率与能打败智能体的联盟利用者或者先前的智能体对战。
他们的区别在于:
- 联盟利用者能打败联盟中的所有智能体。其按照有优先级的虚拟自学习策略计算的概率与全联盟的对手训练在以0.7的胜率打败所有的智能体或者距离上次存档 $2 \times 10^9$ 步后就保存策略并且在存档的时候有0.25概率把场上的联盟利用者的策略重设成监督学习初始化的策略。
- 如何选取训练过程中对战的对象
- 在什么情况下存档 (snapshot) 现在的策略
- 以多大的概率将策略的参数重设为监督训练给出的初始化
- 主利用者:能打败训练中的所有智能体。在训练过程中随机从3个智能体中挑选1个主智能体如果可以以高于0.1的概率打败该智能体就与其进行训练如果不能就从之前的主智能体中再挑选对手。当以0.7的胜率打败全部3个正在学习的主智能体时或者距上次存档 $4 \times 10^9$ 步之后就保存策略,并且进行重设初始化策略的操作。
## AlphaStar实验结果如何呢——实验结果
他们的区别在于如何选取训练过程中对战的对手在什么情况下存档snapshot现在的策略以多大的概率将策略参数重设为监督学习给出的初始化参数。
## AlphaStar实验结果如何呢————实验结果
### 宏观结果
![img7](img\13.7.png)
<div align=center>
<img width="550" src="img\13.7.png"/>
</div>
<div align=center>图 13.7 AlphaStar的实验结果</div>
A为训练后的agent与人类对战的结果(天梯图)具体地刚刚结束监督学习后的AlphaStar可以达到钻石级别而训练到一半20天以及训练完结40天的AlphaStar可以达到GM的级别。AlphaStar已经可以击败绝大多数的普通玩家。
13.7a 为训练后的智能体与人类对战的结果(天梯图)具体地,刚刚结束监督学习后的 AlphaStar 可以达到钻石级别而训练到一半20天以及训练完结40天 AlphaStar 可以达到“大师”级别。这也表明AlphaStar已经可以击败绝大多数的普通玩家。
B为不同种族间对战的胜率。
13.7b 为不同种族间对战的胜率。
C为《星际争霸II》报告的每分钟有效行动分布情况EPM其中蓝色为AlphaStar Final的结果,红色为人类选手的结果虚线示平均值。
13.7c 为《星际争霸》报告的每分钟有效行动分布情况其中蓝色为AlphaStar最终的结果,红色为人类选手的结果虚线示平均值。
### 其他实验(消融实验)
AlphaStar的论文中也使用了消融实验即控制变量法来进一步分析每一个约束条件对于对战结果的影响。下面举一个特别的例子
AlphaStar的论文中也使用了消融实验即控制变量法来进一步分析每一个约束条件对于对战结果的影响。下面举一个特别的例子
![img8](img\13.8.png)
<div align=center>
<img width="550" src="img\13.8.png"/>
</div>
<div align=center>图 13.8 AlphaStar中人类对局数据使用情况</div>
上面的图片表示的是人类对局数据的使用情况。可以看到如果没有人类对局数据的情况下数值仅仅为149但是只要经过了简单的监督学习对应的数值就可以达到936当然使用人类初始化后的强化学习可以达到更好的效果利用强化学习加监督学习的KL Loss的话可以达到接近于完整的利用人类统计量 $Z$ 的效果。可以分析出AlphaStar中人类对局数据对于整个model的表现是很重要的其并没有完全像AlphaGo一样可以不使用人类数据的情况。
图13.8 所示为人类对局数据的使用情况。可以看出在没有人类对局数据的情况下,数值仅仅为 149 但是只要经过了简单的监督学习对应的数值就可以达到936当然使用人类初始化后的强化学习可以达到更好的效果利用强化学习加监督学习的KL散度可以达到接近于完整的利用人类统计量 $Z$ 的效果。由此我们可以分析出AlphaStar 中人类对局数据对于整个模型的表现是很重要的,其并没有完全像 AlphaGo 一样,存在可以不使用人类数据进行训练的情况。
## 关于AlphaStar的总结
### 总结
关于AlphaStar的总结如下。
- AlphaStar设计了一个高度可融合图像、文本、标量等信息的神经网络架构并且对于网络设计使用了Autoregressive解耦了结构化的action space
- 模仿学习和监督学习的内容,例如人类统计量 $Z$ 的计算方法
- 复杂的DRL方法以及超复杂的训练策略
- 当然了大量的计算资源Each agent was trained using 32 third-generation tensor processing units (TPUs 23 ) over 44 days. During league training almost 900 distinct players were created.
1AlphaStar设计了一个高度可融合图像、文本、标量等信息的神经网络架构并且对于网络设计使用了自回归autoregressive)技巧,从而解耦了结构化的动作空间
2其融合了模仿学习和监督学习的内容例如人类统计量 $Z$ 的计算方法。
3其拥有复杂的深度强化学习方法以及超复杂的训练策略。
4其完整模型的端到端训练过程需要大量的计算资源。对于此原文表述如下每个智能体使用32个第三代张量处理单元tensor processing unitTPUs进行了44天的训练在训练期间创建了近900个不同的游戏玩家。
## 参考文献
[Vinyals, Oriol, et al. "Grandmaster level in StarCraft II using multi-agent reinforcement learning." Nature (2019): 1-5.](https://www.nature.com/articles/s41586-019-1724-z?)