MiniHack: A new sandbox for open-ended reinforcement learning
强化学习 (RL) 已成为解决顺序决策问题的宝贵工具,其研究范围从机器人技术到个性化内容再到改进 MRI 扫描。
强化学习的进展通常由模拟基准驱动,但随着研究人员开发出在这些任务上执行近乎最优的算法,已建立的基准(例如 Arcade Learning Environment 和 MuJoCo)开始饱和。新的基准测试,例如 ProcGen、Minecraft 和 NetHack,将帮助 RL 研究社区构建强大的新算法,但很难弄清楚在这些复杂而丰富的环境中正在测试哪些类型的问题。由于由整个游戏组成,这些测试平台并未明确设计用于评估 RL 代理的特定能力,例如探索、记忆和信用分配。理想情况下,从业者应该能够为特定的研究问题定义大量控制良好的任务,并通过增加它们的复杂性和丰富度来轻松调整它们,而无需任何繁重的工程。为了填补这一空白,我们构建了 MiniHack,这是一个基于 NetHack 的环境创建框架和随附的任务套件,它是世界上最难的游戏之一。使用此工具,工程师可以轻松创建一系列挑战现代 RL 方法并针对 RL 中特定问题的任务。
MiniHack 现在是开源的,可在 GitHub 上获得。 研究人员可以使用我们的详细文档来了解如何使用 MiniHack 并在这篇 NeurIPS 2021 论文中获得有关该项目的更多详细信息。
轻松创建复杂的问题解决任务
MiniHack 使用 NetHack 学习环境 (NLE) 为环境设计人员提供一种方法,可以轻松利用游戏的丰富性来执行复杂的 RL 任务。 这个新的沙盒带有大量游戏中预先存在的资产,例如 500 多个怪物和 450 件物品,包括武器、魔杖、工具和法术书,所有这些都具有独特的特征和复杂的环境动态。 该框架允许 RL 从业者超越具有有限动作空间的简单网格世界风格的导航任务,转而承担更复杂的技能获取和解决问题的任务。
为此,MiniHack 利用了用于描述 NetHack 中地牢的所谓描述文件。 描述文件是使用人类可读的概率编程类域特定语言 (DSL) 编写的。 只需几行代码,人们就可以生成各种各样的环境,控制每一个小细节,从怪物的位置和类型,到关卡的陷阱、物体和地形,同时引入挑战泛化能力的随机性 RL 智能体。
DSL 对环境的未指定部分和使用随机生成函数具有一流的支持。 这意味着每次环境重置并且代理开始新的情节时,智能体出现的级别可能会显着不同。 这种程序内容生成允许 MiniHack 评估 RL 对以前未见过的情况的泛化能力,从而使代理的训练在本质上更加强大和通用。
对于没有时间学习描述文件细节的研究人员,我们还提供了一个方便的接口来描述 Python 中的整个环境。
使用流行的 Gym 界面的 MiniHack 环境的所有内容都是高度可定制的。 用户可以轻松选择智能体接收的观察类型,例如基于像素的、符号的或文本的,以及它可以执行的操作。 此外,我们提供了一个方便的界面来指定所需的自定义奖励函数,以指导代理的学习。
我们还使用 MiniHack 构建了一套 RL 任务,用于测试 RL 智能体的核心功能,并将它们作为 MiniHack 的一部分发布。 这组任务可以像任何其他 RL 基准测试一样使用。 此外,这些任务还可以作为希望开发新任务的研究人员的基础。