本文转自雷锋网,如需转载请至雷锋网官网申请授权。
深度强化学习(Deep Reinforcement Learning,DRL)一直是近年来人工智能的一些重大突破的核心。然而,尽管 DRL 有了很大的进步,但由于缺乏工具和库,DRL 方法在主流解决方案中仍然难以应用。因此,DRL 仍然主要是以研究形式存在,并没有在现实世界看到许多采用机器学习的应用方案;而解决这个问题就需要更好的工具和框架。
就在最近,DeepMind 发布了一系列新的开源技术,包括三种 DRL 框架:OpenSpiel、SpriteWorld 和 Bsuite,这些技术将有助于简化 DRL 方法的应用。
DRL 框架概述
作为一种新的深度学习技术,DRL 的采用面临着简单实现算法以外的挑战。例如:用以简化 DRL 技术应用的训练数据集、环境、监控优化工具以及精心设计的实验等。
考虑到 DRL 的机制不同于大多数传统的机器学习方法,尤其对于 DRL 的情况,这种差异更甚。DRL 智能体试图在给定的环境中通过反复试验来实现对任务的掌握。在这种情况下,环境和实验的稳健性在 DRL 智能体开发的知识中起着重要的作用。
为了实现 DRL 的重大突破,将其更好的应用于重大人工智能挑战中,DeepMind 构建了许多专有工具和框架,以大规模简化 DRL 智能体的训练、实验和管理。并且开放了三种 DRL 框架,包括:OpenSpiel、SpriteWorld 和 bsuite,以便其他研究人员可以使用它们来推进 DRL 方法的现状。
下面是三种框架的介绍,并附有对应的开源地址。
OpenSpiel
与其他数据集不同,游戏本质上基于试验和奖励机制,可以用来训练 DRL 智能体。然而,正如我们所看到的,游戏环境远不是简单的组装。
OpenSpiel 是一系列环境和算法的集合,用于研究一般强化学习和游戏中的搜索/规划。OpenSpiel 的目的是在许多不同的游戏类型中促进通用多智能体的强化学习,其方式与通用游戏类似,但它重点是强调学习而不是竞争形式。当前版本的 OpenSpiel 包含 20 多种不同类型的游戏的实现,例如:完全信息、同步移动、不完全信息、网格世界游戏、博弈游戏和一些普通形式/矩阵游戏。
OpenSpiel 的核心实现是基于 C++和 Python 绑定,便于在不同的深度学习框架中采用。该框架包含了一系列游戏组合,允许 DRL 智能体掌握合作和竞争行为。类似地,OpenSpiel 包含了多种 DRL 算法组合,例如:搜索、优化和单一智能体等。OpenSpiel 还包括分析学习动态和其他常见评估指标的工具。
OpenSpiel 支持游戏类型
-
单人和多人游戏
-
完全可观测(通过观测)和不完全信息博弈(通过信息状态和观测)
-
随机性(尽管部分支持隐式随机性,但主要为不确定事件)
-
n人普通形式的“一杆”游戏和(2人)矩阵游戏
-
序贯和同时动作游戏
-
零和、一般和和合作(相同收益)博弈
OpenSpiel 支持语言类型
-
C++ 11
-
Python 3
-
swift 中提供的部分语言
游戏和实用程序功能(例如:计算)是用 C++编写的。这些也可以使用 pybind11 python(2.7 和 3)绑定。方法名称位于 C++中的 CamelCase 和 Python 中的 SnaKeKY 情况(例如,在 C++中的 Apple 动作将是 Python 中的 Stest.Apple)。有关名称之间的完整映射,请参见 open_spiel/python/pybind11/pyspel.cc 中的 pybind11 定义。
OpenSpiel 已经在 linux 上进行了测试(debian 10 和 ubuntu 19.04),但它还未在 MacOS 或 Windows 上进行测试,由于代码使用了 MacOS 和 Windows 上也提供的免费工具,因此 DeepMind 预计在这些平台下编译和运行不会出现任何(重大)问题。
GitHub 地址:https://github.com/deepmind/open_spiel
pybind11 地址:https://pybind11.readthedocs.io/en/stable/
SpriteWorld
几个月前,DeepMind 发表了一篇论文,介绍了一种基于无监督式目标搜索和好奇心驱动的强化学习模型(Curious Object-Based seaRch Agent,COBRA),它通过使用强化学习来识别给定环境中的对象(相关论文可参考:https://arxiv.org/abs/1905.09275)。
该模型使用了一系列二维游戏进行训练,在这些游戏中数字可以自由移动。用来训练 COBRA 模型的环境就是最近 deepmind 开源 DRL 三大框架之一,SpriteWorld。
SpriteWorld 是一个基于 python 的强化学习环境,它由一个可以自由移动的简单形状的二维竞技场组成。更具体地说,SpriteWorld 是一个二维方形竞技场,有不同数量的彩色 Sprites,可以自由放置和渲染,但不会发生碰撞。SpriteWorld 环境基于一系列关键特征:
-
多目标的竞技场反映了真实世界的组成,杂乱的物体场景可以用于共享特征,同时也可以独立移动。这也提供了测试与任务无关的特征/目标的稳健性和组合泛化的方法。
-
连续点击和推动动作空间的结构反映了世界空间和运动的结构。它还允许智能体在任何方向上移动任何可见对象。
-
目标的概念并非以任何特权方式所提供(例如:操作空间中没有特定目标的组件),并且完全可以由智能体发现。
SpriteWorld 为每个 DRL 智能体提供三项主要的训练任务:
-
目标搜索。智能体必须将一组目标(可通过某些功能识别,例如:绿色的目标)带到屏幕上的隐藏位置,忽略干扰对象(例如:非绿色的目标);
-
排序。智能体必须根据目标的颜色将每个目标带到规定的位置;
-
聚类。智能体必须根据目标的颜色将其分组排列在群集中。
SpriteWorld 也可以用于强化学习以外的其他目的。例如:它被用于生成具有控制因子分布的图像数据集,如论文「Spatial Broadcast Decoder: A Simple Architecture for Learning Disentangled Representations in VAEs」(watters 等人,2019,https://arxiv.org/abs/1901.07017)。
它还可以很容易地扩展到生成与简单物理力(如弹簧、重力等)相互作用的物体的数据集,这对于视觉动力学的无监督学习研究是有用的。
GitHub 地址:https://github.com/deepmind/spriteworld
bsuite
我们试图将 bsuite(Behaviour Suite for Reinforcement Learning,强化学习行为套件)打造成为强化学习领域 的 MNIST。
具体而言,bsuite 是一系列实验,旨在突出智能体可扩展性的关键点。这些实验都体现了一些基本的问题,例如「探索」或「记忆」,其实验方式可以很容易地进行测试和迭代。bsuite 有两个主要目标:
-
收集清晰、信息量丰富且可扩展的问题,这些问题捕获了高效和通用学习算法设计中的关键问题;
-
通过在这些共享基准上的表现来研究智能体的行为。
bsuite 的当前实现可以在不同环境中自动执行手实验,并收集了相应的指标,这些指标可以简化 DRL 智能体的训练。同时,因为 bsuite 是一系列实验的集合,所以它在实验子目录中定义。每个子目录对应一个实验,包含:
-
定义强化学习环境的一种文件,它可以配置为提供不同的难度等级或不同的随机种子(for example);
-
此环境的关键字参数序列,在实验的 sweep.py 文件中的 settings 变量中定义;
-
一个 analysis.py 文件,用于定义所提供的 jupyter 计算机中使用的绘图;
当通过加载和记录*函数加载环境时,bsuite 通过记录每个环境中的结果来工作。这意味着任何实验都将自动输出正确格式的数据,以便使用计算机进行分析,而不受任何智能体或算法结构的限制。
GitHub 地址:https://github.com/deepmind/bsuite