# On Reinforcement Learning for Full-length Game of StarCraft

> On Reinforcement Learning for Full-length Game of StarCraft

星际争霸II对强化学习提出了巨大挑战。 主要困难包括巨大的状态空间，不同的动作空间，长视野等。在本文中，我们研究了一套星际争霸II全长游戏的强化学习技巧。我们研究一种分层方法，其中层次结构涉及两个抽象层次。一个是从专家的示范轨迹中提取的宏观行动，它可以将行动空间减少一个数量级但仍然有效。 另一种是双层分层架构，它是模块化的，易于扩展。 我们还研究了一种课程转移学习方法，该方法将代理从最简单的对手训练到最简单的对手。在64×64地图上并使用限制性单位，我们在具有4个GPU和48个CPU线程的单台机器上训练代理。我们对难度级别1的内置AI实现了超过99％的获胜率。 通过课程转移学习算法和战斗模型的混合，我们可以在几天内对最困难的非作弊内置AI（7级）实现超过93％的中奖率。 我们希望这项研究能够为未来的大规模强化学习研究提供一些启示。

## 方法

### Hierarchical Architecture

我们的分层架构如图1所示。有两种类型的策略运行无关紧要的时间尺度。 控制器决定基于当前观察的每个长时间间隔选择子策略，并且子策略在每个短时间间隔内选择宏动作。

![](/files/-Lc06ULdGkeQ3pnGL25a)

Controller根据观察状态选择子策略： $$a\_{t\_{c}}^{c}=\Pi\left(s\_{t\_{c}}^{c}\right), \quad s\_{t\_{c}}^{c} \in S\_{c}$$ ，子策略选择宏动作 $$a\_{t\_{i}}^{i}=\pi\_{i}\left(s\_{t\_{i}}^{i}\right)$$ ，回报函数为一个周期内子策略的总回报 $$r\_{t\_{c}}^{c}=r\_{t\_{i}}^{i}+r\_{t\_{i}+1}^{i}+\ldots+r\_{t\_{i}+K-1}^{i}$$ 。由于控制网络每个固定时间间隔K调用子网，因此高级网络的总执行步长变为T / K step。

### Generation of Macro-actions

我们通过专家轨迹的数据挖掘获得宏观行动空间。

![](/files/-Lc07Tq6pRJphwHCYcA3)

### Training Algorithm

我们的体系结构的训练过程在算法1中显示，可以归纳为以下内容。 首先，我们初始化控制器和子策略。 然后我们运行Z次的迭代并在每次迭代中运行M次剧集。 在每次迭代开始时，我们将清除所有重放缓冲区。 在每集中，我们收集控制器和子策略的轨迹。 在每次迭代结束时，我们使用重放缓冲区来更新控制器和子策略的参数。我们使用PPO算法优化网络，并且加入了熵损失。

![](/files/-Lc07yGaamcvhHNTXMmW)

![](/files/-Lc07gTew0NZiUw9--My)

### Reward Design

本文探讨了三种类型的奖励。赢/输奖励是在游戏结束时收到的三元1(赢)/ 0(平局)/ -1(输)。分数奖励是暴雪从游戏引擎获得的分数。混合奖励是我们设计的奖励函数。

### Curriculum Learning

SC2包含10个难度级别的内置AI，它们都是由规则和脚本精心设计的。 从Level-1到10级，内置AI的能力不断提高。 较高难度级别的训练提供的积极反馈较少，因此代理人难以从头开始学习。 在这项工作中，我们首先训练我们的代理人在较低难度级别，然后使用预训练模型作为初始模型将代理人转移到更高难度级别，遵循课程学习的想法。

## Experiments

### Combat rule

战斗规则是一个简单的战斗策略，战斗规则模型中只有一个动作：攻击一系列固定位置。 虽然地图是不可观测的并且敌人的位置是未知的，但敌人总是住在矿井周围。 我们只需要让我们的军队攻击矿井周围的固定位置。 攻击动作使用内置AI进行自动移动和攻击。 因此，攻击行动的结果取决于建筑物的建造和单元的生产。 只有当代理人学会更好地进行建筑施工时（例如，不建造多余的建筑物，并在供应不足的情况下及时建造更多的挂架），代理才有可能获胜。

### Combat network

虽然简单的战斗规则模型是有效的，但战斗过程有点幼稚或僵化，当移动到更大和更复杂的地图时可能会失败。下面我们介绍一种叫做战斗网络的智能攻击方法。战斗网络的输出由三个动作和一个位置向量组成。这些行动是:都攻击某个位置，都撤退到某个位置，什么都不做。攻击和移动位置由位置向量指定。

战斗网络被构造为卷积神经网络（CNN）。 这个CNN映射了小地图和屏幕，使它能够知道完整地图的信息以及屏幕上的单位和建筑物位置。 此外，我们使用一个简单的策略来决定相机的位置。 当控制器选择基本子策略时，摄像机将移动到代理程序基础的位置。

### Mixture model

虽然战斗网络模型可以在高难度下训练得很好，但它偶尔会错过一些隐藏的敌人建筑。我们可以将战斗网络和战斗规则结合成一个混合模型。当在战斗网络的位置向量中预测到某个值时，军队的攻击位置将变成一系列由先验知识得到的固定位置。

![](/files/-Lc0926LkRrUuJnJ8Vt9)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hujian.gitbook.io/deep-reinforcement-learning/fang-fa/ji-shi-zhan-lve-you-xi/on-reinforcement-learning-for-full-length-game-of-starcraft.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
