引言:
我们之前的一篇文章(混合动作空间|揭秘创造人工智能的黑魔法(1))中,详细地介绍了强化学习目前常见的动作空间类型,如离散动作、连续动作、混合动作等。本文则将以游戏环境为例,介绍如何对强化学习的动作空间进行预处理(action space shaping),以提升算法性能和收敛速度,另外相应的技术还可以为各种类似的真实决策AI应用场景带来启发,或是直接应用在其中。
本文主要参考了 《Action Space Shaping in Deep Reinforcement Learning》,有兴趣的读者可以详细阅读原论文了解更多细节。
原论文链接🔗:
https://arxiv.org/abs/2004.00980
一、 动作空间类型
强化学习的动作空间类型可以划分为以下几种情况。
离散动作空间(Discrete)
a ∈ {0, 1, ..., N}(N=动作的可能取值个数)
比如,在经典的 Pong 游戏环境中,动作空间是{left, right, down, up}。
- 多维离散动作空间(MultiDiscrete)
该动作空间可以看作是离散动作空间(Discrete)类型的延伸。此时动作是一个vector向量,向量的每一维都是一个离散动作空间(Discrete)。例如,电脑键盘就是一个天然的多维离散动作空间,动作空间的维度是键盘按键的数量,而每一维则对应着这个按键按下和不按下两种动作。
- 连续动作空间(Continuous)
动作可在一定的范围内取连续值。例如,鼠标的移动方向、距离等。
此外,还有更复杂的混合动作空间,但不在本文的重点讨论范围内,故不作讲解,感兴趣的读者可查看我们往期的专栏文章。
二、动作空间预处理
在游戏环境+DRL的实践中,主要有三种动作空间预处理的trick:
Remove actions(RA)。许多游戏环境的动作空间包含了一些不必要的、甚至对任务训练有害的动作,比如,在训练Minecraft MineRL游戏时,“sneak” 和“backward”这两个动作对于游戏的进程并不关键,所以常常从动作空间中被删掉。减少动作的个数对于强化学习的exploration很有效,可以切实提高sample efficiency。当然,删掉一个动作并不意味着不执行这个动作,只是这个动作不必要放在算法决策的输出中。相应的,你也可以设置这个动作为“always on”,即总是执行。总结来说,就是不要总是直接使用原始自然语义的动作空间,通过恰当的分离,合并和删除,精简出最必要的动作空间。
Discretize continuous actions(DC),即连续动作离散化。因为部分强化学习算法只能适用于特定的动作空间(例如只能离散或连续),而我们通常认为离散动作空间的决策比较简单,所以会将动作空间一律转化为离散的。具体来说,通过分箱/分桶或者自定义离散动作的方式,把一个连续动作离散化。比如,原先的动作空间是[-1,1]之间的连续值,可以离散化成 {-1,0,1}这样的离散空间,当然一般离散化的分桶数需要根据环境具体来选择,也可以使用一些超参数搜索算法来进行调优。
Convert multi-discrete actions to discrete(CMD)。通过排列组合的方式列举多维离散动作的所有可能性,从而将多维离散动作转化成离散动作,这个方法在 ViZDoom 和 Minecraft中比较常见。这种变换的直觉动机在于:通常认为强化学习得到a single large policy的难度会比学习multi small policies的难度小得多。
下面论文里的这张图总结了各种经典游戏环境用到的的动作变换技巧:

三、相关实验
相应的,有一系列的实验来验证动作空间变换对于算法性能的提升效果。下面我们以Atari和StarCraft II(《星际争霸2》)的环境为例来进行讲解。
- Atari
在Atari环境下,测试RA和CMD两种变换在三种动作空间下的效果。Atari环境的默认动作空间是Discrete类型。
三种动作空间分别是:
Full:包含所有动作空间。以下测试的环境中,都是18种。
Minimal:只包含最少最必要的动作,即RA。Space Invaders 和Q*bert有6种,MsPacman和Enduro有9种,Breakout有4种,Gravitar有18种(和Full一样)。
Multi-discrete:将discrete动作空间变成multi-discrete空间。
实验结果如图所示。可以比较明显地看出,在MsPacman游戏中,multi-discrete的得分几乎比其他高了 1/4。

- StarCraft II
《星际争霸2》可以算得上是最复杂的RTS游戏,对于RL算法来说是一个非常具有挑战性的领域。不过这里只选择了《星际争霸2》中四个迷你场景来进行实验,分别是:
CollectMinerlShards (CMS):一个简单的导航任务。玩家控制两个海军陆战队员,必须尽可能快地收集随机散落的矿物碎片。
DefeatRoaches (DR):玩家控制着一支海军小队,必须打败一支Roach军队。
CollecMineralsAndGas (CMAG):这个任务的目的是让经济运转起来,尽可能多地收集矿产资源和vespene气体(游戏中的一种资源)。
BuildMarines (BM) :尽可能多地建立海军战队。
在《星际争霸2》的环境中,除了测试Full和Minimal两种动作空间,还额外测试了Masked 和AR两种动作空间:
Masked:在星际争霸游戏中,任何时刻,整个动作空间中只有一小部分子集的动作可以执行。为了防止AI在某些时刻选取当前时刻无法执行的动作,需要对动作空间进行mask。具体操作时,如果选择了当前时刻不可用的动作,就会执行 no-op(no operation,即不操作)。
AR:星际争霸的很多动作是由 base action+action parameters构成的。比如,选择移动是base action,选择移动的坐标x、y是对应的 action parameters。这通常由一种 auto-regressive(AR) 的方式解决,具体可以参考DeepMind的AlphaStar。
实验结果如下。
Masked 在 BM和CMAG任务中都起到了很重要的作用,而在CMS和DR中效果不明显。
RA在BM任务中显著地提高了算法的训练效果。
AR在这四个子任务中没有表现出明显的优势,不过在全局游戏智能体(AlphaStar)中还是比较重要的。

四、Action Space Shaping总结
RA在部分环境上确实会带来一点最终性能的损失(毕竟减小了决策空间),但在大部分环境上,都能有效提升训练收敛速度;而一些比较困难的环境,只有先进行动作空间精简,才能训练得到有意义的RL智能体。
连续动作空间几乎在所有情况下都比离散动作空间更难学习,离散化在很多情况下都能带来明显的性能提升。
Multi-Discrete相比Discrete而言,在性能上一般没有太大区别,后者往往实现起来更简单,但在一些高度结构化的动作空间中,Multi-Discrete会有更好的效果。
添加动作是否可用的mask在大部分环境中都是有积极意义的。
References
[1] Kanervisto, A., Scheller, C., & Hautamäki, V. (2020, August). Action space shaping in deep reinforcement learning. In 2020 IEEE Conference on Games (CoG) (pp. 479-486). IEEE.
👏下期精彩抢先看
在下一篇文章中,我们将讲述基于动作-状态值函数Q的强化学习混合动作空间算法,带领大家探秘PA-DDPG, PDQN, MPDQN等一系列混合动作空间的经典解法!
