大多数强化学习(RL)和顺序决策算法都需要代理通过与其环境的大量交互来生成训练数据,以实现最佳性能。这是非常低效的,尤其是当产生这些交互很困难时,例如使用真正的机器人收集数据或与人类专家进行交互。这个问题可以通过重用外部知识源来缓解,例如,RLUnpluggedAtari数据集,其中包括玩Atari游戏的合成代理的数据。
在此背景下,我们引入了强化学习数据集(RLDS),并发布了一套工具,用于记录、重放、操作、注释和共享数据以进行顺序决策,包括离线RL、从演示中学习或模仿学习。RLDS可以很容易地共享数据集而不会丢失任何信息(例如,保持交互顺序而不是随机化它们)并且不知道底层的原始格式,使用户能够在更广泛的任务上快速测试新算法。此外,RLDS提供了用于收集由合成代理(EnvLogger)或人类(RLDSCreator)生成的数据的工具),以及检查和处理收集到的数据。最终,与TensorFlow数据集(TFDS)的集成有助于与研究社区共享RL数据集。
EnvLogger是一个环境包装器,用于记录代理与环境的交互并将它们保存在长期存储中。尽管EnvLogger无缝集成到RLDS生态系统中,但我们将其设计为可用作独立库以实现更大的模块化。
与大多数机器学习环境一样,为RL收集人类数据是一个耗时且劳动密集型的过程。解决这个问题的常用方法是使用众包,这需要用户友好地访问可能难以扩展到大量参与者的环境。在RLDS生态系统中,我们发布了一个名为RLDSCreator的基于网络的工具,它通过浏览器为任何人类可控的环境提供了一个通用接口。用户可以与环境交互,例如,在线玩Atari游戏,交互被记录和存储,以便以后可以使用RLDS加载回来进行分析或训练代理。
集通常难以生成,与更广泛的研究社区共享不仅可以实现以前实验的可重复性,还可以加速研究,因为它可以更轻松地在一系列场景中运行和验证新算法。为此,RLDS与TensorFlow数据集(TFDS)集成,这是一个用于在机器学习社区内共享数据集的现有库。一旦数据集成为TFDS的一部分,它就会在全局TFDS目录中编入索引,任何研究人员都可以使用tfds.load(name_of_dataset)访问它,它以Tensorflow或Numpy格式加载数据。
TFDS独立于原始数据集的底层格式,因此任何具有RLDS兼容格式的现有数据集都可以与RLDS一起使用,即使它最初不是由EnvLogger或RLDSCreator生成的。此外,使用TFDS,用户保留对其数据的所有权和完全控制权,并且所有数据集都包含引用数据集作者的信息。
使用数据研究人员可以使用数据集来分析、可视化或训练各种机器学习算法,如上所述,这些算法可能使用与存储方式不同的格式的数据。例如,一些算法,如R2D2或R2D3,消耗完整的剧集;其他,如行为克隆或ValueDice,消耗随机步骤的批次。为了实现这一点,RLDS为RL场景提供了一个转换库。考虑到RL数据集的嵌套结构,这些转换已经过优化,并且它们包括自动批处理以加速其中一些操作。使用这些优化的转换,RLDS用户可以完全灵活地轻松实现一些高级功能,并且开发的管道可以跨RLDS数据集重用。示例转换包括选定步骤字段(或子字段)的整个数据集的统计数据或考虑情节边界的灵活批处理。您可以在本教程中探索现有的转换,并在此Colab中查看更复杂的真实示例。
目前,以下数据集(与RLDS兼容)在TFDS中:
我们的团队致力于在不久的将来快速扩展此列表,欢迎新数据集对RLDS和TFDS的外部贡献。
RLDS生态系统不仅提高了RL和顺序决策问题研究的可重复性,而且通过更容易地共享和重用数据来实现新的研究。我们希望RLDS提供的功能将引发一种发布结构化RL数据集、保存所有信息并涵盖更广泛的代理和任务的趋势。