Update chapter13.md
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
# AlphaStar 论文解读
|
||||
# 第13章 AlphaStar 论文解读
|
||||
|
||||
## AlphaStar及背景简介
|
||||
## 13.1 AlphaStar及背景简介
|
||||
|
||||
相比于之前的深蓝和AlphaGo,对于《星际争霸Ⅱ》等策略对战型游戏,使用AI与人类对战的难度更大。比如在《星际争霸Ⅱ》中,要想在玩家对战玩家的模式中击败对方,就要学会各种战术,各种微操和掌握时机。在游戏中玩家还需要对对方阵容的更新实时地做出正确判断以及行动,甚至要欺骗对方以达到战术目的。总而言之,想要让AI上手这款游戏是非常困难的。但是DeepMind做到了。
|
||||
|
||||
AlphaStar是DeepMind与暴雪使用深度强化学习技术实现的计算机与《星际争霸Ⅱ》人类玩家对战的产品,其因为近些年在《星际争霸Ⅱ》比赛中打败了职业选手以及99.8\%的欧服玩家而被人所熟知。北京时间2019年1月25日凌晨2点,暴雪公司与DeepMind合作研发的AlphaStar正式通过直播亮相。按照直播安排,AlphaStar与两位《星际争霸Ⅱ》人类职业选手进行了5场比赛对决演示。加上并未在直播中演示的对决,在人类对阵AlphaStar的共计11场比赛中,人类仅取得了1场胜利。DeepMind也将研究工作发表在了2019年10月的 *Nature* 杂志上。本章将对这篇论文进行深入的分析,有兴趣的读者可以阅读原文。
|
||||
|
||||
## AlphaStar的模型输入和输出是什么呢?————环境设计
|
||||
## 13.2 AlphaStar的模型输入和输出是什么呢?————环境设计
|
||||
|
||||
构建深度强化学习模型的第一步就是构建模型的输入和输出,对于《星际争霸Ⅱ》这一个复杂的环境,文章第一步就是将游戏的环境抽象成众多独立的数据信息。
|
||||
|
||||
### 状态(网络的输入)
|
||||
### 13.2.1 状态(网络的输入)
|
||||
|
||||
AlphaStar将《星际争霸Ⅱ》的环境状态分为4部分,分别为实体(entities)信息、地图(map)信息、玩家数据(player data)信息、游戏统计(game statistics)信息,如图13.1所示。
|
||||
|
||||
@@ -27,7 +27,7 @@ AlphaStar将《星际争霸Ⅱ》的环境状态分为4部分,分别为实体
|
||||
|
||||
第四部分————游戏统计信息,视野的位置(小窗口的位置,区别于第二部分的全局地图信息),还有当前游戏的开始时间等信息(标量信息)。
|
||||
|
||||
### 动作(网络的输出)
|
||||
### 13.2.2 动作(网络的输出)
|
||||
|
||||
AlphaStar的动作信息主要分为6个部分,如图13.2所示,分别为动作类型(action type)、选中的单元(selected units)、目标(target)、执行动作的队列(queued)、是否重复(repeat)以及延时(delay),各个部分间是有关联的。
|
||||
|
||||
@@ -48,7 +48,7 @@ AlphaStar的动作信息主要分为6个部分,如图13.2所示,分别为动
|
||||
|
||||
第六部分————延时,即等候多久后再接收网络的输入,可以理解为一个操作的延迟。
|
||||
|
||||
## AlphaStar的计算模型是什么呢?————网络结构
|
||||
## 13.3 AlphaStar的计算模型是什么呢?————网络结构
|
||||
|
||||
我们在13.2节说明了AlphaStar网络的输入和输出,即状态和动作,那么从状态怎么得到动作呢?这里我们先给出其网络结构的总览,如图13.3所示,后面对此详细讨论。
|
||||
|
||||
@@ -57,7 +57,7 @@ AlphaStar的动作信息主要分为6个部分,如图13.2所示,分别为动
|
||||
</div>
|
||||
<div align=center>图 13.3 AlphaStar网络结构总览</div>
|
||||
|
||||
### 输入部分
|
||||
### 13.3.1 输入部分
|
||||
|
||||
<div align=center>
|
||||
<img width="550" src="../img/ch13/13.4.png"/>
|
||||
@@ -70,7 +70,7 @@ AlphaStar的动作信息主要分为6个部分,如图13.2所示,分别为动
|
||||
- 对于实体,使用自然语言处理中常用的Transformer架构作为编码器(encoder)。
|
||||
- 对于小地图,使用图像中常用的ResNet架构作为编码器,得到一个定长的向量。
|
||||
|
||||
### 中间过程
|
||||
### 13.3.2 中间过程
|
||||
|
||||
中间过程比较简单,即通过一个深度长短期记忆网络模块融合3种当前状态下的嵌入并进行下一时刻的输出,如图13.5所示,并且将该输出分别送入价值网络(value network)、残差多层感知机(residual MLP)以及动作类型的后续的多层感知机中。
|
||||
|
||||
@@ -79,7 +79,7 @@ AlphaStar的动作信息主要分为6个部分,如图13.2所示,分别为动
|
||||
</div>
|
||||
<div align=center>图 13.5 AlphaStar网络结构中的深度长短期记忆网络模块</div>
|
||||
|
||||
### 输出部分
|
||||
### 13.3.3 输出部分
|
||||
|
||||
正如前面介绍的,输出的动作是前后相关联的,如图13.6所示,我们按照顺序一一介绍。
|
||||
|
||||
@@ -98,15 +98,15 @@ AlphaStar的动作信息主要分为6个部分,如图13.2所示,分别为动
|
||||
|
||||
接着是目标单元(target unit)和目标指针(target point)两者二选一,对于目标单元,使用注意力(attention)机制得到最优的动作作用的一个对象;对于目标区域,使用反卷积残差网络,将嵌入的向量反卷积为地图的大小,从而执行目标移动到某一点的对应动作。
|
||||
|
||||
## 庞大的AlphaStar如何训练呢?————学习算法
|
||||
## 13.4 庞大的AlphaStar如何训练呢?————学习算法
|
||||
|
||||
对于上面复杂的模型,AlphaStar究竟如何进行训练呢?总结下来一共分为4个部分,即监督学习(主要是解决训练的初始化问题)、强化学习、模仿学习(配合强化学习)以及多智能体学习或自学习(面向对战的具体问题),下面我们一一分析。
|
||||
|
||||
### 监督学习
|
||||
### 13.4.1 监督学习
|
||||
|
||||
在训练一开始,AlphaStar首先使用监督学习即利用人类的数据进行比较好的初始化。模型的输入是收集到的人类的对局数据,输出是训练好的神经网络。具体的做法是,对于收集到的人类对局数据,即对于每一个时刻解码游戏的状态,将每一时刻的状态送入网络中得到每一个动作的概率分布,最终计算模型的输出以及人类对局数据的KL散度,并以KL散度进行网络的优化,其中在KL散度中需要使用不同的损失函数。例如,动作类型的损失,即分类问题的损失就需要使用交叉熵。而对于目标定位等类似的回归问题就需要计算均方误差(mean square error,MSE)。当然还有一些细节,大家可以自行阅读论文。总之,经过监督学习,模型输出的概率分布就可以与人类玩家输出的概率分布类似。
|
||||
|
||||
### 强化学习
|
||||
### 13.4.2 强化学习
|
||||
|
||||
这里的目标就是通过优化策略使得期望的奖励最大,即
|
||||
|
||||
@@ -168,10 +168,10 @@ $$
|
||||
- $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})+...$。
|
||||
|
||||
|
||||
### 模仿学习
|
||||
### 13.4.3 模仿学习
|
||||
模仿学习额外引入了监督学习损失以及人类的统计量 $Z$ ,即对于建造顺序(build order)、建造单元(build unit)、升级(upgrade)、技能(effect)等信息进行奖励,并将统计量 $Z$ 输入策略网络和价值网络。另外,AlphaStar对于人类数据的利用还体现在前面介绍的使用监督学习进行网络的预训练工作中。
|
||||
|
||||
### 多智能体学习/自学习
|
||||
### 13.4.4 多智能体学习/自学习
|
||||
|
||||
自学习在AlphaGo中得到了应用。自学习通俗讲就是自己和自己玩,自己和自己对战。AlphaStar对此进行了一些更新,即有优先级的虚拟自学习策略。虚拟自学习就是在训练过程中,每隔一段时间就进行存档,并随机均匀地从存档中选出对手与正在训练的智能体对战。而有优先级的虚拟自学习指的是优先挑选常能打败智能体的对手进行训练对战,评判指标就是概率。在AlphaStar中,其训练的智能体分为3种:主智能体(main agent)、联盟利用者(league exploiter)和主利用者(main exploiter)。
|
||||
|
||||
@@ -183,9 +183,9 @@ $$
|
||||
|
||||
他们的区别在于:如何选取训练过程中对战的对手;在什么情况下存档(snapshot)现在的策略;以多大的概率将策略参数重设为监督学习给出的初始化参数。
|
||||
|
||||
## AlphaStar实验结果如何呢?————实验结果
|
||||
## 13.5 AlphaStar实验结果如何呢?————实验结果
|
||||
|
||||
### 宏观结果
|
||||
### 13.5.1 宏观结果
|
||||
|
||||
<div align=center>
|
||||
<img width="550" src="../img/ch13/13.7.png"/>
|
||||
@@ -198,7 +198,7 @@ $$
|
||||
|
||||
图13.7(c) 为《星际争霸Ⅱ》报告的每分钟有效行动分布情况,其中蓝色为AlphaStar最终的结果,红色为人类选手的结果,虚线表示平均值。
|
||||
|
||||
### 其他实验(消融实验)
|
||||
### 13.5.2 其他实验(消融实验)
|
||||
|
||||
AlphaStar的论文中也使用了消融实验,即控制变量法,来进一步分析每一个约束条件对于对战结果的影响。下面举一个特别的例子。
|
||||
|
||||
@@ -209,7 +209,7 @@ AlphaStar的论文中也使用了消融实验,即控制变量法,来进一
|
||||
|
||||
图13.8 所示为人类对局数据的使用情况。可以看出在没有人类对局数据的情况下,数值仅仅为 149 ,但是只要经过了简单的监督学习,对应的数值就可以达到936,当然使用人类初始化后的强化学习可以达到更好的效果,利用强化学习加监督学习的KL散度可以达到接近于完整的利用人类统计量 $Z$ 的效果。由此我们可以分析出,AlphaStar 中人类对局数据对于整个模型的表现是很重要的,其并没有完全像 AlphaGo 一样,存在可以不使用人类数据进行训练的情况。
|
||||
|
||||
## 关于AlphaStar的总结
|
||||
## 13.6 关于AlphaStar的总结
|
||||
|
||||
关于AlphaStar的总结如下。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user