深度强化学习算法与实践:基于PyTorch的实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 DeepMind Lab强化学习环境

除了以上OpenAI开发的Gym强化学习环境,Google的DeepMind实验室也开发了一系列强化学习环境,用于支持自身的强化学习算法的研究。其中比较有名的就是Google DeepMind Lab强化学习环境。DeepMind Lab强化学习环境是Google的DeepMind实验室为了研究用于游戏上的强化学习算法开发的,目前主要支持的是《雷神之锤3:竞技场》(Quake III Arena)这款3D游戏。该游戏是第一人称类型的游戏,在游戏中智能体控制强化学习环境的一个机器人来完成各种任务,获取其中的奖励。这些任务(设计为游戏中的不同关卡,每个关卡相当于不同的强化学习环境)包括但不限于:

● 在静态地图中收集一些水果,这些水果包含苹果(小的正奖励)、甜瓜(大的正奖励)和柠檬(小的负奖励)。

● 给定一个迷宫的初始地图,要求智能体探索这个迷宫,并根据迷宫地图的知识找到目标的地点。

● 给定一个未知的迷宫,不断探索这个迷宫,并根据探索迷宫得到的知识来返回目标位置的相关信息。

● 用激光标记的功能来标记由AI控制的其他机器人,每个机器人拥有一定的护盾值,每次标记成功会削减一定的护盾值,直到削减为0时,可以获取+1的奖励。

对于每个智能体,它可以采取的动作主要分为三种:第一种是移动,方向是前后左右、上跳和下蹲;第二种是观察,即移动智能体的相机,方向为上下左右;第三种是使用激光标记对手。

对于环境观测状态的描述,则可以直接使用RGB三通道的图像通过像素来表示,这个图像代表的是智能体通过相机观测到的周围的图像,或者是RGBD四通道的图像,其中D通道代表像素的深度,用于模仿机器人常用的距离传感器的数据。另外,如果需要,还可以得到与机器人的速度相关的数据,这些数据都可以整合进深度强化学习模型中作为模型的输入。智能体可以通过控制输入的频率来控制机器人运行的频率,一般来说,一个动作代表整个强化学习环境的一帧图像。

为了使用DeepMind Lab环境,首先需要下载和编译这个强化学习环境。读者可以使用git clone https://github.com/deepmind/lab命令下载相关代码(注意这个强化学习环境仅可在Linux和MacOS操作系统上使用,如果是MacOS操作系统,则需要使用git clone https://github.com/deepmind/lab-b macos来下载相关代码。在下载完代码之后,需要对目录下的WORKSPACE文件进行修改,主要修改的是new_local_repository变量中path的值,这个值代表的是系统的glibc所在的文件夹,读者可以根据自己系统的glibc所在的位置做修改。为了能够使用DeepMind Lab的Python接口,首先需要运行如下命令来进行编译:bazel build-c opt--python_version=PY3//python/pip_package:build_pip_package。这个命令将会编译Python接口所需要的源文件。在运行完这个命令之后,接下来运行下面的命令:./bazel-bin/python/pip_package/build_pip_package/tmp/dmlab_pkg,生成可供Python安装的wheel文件。该命令将会在/tmp/dmlab_pkg目录下生成一个名叫deepmind_lab-1.0-py3-none-any.whl的文件,读者可以使用pip install/tmp/dmlab_pkg/deepmind_lab-1.0-py3-none-any.whl命令安装deepmind_lab这个Python库。安装完这个库之后会发现,deepmind_lab还依赖于dm_env这个Python库,我们可以通过pip install dm-env命令安装这个依赖库。

下面介绍如何使用DeepMind Lab的Python接口,如代码3.9所示。

代码3.9 DeepMind Lab的Python接口使用示例。

为了使用该强化学习环境,首先需要指定具体的关卡,这里设定为'seekavoid_arena_01',这是一个在迷宫中搜索水果的关卡。如果读者想要尝试其他关卡,可以在代码3.8中的关卡目录中找寻关卡的名字。初始化的时候需要指定一些参数,包括具体的渲染形式,以及每秒的帧数(fps)、关卡图像的高度(height)和宽度(width)等。在代码3.9中也可以看到,实际上DeepMind Lab和Gym的接口高度类似,区别在于可以同时执行多个动作,以及对应的动作空间和观测空间高度灵活。这里通过observations方法来获取一个当前状态的字典,这个当前状态的图像包含很多内容,例如,机器人观察的内容和速度、相机位置等。这里只取用当前机器人观察的内容作为强化学习环境状态的表示,具体的输出图像可以参考图3.8。

图3.8 DeepMind Lab雷神3竞技场'seekavoid_arena_01'关卡示意图