当前位置: 首页 > 科技观察

DeepMind一次性开源3个新框架!深度强化学习应用即将迎来春天?

时间:2023-03-12 13:27:36 科技观察

本文转载自雷锋网。如需转载,请在雷锋网官网申请授权。近年来,深度强化学习(DRL)一直是人工智能领域一些重大突破的核心。然而,尽管DRL取得了很大进步,但由于缺乏工具和库,DRL方法仍然难以在主流解决方案中实施。因此,DRL目前还主要处于研究形式,并没有在现实世界中看到很多使用机器学习的应用;需要更好的工具和框架来解决这个问题。就在最近,DeepMind发布了一系列新的开源技术,其中包括三个DRL框架:OpenSpiel、SpriteWorld和Bsuite,这将有助于简化DRL方法的应用。DRL框架概述作为一种新的深度学习技术,DRL的采用面临着简单实现算法之外的挑战。例如:训练数据集、环境、监控优化工具和精心设计的实验,以简化DRL技术的应用。考虑到DRL的机制与大多数传统机器学习方法不同,这种差异在DRL的情况下更加明显。DRL代理试图通过在给定环境中的反复试验来掌握任务。在这种情况下,环境和实验的稳健性在DRL代理开发的知识中起着重要作用。为了在深度强化学习上取得重大突破,更好地将其应用于重大人工智能挑战,DeepMind构建了许多专有工具和框架,以简化深度强化学习智能体大规模的训练、实验和管理。三个DRL框架,包括:OpenSpiel、SpriteWorld和bsuite,都是开源的,以便其他研究人员可以使用它们来推进DRL方法的最新技术水平。下面分别对三个框架进行介绍,并附有相应的开源地址。OpenSpiel与其他数据集的不同之处在于,游戏本质上是基于试验和奖励的,可用于训练DRL代理。然而,正如我们所见,游戏环境绝非简单的组装。OpenSpiel是一组环境和算法,用于研究游戏中的一般强化学习和搜索/规划。OpenSpiel旨在以类似于一般游戏的方式促进跨许多不同游戏类型的一般多代理强化学习,但强调学习而不是竞争形式。当前版本的OpenSpiel包含20多种不同类型游戏的实现,例如:完全信息、同步移动、不完全信息、网格世界游戏、棋盘游戏和一些通用形式/矩阵游戏。OpenSpiel的核心实现基于C++和Python绑定,以便在不同的深度学习框架中轻松采用。该框架由一系列游戏组合组成,允许DRL智能体掌握合作和竞争行为。同样,OpenSpiel包括各种DRL算法的组合,例如:搜索、优化和单一代理。OpenSpiel还包括用于分析学习动态和其他常见评估指标的工具。OpenSpiel支持的游戏类型单人和多人游戏完全可观察(通过观察)和不完全信息的游戏(通过信息状态和观察)随机性(虽然部分支持隐式随机性,但主要是不确定事件)n-playercommon"One-stroke”游戏和(2人)矩阵游戏顺序和同步动作游戏零和、一般和和合作(相同收益)游戏OpenSpiel支持的语言类型C++11Python3swift函数中可用的一些语言游戏和实用程序(例如:计算)是用C++编写的。这些也可用于pybind11python(2.7和3)绑定。方法名称在C++中采用CamelCase,在Python中采用SnaKeKY大小写(例如,C++中的Apple操作在Python中为Stest.Apple)。有关名称之间的完整映射,请参阅open_spiel/python/pybind11/pyspel.cc中的pybind11定义。OpenSpiel已经在linux(debian10和ubuntu19.04)上进行了测试,但是还没有在MacOS或Windows上进行测试,由于代码使用了在MacOS和Windows上也可以使用的免费工具,DeepMind期望在这些平台下编译并且无需运行任何(主要)问题。GitHub地址:https://github.com/deepmind/open_spielpybind11地址:https://pybind11.readthedocs.io/en/stable/SpriteWorld几个月前,DeepMind发表了一篇论文,介绍了一种无监督的对象搜索和好奇心模型驱动强化学习(CuriousObject-BasedseaRchAgent,COBRA),它使用强化学习来识别给定环境中的物体(相关论文可参见:https://arxiv.org/abs/1905.09275)。该模型使用一系列数字自由移动的2D游戏进行训练。用于训练COBRA模型的环境是SpriteWorld,是deepmind最近开源的三大深度强化学习框架之一。SpriteWorld是一个基于Python的强化学习环境,由可以自由移动的简单形状的2D舞台组成。更具体地说,SpriteWorld是一个2D方形竞技场,具有不同数量的彩色精灵,可以自由放置和渲染而不会发生碰撞。SpriteWorld环境基于一组关键特征:多目标竞技场反映了真实世界的构成,对象的杂乱场景可用于共享特征,同时也能够独立移动。这也提供了一种方法来测试与任务无关的特征/目标的稳健性和组合泛化。连续点击和推动动作空间的结构反映了世界空间和运动的结构。它还允许代理向任何方向移动任何可见对象。目标的概念不是以任何特权方式提供的(例如:在动作空间中没有特定于目标的组件),并且可以被代理完全发现。SpriteWorld为每个DRL智能体提供了三个主要的训练任务:对象搜索。代理必须将一组对象(可通过某些特征识别,例如:绿色对象)带到屏幕上的隐藏位置,忽略分散注意力的对象(例如:非绿色对象);排序。代理人必须根据其颜色将每个对象带到规定的位置;聚类。智能体必须根据颜色将对象排列成簇。SpriteWorld也可以用于强化学习以外的目的。例如:它用于生成具有受控因子分布的图像数据集,如论文“SpatialBroadcastDecoder:ASimpleArchitectureforLearningDisentangledRepresentationsinVAEs”(Wattersetal.,2019,https://arxiv.org/abs/1901.07017)。它还可以轻松扩展以生成与简单物理力(例如弹簧、重力等)相互作用的对象的数据集,这对于视觉动力学的无监督学习研究很有用。GitHub地址:https://github.com/deepmind/spriteworldbsuite我们在强化学习领域尝试将bsuite(BehaviorSuiteforReinforcementLearning,强化学习行为套件)构建到MNIST中。具体来说,bsuite是一系列旨在突出代理可扩展性关键点的实验。这些实验都以易于测试和迭代的实验方式体现了基本问题,例如“探索”或“记忆”。bsuite有两个主要目标:收集清晰、信息丰富且可扩展的问题,这些问题捕获高效通用学习算法设计中的关键问题;并通过他们在这些共享基准上的表现来研究代理人的行为。bsuite的当前实现在不同环境中自动进行手工实验,并收集相应的指标,以简化DRL代理的培训。另外,因为bsuite是实验的集合,所以它被定义在实验子目录中。每个子目录对应一个实验,包含:定义强化学习环境的文件,可以配置为提供不同的难度级别或不同的随机种子(例如);此环境的一系列关键字参数,在实验的扫描中指定。py文件;一个analysis.py文件,它定义了所提供的jupyter计算机中使用的图;bsuite的工作原理是在通过load和record*函数加载环境时记录每个环境中的结果。这意味着任何实验都会以正确的格式自动输出数据,以便使用计算机进行分析,而不受任何代理或算法结构的影响。GitHub地址:https://github.com/deepmind/bsuite