大多数强化学习(RL) 和顺序决策算法都需要代理通过与其环境的大量交互来生成训练数据,以实现最佳性能。这是非常低效的,尤其是在难以生成这些交互时,例如使用真实机器人收集数据或与人类专家交互。这个问题可以通过重用外部知识源来缓解,例如,RL Unplugged Atari 数据集,其中包括玩 Atari 游戏的合成代理的数据。
然而,这些数据集非常少,并且在顺序决策中生成数据的任务和方式多种多样(例如,专家数据或嘈杂的演示、人工或合成交互等),这使得它不切实际,甚至不适合于整个社区都在处理少数具有代表性的数据集,因为这些数据永远不会具有足够的代表性。此外,其中一些数据集以仅适用于某些算法的形式发布,这会阻止研究人员重复使用这些数据。例如,一些数据集没有包含与环境交互的序列,而是提供了一组随机交互,因此无法重建它们之间的时间关系,而另一些则以稍微不同的格式发布,
在此背景下,我们引入了强化学习数据集(RLDS),并发布了一套工具,用于记录、回放、操作、注释和共享数据以进行顺序决策,包括离线 RL、从演示中学习或模仿学习。RLDS 可以轻松共享数据集而不会丢失任何信息(例如,保持交互顺序而不是随机化它们),并且不受底层原始格式的影响,使用户能够在更广泛的任务上快速测试新算法。此外,RLDS 提供了用于收集由合成代理 ( EnvLogger ) 或人类 ( RLDS Creator ) 生成的数据的工具),以及用于检查和处理收集的数据。最终,与TensorFlow 数据集(TFDS) 的集成有助于与研究社区共享 RL 数据集。
使用 RLDS,用户可以以无损和标准格式记录代理与环境之间的交互。然后,他们可以使用和转换这些数据来提供不同的 RL 或顺序决策算法,或执行数据分析。
强化学习、离线强化学习或模仿学习中的数据集结构
算法可能会使用非常不同格式的数据,如果数据集的格式不明确,很容易引入由于对基础数据的误解而导致的错误。RLDS 通过定义数据集每个字段的内容和含义来明确数据格式,并提供工具来重新对齐和转换这些数据以适应任何算法实现所需的格式。为了定义数据格式,RLDS 利用了 RL 数据集固有的标准结构——即代理和环境之间交互(步骤)的序列(情节),其中代理可以是例如基于规则/自动化的控制器、正式计划者、人类、动物或这些的组合。这些步骤中的每一个都包含当前观察、应用于当前观察的动作、作为应用动作的结果获得的奖励以及与奖励一起获得的折扣。步骤还包括附加信息,以指示该步骤是情节的第一个还是最后一个,或者观察是否对应于终端状态。每个步骤和情节还可能包含可用于存储环境相关或模型相关数据的自定义元数据。
生成数据
研究人员通过记录与任何类型的代理所产生的环境的交互来生成数据集。为了保持其有用性,理想情况下,原始数据以无损格式存储,方法是记录生成的所有信息,保持数据项之间的时间关系(例如,步骤和情节的顺序),并且不对数据集如何进行任何假设将来会用到。为此,我们发布了EnvLogger ,这是一个以开放格式记录代理与环境交互的软件库。
EnvLogger 是一个环境包装器,用于记录代理与环境的交互并将它们保存在长期存储中。尽管 EnvLogger 无缝集成到 RLDS 生态系统中,但我们将其设计为可用作独立库以实现更高的模块化。
与大多数机器学习环境一样,为 RL 收集人类数据是一个耗时且劳动密集型的过程。解决这个问题的常用方法是使用众包,这需要用户友好地访问可能难以扩展到大量参与者的环境。在 RLDS 生态系统中,我们发布了一个名为RLDS Creator的基于 Web 的工具,它通过浏览器为任何人类可控环境提供了一个通用界面。用户可以与环境交互,例如在线玩 Atari 游戏,并且交互被记录和存储,以便以后可以使用 RLDS 加载它们以进行分析或训练代理。
共享数据 数据
集通常难以生成,与更广泛的研究社区共享不仅可以重现以前的实验,还可以加速研究,因为它可以更轻松地在一系列场景中运行和验证新算法。为此,RLDS 与TensorFlow Datasets (TFDS) 集成,这是一个用于在机器学习社区内共享数据集的现有库。一旦数据集成为 TFDS 的一部分,它就会在全局 TFDS 目录中被索引,任何研究人员都可以使用tfds.load(name_of_dataset)来访问它,它以 Tensorflow 或Numpy格式加载数据。
TFDS 独立于原始数据集的底层格式,因此任何具有 RLDS 兼容格式的现有数据集都可以与 RLDS 一起使用,即使它最初不是使用 EnvLogger 或 RLDS Creator 生成的。此外,使用 TFDS,用户可以保留对其数据的所有权和完全控制权,并且所有数据集都包含引用数据集作者的引文。
使用数据
研究人员可以使用数据集来分析、可视化或训练各种机器学习算法,如上所述,这些算法可能会使用与存储方式不同的格式的数据。例如,一些算法,如R2D2或R2D3,会消耗完整的情节;其他,例如行为克隆或ValueDice,消耗批次的随机步骤。为了实现这一点,RLDS 为 RL 场景提供了一个转换库。考虑到 RL 数据集的嵌套结构,这些转换已经过优化,它们包括自动批处理以加速其中一些操作。使用这些优化的转换,RLDS 用户可以充分灵活地轻松实现一些高级功能,并且开发的管道可跨 RLDS 数据集重复使用。示例转换包括针对选定步骤字段(或子字段)的完整数据集的统计数据或尊重情节边界的灵活批处理。您可以在本教程中探索现有的转换,并在Colab中查看更复杂的真实示例。
可用数据集
目前,TFDS中有以下数据集(与 RLDS 兼容) :
我们的团队致力于在不久的将来快速扩展此列表,欢迎新数据集对 RLDS 和 TFDS 的外部贡献。
结论
RLDS 生态系统不仅提高了 RL 研究和顺序决策问题的可重复性,而且通过更容易共享和重用数据来支持新的研究。我们希望 RLDS 提供的功能将引发发布结构化 RL 数据集、保存所有信息并覆盖更广泛的代理和任务的趋势。
致谢
除了这篇文章的作者之外,这项工作还由 Google 研究团队在巴黎和苏黎世与 Deepmind 合作完成。特别是 Sertan Girgin、Damien Vincent、Hanna Yakubovich、Daniel Kenji Toyama、Anita Gergely、Piotr Stanczyk、Raphaël Marinier、Jeremiah Harmsen、Olivier Pietquin 和 Nikola Momchev。我们还要感谢其他工程师和研究人员的合作,他们提供了反馈并为该项目做出了贡献。特别是 George Tucker、Sergio Gomez、Jerry Li、Caglar Gulcehre、Pierre Ruyssen、Etienne Pot、Anton Raichuk、Gabriel Dulac-Arnold、Nino Vieillard、Matthieu Geist、Alexandra Faust、Eugene Brevdo、Tom Granger、龚志涛、Toby Boyd 和小汤姆。