3.2.3 Gym的Atari强化学习环境
另一个常用的强化学习环境是雅达利(Atari)强化学习环境,这个强化学习环境的来源是雅达利公司开发的雅达利2600(Atari 2600)游戏机上的一系列游戏。这是一些早期的像素游戏,包含常见的射击类游戏(如《太空侵略者》,'SpaceInvaders-v0')、体育类游戏(如《乒乓》,'Pong-v0'),以及动作类游戏(如《陷阱》,'Pitfall-v0')等。在这些游戏里,智能体需要控制玩家代表的角色完成一系列动作,来尽可能获取更高的分数。Atari强化学习环境比前面介绍的经典控制环境更复杂,而且包含了一些复杂的环境,因此很多强化学习算法往往都会把这个强化学习环境作为标准的强化学习环境,以便和其他的强化学习环境做对比。
下面用一个简单的《太空侵略者》('SpaceInvaders-v0')来演示一下如何使用OpenAI Gym框架下的Atari强化学习环境。需要注意的是,Atari强化学习环境需要安装atari_py依赖项,如果读者没有安装这个依赖项,可以在命令行中使用pip install'gym[atari]'命令进行安装。另外,对于Atari强化学习环境来说,每个强化学习环境有两个版本,比如太空侵略者,我们可以使用'SpaceInvaders-v0',也可以使用'SpaceInvaders-ram-v0'来使用这个强化学习环境。前者和后者的区别在于,前者直接输出的是可以渲染的210像素×160像素×3像素大小的图像,其中210×160分别代表图像的高和宽,3代表图像是RGB三通道图像;后者输出的则是一个128B的数组,并且用这个数组代表游戏环境所处的状态,其原因是雅达利2600游戏机中只有128B的可用内存。这两款游戏的强化学习环境的状态表示各有优劣,前者的好处是直观,我们可以根据状态直接画出游戏当前的屏幕画面,而且能使用卷积神经网络对图像进行处理,但是对应的环境表示需要比较大的空间;后者的优点是压缩了状态空间的大小,缺点是不能有一个直观的游戏状态空间的表示,而且可能会为后续的神经网络特征提取增加困难。本书会统一使用图像形式的Atari强化学习环境来进行算法演示。在这种情况下,为了能够进一步压缩输入空间的大小,我们可以裁剪掉图像的一部分,并且把三通道合并成为一通道(可以直接对通道求平均),然后把处理过的图像作为深度学习神经网络的输入来估计价值和策略分布。
图3.6演示了一个Atari强化学习环境中的太空侵略者游戏的强化学习环境。在这个环境中,智能体控制的是底部的飞船,通过发射子弹消灭掉上面数排的外星生物,并且获取对应的奖励分数。具体使用方法的代码和代码3.4似,读者可以参考文件ex_3_5.py中的代码来掌握如何使用对应的强化学习环境,并且可以更换不同的Atari强化学习环境,看看具体的游戏在奖励、状态空间和动作空间上的区别。
图3.6 太空侵略者环境示意图
在Atari强化学习环境中,可以看到同一个强化学习环境有很多版本,不同版本的强化学习环境的行为会不太一样。以常用的'SpaceInvaders'环境为例进行说明,这个环境有以下四个版本。
● 'SpaceInvaders-v0',有25%的概率环境会重复上一步同样的动作,随机跳过2~5帧。
● 'SpaceInvaders-v4',环境会严格执行智能体给定的动作,随机跳过2~5帧。
● 中间加了deterministic。结合第1种和第2种情况,如'SpaceInvadersDeterministic-v0',环境有25%的概率会重复上一步同样的动作,同时会固定跳过3帧(其他环境又可能跳过4帧,因为太空侵略者游戏中飞船发出的光束会闪烁,奇数帧能够捕捉到这种情况。
● 'SpaceInvadersNoFrameskip-v4',没有任何跳帧,也没有任何随机重复的动作,环境严格按照智能体给出的动作执行。
本书大多数情况下会使用版本3中描述的强化学习环境严格执行智能体输出的动作,同时会随机跳过一定的帧数(这样可以加快强化学习环境的采样,同时对算法最后收获的奖励影响也比较小),比如'SpaceInvadersDeterministic-v4'强化学习环境。
最后值得注意的是,Atari强化学习环境中并不是所有的强化学习环境都很容易使用深度强化学习算法来实现完美的通关。著名的比较难的强化学习环境有《陷阱》('Pitfall-v0')和《蒙特祖玛的复仇》('MontezumaRevenge-v0'),这些强化学习的特点是奖励具有稀疏性(Sparsity)。其中能获得更高奖励的步骤往往是几个简单步骤的复杂组合,而对应的组合失败后遭到的惩罚(负的奖励)也很大。在强化学习算法中,简单的探索已经不足以找到这种情况下的全局最优的策略,往往只能找到其中一两个简单的得分点。在这种情况下,需要通过更加复杂的探索策略和算法,比如Go-Explore算法,或者随机网络蒸馏(Random Network Distillation, RND)才能获取比较好的分数。由于这些算法超出了本书的论述范围,有兴趣的读者可以根据本书参考文献来阅读相关的算法论文和对应的实现。
需要说明的是,截至本书截稿时,Gym对Atari强化学习环境的支持已经转移到了街机强化学习环境上(Arcade Learning Environment, ALE)。如果读者需要继续在Gym上使用Atari强化学习环境,可以使用pip install atari==0.19.0命令强制安装Atari-0.19.0版本的强化学习环境,这样本书使用这个强化学习环境的代码仍然可以通用(也保持了和历史代码的一定兼容性);如果读者要使用Atari-0.20.0以上版本的Atari强化学习环境,请参考ALE在GitHub上的网站,下载Atari强化学习环境的ROM,按照说明步骤使用ALE强化学习环境(接口和Gym一致,不过导入强化学习环境的方法略有差别)。