论文推荐:StarCraft II Unplugged 离线强化学习
星际争霸 II 是暴雪开发的一款真正的战略游戏,它是一个挑战,因为它从机器学习的角度展示了一些有趣的属性:实时、部分可观察性以及广阔的行动和观察空间。掌握游戏需要时间策略规划,实时控制宏观和微观层面,具有实时反击对手的特点。
在本文中,我们将介绍 StarCarft II Unplugged 论文 [1],这是一个基准,涵盖了参考 AlphaStar 论文 [2] 的算法和代理。提出的主要新颖性包括用于训练的数据集、评估指标和基准代理以来自 AlphaStar 的参考代理。在非常广泛的基础上,这项工作基于从人类回放数据集中学习,并提出了离线强化学习策略评估方法和一些在线策略改进。
从离线 RL 的角度来看,该论文重点介绍了星际争霸的属性,这些属性可能对这一挑战很有趣。
- 数据源,需要确保数据集不会偏离 RL 代理生成的数据集。来自离线强化学习的挑战之一是来自对来自数据集 [3] 的游戏策略集的多样性和丰富性的保证,在论文中称为覆盖率。参考论文 [3] 也将这一挑战称为确保状态空间的高回报区域的存在
- 大型、分层和结构化的行动空间。为了正确执行游戏玩法,代理必须选择动作和单元以应用该动作,并控制地图以执行动作。此外每一步有 10e26 个可能的动作。从覆盖率的角度来看,这代表了以确保游戏策略多样性的序列形式选择足够的分层动作的挑战。
- 随机环境,在随机环境中下一个代理的状态并不总是根据其当前状态和动作来确定,这意味着采取动作并不能保证代理最终会处于其预期的状态。这些环境可能需要更多的轨迹来获得较高的状态动作覆盖率。
- 部分可观察性,由于战争迷雾,除非它探索环境,否则代理不知道对手在做什么。这种探索可能需要在游戏后期使用此信息,这可能意味着使用内存来确保覆盖范围。
离线强化学习基础
一般来说,强化学习可以定义为机器学习的一个子领域,它基于通过与具有反馈奖励标志的环境的交互进行学习,总体目标是学习最大化该奖励的策略 π。在这个框架下,关于学习方法存在不同类型的分类:在线 RL 中,代理在每个时间步与环境交互,离线RL 中,代理的经验被存储到更新策略的重放缓冲区 D 中。
从强化学习中考虑到的关于研究过程的另一个关键概念是,通过估计来自状态 s 或状态动作对的预期回报的价值函数来学习此策略 π 的过程称为策略评估。然后可以在策略改进过程中使用价值函数来增加具有更高价值的行动的概率。另外就是反复进行策略评估和策略改进的过程是强化学习算法方法的核心,这个过程一般被称为策略迭代。
图 1:离线 RL 的主要思想是使用在训练期间未更改的数据集 D 来训练策略。在训练阶段,数据集用于训练策略,而不与环境进行任何交互。在部署阶段,学习到的策略会在环境中进行测试。这个循环实际上可以用来训练新的策略。这个图像是从参考 [2] 到星际争霸 II 环境的改编
离线RL 的原理来自数据驱动方法的监督学习、数据集的使用以及使用遵循 MDP 结构的收集数据集来训练策略的原则。但是代理不再具有与环境交互并使用学习策略收集其他转换的能力。相反该算法提供了一个静态的转换数据集,可以称为训练数据集。
从在线RL中删除强化学习训练循环降低了对星际争霸进行试验的计算需求,使其更容易被研究社区[1]访问。因此离线 RL 的主要挑战之一是希望学习到的策略比数据集 D 中看到的行为表现更好,也就是说在实践中能够执行一系列与训练集中出现的不同的动作,这些动作比从数据集 D 中观察到的行为模式有更好的表现(类似观看replay的总结)。这篇论文中表明:即使算法不会通过与环境交互来收集更多数据,也可以在环境中运行学习的策略来衡量它们的执行情况,这种评估可能对超参数调整有用。论文认为创建成功代理首先先要制定良好的训练策略。
离线强化学习领域也可以使用在线和离线强化学习的不同方法来学习策略。在这种特殊情况下,主要关注的是行为值估计的算法(计算价值函数)
数据集
星际争霸数据集的构建得益于对公开可用的 2000 万个星际争霸 II 游戏回访记录的筛选。数据分布呈正偏态分布,并考虑到博弈因素
- 140万次的游戏,包括3500次MMR,排名前22%的玩家拥有280万次游戏回访,代表着他们总计玩了30多年的游戏。
- 考虑了游戏的平均时间(11分钟)
- 筛选只包含动作的帧,将数据长度削减12倍。
- 在基准测试中给出的一些算法是用另一个MMR > 6200的高质量数据集和仅获胜的游戏数据集进行的微调。
注意:并非所有时间长度的游戏回放都包含在数据集中,因为它们通过玩家采取行动的步骤缩短了轨迹。这意味着,从工程角度和 API 来看,所有没有动作的轨迹(pysc2 API 中的 NO_OP)都已删除。
暴雪发布的游戏回访包含 500 万个视频格式的重播。数据集将视频文件转换为一组包含 K 个连续时间步长(轨迹)序列的 rollout,组装在一个 mini batch 为M的独立rollout 中。rollout可以理解为连续轨迹的长度
图 2. 数据集是一组称为 rollouts 的状态动作元组,解释为在 M 个独立 rollout 的小批量中组装的 K 个连续时间步长的序列。这遵循其他离线任务(例如 DL4R)给出的结构。如果选择 K = 1 ,得到的是一个轨迹。如果选择更扩展的 K,将不得不考虑更长的轨迹。一个 minibatch M 考虑了独立的 rollouts 。minibatch 大小 M 和 rollout K 大小影响最终的行为性能。
观察与行动空间
StarCraft 游戏的复杂性导致了观察/动作空间的分层分类,其中包括有关世界、单位和标量输入以及 StrarCraft II 单位可以执行的能力的信息,通过 pysc2 API 进行编码。在下面找到观察和行动空间的摘要,包括 GameHuman 屏幕截图和对这些观察和行动的代理解释,主要是为了解决
游戏的代理如何看待世界?代理如何执行其决策?
1、观察
观察空间可分为三个主要部分,总体构成数据集 D 中轨迹的状态。这些组件在上面进行了描述并显示在图 4 中。
world:整个游戏的世界是由128x128 张量数据结构组成,包括地图和小地图分析以及游戏基本控制问题,还有地图阴影信息和玩家对该地图的控制区域。这将作为架构输出中的特征平面
Units :代理观察到的单位列表。它包含代理的所有单位以及在代理的视野内和对手建筑物的最后已知状态的对手的单位。对于每个单元,观察是一个大小为 43 的向量,其中包含游戏界面中可用的所有信息。这或许可以理解为对博弈的微观管理观察。
Scalars:一维向量形式的全局输入,它包括资源(矿产和瓦斯)、对手信息、工人信息和单位成本。这或许可以理解为对博弈的宏观管理观察。
图 4。此图的目的是显示代理如何看待或解释 Starcarft 。基于 API 如何处理游戏界面的时间步 t 观察示例。该图显示了三个层次结构:一个 128 x 128 像素的整体全球世界张量,其中包括在输入特征计划中调用的小地图信息。以列表形式嵌套的单元的信息,该列表可以从 43 扩展到 512 。标量输入、单位特征和单位参数输入是游戏界面中的全局信息。特征图图已使用 Simple64 捕获图进行了简化,但提供了代理如何在 ScreenPlay 中查看 Nexus 和探针的概述。
完整文章:
https://www.overfit.cn/post/bf340c9b1a1547f5b5e54fd4972d4338