跳转到主要内容

核心强化学习行为套件。一个强化学习实验的集合。

项目描述

强化学习行为套件(bsuite

PyPI Python version PyPI version pytest

radar plot

简介

bsuite是一系列精心设计的实验,旨在研究强化学习(RL)代理的核心能力,具有两个主要目标。

  1. 收集清晰、信息丰富且可扩展的问题,这些问题捕捉了设计高效和通用学习算法中的关键问题。
  2. 通过代理在这些共享基准上的表现来研究代理的行为。

此库自动化了任何代理在这些基准上的评估和分析。它旨在促进对RL核心问题的可重复和可访问的研究,并最终设计出更优越的学习算法。

未来,我们希望纳入来自研究社区的更多优秀实验,并承诺由知名研究人员组成的委员会定期审查这些实验。

欲了解更多全面概述,请参阅附带的论文

技术概述

bsuite是一个实验集合,定义在experiments子目录中。每个子目录对应一个实验,并包含

  • 定义RL环境的文件,可能可配置以提供不同难度的级别或不同的随机种子(例如)。
  • 该环境的参数序列,定义在实验的sweep.py文件中找到的SETTINGS变量中。
  • 定义在提供的Jupyter笔记本中使用的图形的analysis.py文件。

bsuite通过在通过包含日志记录功能的load_and_record*函数加载环境时记录每个环境的结果来工作。这意味着任何实验都将自动输出用于笔记本分析的格式正确的数据,而不会对代理或算法的结构有任何限制。

我们将所有结果和分析汇总到一个预先制作的jupyter笔记本中bit.ly/bsuite-colab

入门指南

如果您是bsuite的新用户,您可以从我们的colab教程开始。这个Jupyter笔记本托管在免费云服务器上,所以您可以直接开始编码,而无需在您的机器上安装任何东西。之后,您可以根据以下说明在本地机器上运行bsuite

安装

我们已经测试了在Python 3.6和3.7上运行bsuite。为了安装依赖项

  1. 可选:我们建议使用Python虚拟环境来管理您的依赖项,以免破坏您的系统安装

    python3 -m venv bsuite
    source bsuite/bin/activate
    pip install --upgrade pip setuptools
    
  2. PyPI直接安装bsuite

    pip install bsuite
    
  3. 可选:为了安装baselines示例的依赖项(不包括OpenAI和Dopamine示例),请运行

    pip install bsuite[baselines]
    

环境

每个环境及其相应实验的完整描述可以在analysis/results.ipynb Jupyter笔记本中找到。

这些环境都具有较小的观察空间,允许在CPU上使用小网络实现合理性能。

加载环境

环境由一个bsuite_id字符串指定,例如"deep_sea/7"。这个字符串表示实验以及要使用的环境设置(索引),如技术概述部分中所述。

有关每个环境及其相应实验设置的完整描述,请参阅论文

import bsuite

env = bsuite.load_from_id('catch/0')

运行所有实验所需的bsuite_id序列可以通过程序访问

from bsuite import sweep

sweep.SWEEP

此模块还包含每个实验的bsuite_id,通过与实验名称对应的大写常量进行,例如

sweep.DEEP_SEA
sweep.DISCOUNTING_CHAIN

此外,可以通过以下方式加载具有相同标签的bsuite_id序列

from bsuite import sweep

sweep.TAGS

变量根据其底层标签将bsuite环境分组,因此可以使用以下方式加载所有basic任务或scale任务

sweep.TAGS['basic']
sweep.TAGS['scale']

包含日志记录功能的加载环境

我们包括两种自动日志记录的实现,可以通过以下方式访问

我们还在logging/terminal_logging.py中包含一个终端记录器,通过bsuite.load_and_record_to_terminal公开。

如果您需要将结果保存到不同的存储系统中,编写自己的日志机制很容易。参见CSV实现,这是最简单的参考。

与环境交互

我们的环境实现了在 dm_env 中定义的Python接口。

更具体地说,所有我们的环境都接受一个离散的、基于0的整数动作(或者等价地,一个形状为 () 的标量NumPy数组)。

要确定特定环境的动作数量,请使用

num_actions = env.action_spec().num_values

每个环境都以NumPy数组的形式返回观察结果。

在bsuite中,我们对每个环境都公开了一个 bsuite_num_episodes 属性。这允许用户运行bsuite分析所需的精确的回合数,这可能因实验中使用的不同环境而异。

以下是一个假设具有 step() 方法的代理的示例运行循环。

for _ in range(env.bsuite_num_episodes):
  timestep = env.reset()
  while not timestep.last():
    action = agent.step(timestep)
    timestep = env.step(action)
  agent.step(timestep)

以 'OpenAI Gym' 格式使用 bsuite

要使用具有 OpenAI Gym 接口的代码库与 bsuite 一起使用,请使用 utils/gym_wrapper.py 中的 GymFromDMEnv 类。

import bsuite
from bsuite.utils import gym_wrapper

env = bsuite.load_and_record_to_csv('catch/0', results_dir='/path/to/results')
gym_env = gym_wrapper.GymFromDMEnv(env)

请注意,bsuite 默认不包含Gym,因此您可能需要单独安装它。

基线代理

我们在 baselines/ 子目录中包括了几个常见代理的实现,以及一个最小运行循环。

有关如何安装安装时所需的依赖项的说明,请参阅 安装 部分。这些依赖项默认不安装,因为 bsuite 不要求用户使用任何特定的机器学习库。

运行整个实验套件

baselines 文件夹中的每个代理都包含一个 run 脚本,它作为示例,可以通过传递 --bsuite_id=SWEEP 标志对单个环境或整个实验套件进行运行;这将启动一个进程池,在主机机器允许的情况下并行运行尽可能多的实验。在一台12核机器上,对于大多数代理,这将在一夜之间完成。或者,您可以使用 run_on_gcp.sh 在 Google Compute Platform 上运行,以下将概述其步骤。

在 Google Cloud Platform 上运行实验

run_on_gcp.sh 按以下顺序执行

  1. 创建具有指定规格的实例(默认为64核CPU优化)。
  2. 使用 git clone 复制 bsuite 并安装它以及其他依赖项。
  3. 在指定的环境中运行指定的代理(目前限于 /baselines)。
  4. 将生成的SQLite文件从远程实例复制到本地机器的 /tmp/bsuite.db
  5. 关闭创建的实例。

为了运行脚本,您首先需要创建一个计费账户。然后按照以下说明在此处设置和初始化 Cloud SDK。在完成 gcloud init 后,您就可以在 Google Cloud 上运行 bsuite 了。

为此,使 run_on_gcp.sh 可执行,然后运行它

chmod +x run_on_gcp.sh
./run_on_gcp.sh

实例创建后,将打印实例名称。然后您可以通过选择 Compute Engine -> Instances 并点击 SSH 来连接到实例。请注意,这不是必需的,因为一旦准备好,结果将复制到您的本地机器。但是,如果您想对代理和环境进行本地修改,则 ssh 可能会方便一些。在这种情况下,在 ssh 后执行以下操作

~/bsuite_env/bin/activate

激活虚拟环境。然后您可以通过以下方式运行代理

python ~/bsuite/bsuite/baselines/dqn/run.py --bsuite_id=SWEEP

例如。

分析

bsuite 包含一个预制的分析 Jupyter Notebook,包含在 analysis/results.ipynb 中。此笔记本加载和处理日志数据,并为每个实验生成得分和图表。我们建议与 Colaboratory 一起使用此笔记本。

您可以在这里找到 bsuite 报告的示例。

bsuite 报告

您可以使用 bsuite 生成一个自动化的 1 页附录,该附录总结了您 RL 算法的关键功能。此附录与大多数主要 ML 会议格式兼容。例如输出运行:

pdflatex bsuite/reports/neurips_2019/neurips_2019.tex

更多 bsuite 报告的示例可以在 reports/ 子目录中找到。

引用

如果您在您的作品中使用了 bsuite,请引用附带的 论文

@inproceedings{osband2020bsuite,
    title={Behaviour Suite for Reinforcement Learning},
    author={Osband, Ian and
            Doron, Yotam and
            Hessel, Matteo and
            Aslanides, John and
            Sezener, Eren and
            Saraiva, Andre and
            McKinney, Katrina and
            Lattimore, Tor and
            {Sz}epesv{\'a}ri, Csaba and
            Singh, Satinder and
            Van Roy, Benjamin and
            Sutton, Richard and
            Silver, David and
            van Hasselt, Hado},
    booktitle={International Conference on Learning Representations},
    year={2020},
    url={https://openreview.net/forum?id=rygf-kSYwH}
}

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

bsuite-0.3.5.tar.gz (89.0 kB 查看哈希值)

上传时间

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面