five

PUZZLES|强化学习数据集|逻辑推理数据集

收藏
arXiv2024-06-29 更新2024-07-04 收录
强化学习
逻辑推理
下载链接:
https://github.com/ETH-DISCO/rlp
下载链接
链接失效反馈
资源简介:
PUZZLES是由苏黎世联邦理工学院的研究团队基于Simon Tatham的便携式谜题集合开发的强化学习基准数据集,包含40种不同复杂度的逻辑谜题。这些谜题具有可调整的大小和难度,适用于评估强化学习代理的算法和逻辑推理能力。数据集的创建过程中,研究团队将原始C源代码扩展至Pygame库标准,并集成到Gymnasium框架API中,使得用户可以灵活调整谜题的难度和大小。PUZZLES主要应用于强化学习领域,旨在推动算法和逻辑推理在机器学习中的应用和发展。
提供机构:
苏黎世联邦理工学院
创建时间:
2024-06-29
原始信息汇总

PUZZLES: A Benchmark for Neural Algorithmic Reasoning

描述

本代码支持提交的 PUZZLES: A Benchmark for Neural Algorithmic Reasoning

我们提供 RLP,一个基于 Simon Tathams Portable Puzzle Collection 的强化学习(RL)环境,设计用于与 Faramas Gymnasium RL 工具一起使用。

除了 RLP,您还可以找到用于重现论文中结果的脚本。为此,我们在下面提供了使用说明。

安装指南

要求

Python 3.10+,一个较新的 C 编译器,如 GCC 或 Clang,CMake 3.26。

我们仅在 Linux 上测试了代码。

逐步指南

  1. 将 git 仓库克隆到您的本地机器。 shell git clone https://github.com/ETH-DISCO/rlp.git

  2. 进入目录。 shell cd rlp

  3. 安装所有必需的包并构建 C 库。 shell ./install.sh

  4. 激活 RLP 的虚拟 Python 环境。 shell source rlpvenv/bin/activate

使用指南

成功遵循安装指南后,您现在可以运行 RLP 环境!

初始化一个谜题时,必须提供所需的谜题名称。请参考谜题名称列表

您可以在 experiment_commands.txt 中找到重现论文实验的确切命令。

训练一个代理

要在特定谜题中训练代理,请在仓库的顶层运行以下命令: shell ./run_training.py --puzzle <谜题名称> --arg <参数>

运行 ./run_training.py --help 以获取可自定义选项的完整范围。

请参考谜题名称列表

运行先前训练的代理

要在特定谜题上运行先前训练的代理,请在仓库的顶层运行以下命令: shell ./run_trained_agent.py --puzzle <谜题名称> --arg <参数>

运行 ./run_trained_agent.py --help 以获取可自定义选项的完整范围。

请参考谜题名称列表

随机代理

要在其中一个谜题中让代理执行随机动作,请在仓库的顶层运行以下命令: shell ./run_random.py --puzzle <谜题名称> --arg <参数>

运行 ./run_random.py --help 以获取可自定义选项的完整范围。

请参考谜题名称列表

手动游玩

要手动玩其中一个谜题,请在仓库的顶层运行以下命令: shell ./run_puzzle.py --puzzle <谜题名称>

运行 ./run_puzzle.py --help 以获取可自定义选项的完整范围。

请参考谜题名称列表

谜题名称列表

<table> <tbody> <tr> <td width=20% align=center> blackbox </td> <td width=20% align=center> bridges </td> <td width=20% align=center> cube </td> <td width=20% align=center> dominosa </td> <td width=20% align=center> fifteen </td> </tr> <tr> <td width=20% align=center> filling </td> <td width=20% align=center> flip </td> <td width=20% align=center> flood </td> <td width=20% align=center> galaxies </td> <td width=20% align=center> guess </td> </tr> <tr> <td width=20% align=center> inertia </td> <td width=20% align=center> keen </td> <td width=20% align=center> lightup </td> <td width=20% align=center> loopy </td> <td width=20% align=center> magnets </td> </tr> <tr> <td width=20% align=center> map </td> <td width=20% align=center> mines </td> <td width=20% align=center> mosaic </td> <td width=20% align=center> net </td> <td width=20% align=center> netslide </td> </tr> <tr> <td width=20% align=center> palisade </td> <td width=20% align=center> pattern </td> <td width=20% align=center> pearl </td> <td width=20% align=center> pegs </td> <td width=20% align=center> range </td> </tr> <tr> <td width=20% align=center> rect </td> <td width=20% align=center> samegame </td> <td width=20% align=center> signpost </td> <td width=20% align=center> singles </td> <td width=20% align=center> sixteen </td> </tr> <tr> <td width=20% align=center> slant </td> <td width=20% align=center> solo </td> <td width=20% align=center> tents </td> <td width=20% align=center> towers </td> <td width=20% align=center> tracks </td> </tr> <tr> <td width=20% align=center> twiddle </td> <td width=20% align=center> undead </td> <td width=20% align=center> unequal </td> <td width=20% align=center> unruly </td> <td width=20% align=center> untangle </td> </tr> </tbody> </table>

开发者笔记

自定义奖励结构

可以使用 Gymnasium 环境包装器(文档)来提供自定义奖励,以改进代理的学习过程。谜题的内部游戏状态在每次 step() 后由环境创建的 info 字典中提供。其属性可以使用以下方式访问: python info[puzzle_state][<属性名称>]

示例可以在 custom_rewards_example.py 中找到。

添加新谜题

可以通过创建包含游戏逻辑和相关数据结构的新 C 后端来添加新谜题。更多详细信息请参考 Simon Tatham 的开发者文档。新 C 文件应放置在 puzzles 文件夹中,其他后端文件也位于该文件夹中。随后,需要通过在 puzzles/CMakeLists.txt 中添加条目来将新谜题添加到构建系统中。

此外,环境中的某些函数需要实现或调整,例如检索包含谜题逻辑状态的字典。相关代码需要在 rlp/specific_api.pyrlp/envs/observation_spaces.py 文件中进行修改。

<table> <tr> <th> 函数 </th> <th> 描述 </th> </tr>

<tr>

<td> <pre> make_puzzle_state() </pre> </td>

<td> 将表示谜题内部逻辑状态的数据结构转换为 Python 字典。 </td>

</tr>

<tr>

<td> <pre> set_api_structures_newpuzzle() </pre> </td>

<td> 设置后端的 <i>game_params</i>、<i>game_ui</i>、<i>game_drawstate</i>、<i>game_state</i> 及其相关类的 <i>ctypes</i> 定义。 </td>

</tr>

<tr>

<td> <pre> get_action_keys_newpuzzle() </pre> </td>

<td> 返回一个包含用于玩谜题的所有键盘键的 <i>dict</i>。 </td>

</tr>

<tr>

<td> <pre> get_observation_space_newpuzzle() </pre> </td>

<td> 返回一个包含谜题内部数据观察空间的 <i>dict</i>。 </td>

</tr>

<tr>

<td> <pre> get_observation_newpuzzle() </pre> </td>

<td> 返回一个包含谜题内部数据观察的 <i>dict</i>。 </td>

</tr> </table>

对于后四个函数,需要在 set_api_structures_methodsget_action_keys_methodsget_observation_space_methodsget_observation_methods 这四个字典中分别添加新函数。

许可证

RLP 代码在 CC BY-NC 4.0 许可证下发布。更多信息请参见 LICENSE

Simon Tathams Portable Puzzle Collection 在 MIT 许可证下发布,参见 puzzles/LICENCE

AI搜集汇总
数据集介绍
main_image_url
构建方式
PUZZLES 数据集的构建基于 Simon Tatham 的便携式谜题集合,该集合包含 40 种多样化的逻辑谜题,具有可调节的大小和复杂度。每个谜题还具有多种额外的配置参数。数据集通过扩展原始的 C 源代码以符合 Pygame 库的标准,并将其集成到 Gymnasium 框架 API 中,提供了一个标准化的接口,便于强化学习应用的使用。此外,PUZZLES 允许用户任意调整逻辑谜题的大小和难度,从而详细评估强化学习代理的强度和泛化能力。
使用方法
PUZZLES 数据集可以通过 Gymnasium 框架 API 进行访问和使用,这为强化学习算法提供了一个标准化的接口。用户可以通过调整谜题的大小和难度来定制训练环境,以评估代理的性能。数据集支持自定义奖励结构,用户可以根据具体谜题的特点设计中间奖励,以加速学习过程。此外,PUZZLES 还提供了动作掩码功能,可以显著提高训练效率,特别是在处理复杂谜题时。
背景与挑战
背景概述
PUZZLES数据集由ETH Zürich的研究人员Benjamin Estermann, Luca A. Lanzendörfer, Yannick Niedermayr和Roger Wattenhofer创建,旨在推动强化学习(RL)领域中算法和逻辑推理的研究。该数据集基于Simon Tatham的便携式谜题集合,包含了40种多样化的逻辑谜题,这些谜题具有可调节的大小和复杂度,许多谜题还具有多样化的额外配置参数。PUZZLES的引入填补了RL领域中逻辑和算法推理评估的空白,为研究人员提供了一个标准化的评估框架,以衡量和促进RL算法在这方面的进展。
当前挑战
PUZZLES数据集面临的挑战主要集中在解决逻辑和算法推理问题的复杂性上。首先,构建过程中需要确保谜题的多样性和可调节性,以适应不同层次的RL算法。其次,RL算法在处理这些谜题时,需要具备高度的泛化能力,能够在不同大小和复杂度的谜题中表现出色。此外,奖励设计也是一个关键挑战,因为逻辑谜题通常具有明确的解决方案,如何设计有效的奖励机制以引导RL算法快速找到解决方案是一个重要问题。最后,评估RL算法在PUZZLES上的表现时,需要考虑其在不同谜题上的适应性和鲁棒性,确保评估结果的全面性和公正性。
常用场景
经典使用场景
PUZZLES数据集的经典使用场景在于评估强化学习(RL)代理在逻辑和算法推理任务中的表现。通过提供40种不同类型和复杂度的逻辑谜题,PUZZLES允许研究者在可调节的难度和规模下测试RL代理的推理能力。这些谜题涵盖了从经典的数独和扫雷到更为复杂的图形和网络问题,为RL算法提供了一个多样化的测试平台。
解决学术问题
PUZZLES数据集解决了机器学习和人工智能领域中一个重要的学术问题,即如何使机器具备与人类相似的逻辑和算法推理能力。通过提供一个标准化的基准,PUZZLES促进了这一领域的研究进展,帮助研究者开发和评估能够进行复杂推理的RL算法。这不仅有助于提升机器在解决实际问题中的智能水平,还为理解人类认知过程提供了新的视角。
实际应用
PUZZLES数据集的实际应用场景广泛,包括但不限于教育、游戏设计和人工智能辅助决策系统。在教育领域,它可以用于开发智能教学工具,帮助学生提升逻辑思维能力。在游戏设计中,PUZZLES可以作为测试和优化游戏AI的工具,提升游戏的挑战性和趣味性。此外,PUZZLES还可以应用于需要复杂决策支持的领域,如金融、医疗和安全,帮助开发更智能的决策辅助系统。
数据集最近研究
最新研究方向
近年来,PUZZLES数据集在强化学习(RL)领域引起了广泛关注,特别是在算法和逻辑推理方面。该数据集基于Simon Tatham的便携式谜题集合,包含了40种多样化的逻辑谜题,这些谜题具有可调节的大小和复杂度,许多谜题还具有多样化的附加配置参数。PUZZLES的引入旨在促进RL在算法和逻辑推理方面的进展。最新的研究方向主要集中在评估和提升RL代理在这些逻辑谜题上的表现,探索如何通过改进奖励设计、增强代理的泛化能力以及利用先进的神经网络架构(如图神经网络和Transformer)来解决这些复杂的逻辑问题。此外,研究还关注于如何通过动作掩码和自定义观察结构来提高训练效率和代理性能。这些研究不仅有助于提升RL在逻辑推理任务中的表现,也为开发更智能、更具解释性的AI系统提供了新的思路。
相关研究论文
  • 1
    PUZZLES: A Benchmark for Neural Algorithmic Reasoning苏黎世联邦理工学院 · 2024年
以上内容由AI搜集并总结生成
用户留言
有没有相关的论文或文献参考?
这个数据集是基于什么背景创建的?
数据集的作者是谁?
能帮我联系到这个数据集的作者吗?
这个数据集如何下载?
点击留言
数据主题
具身智能
数据集  4098个
机构  8个
大模型
数据集  439个
机构  10个
无人机
数据集  37个
机构  6个
指令微调
数据集  36个
机构  6个
蛋白质结构
数据集  50个
机构  8个
空间智能
数据集  21个
机构  5个
5,000+
优质数据集
54 个
任务类型
进入经典数据集
热门数据集

btc

该数据集可能包含金融市场交易数据,具体包括时间戳、开盘价、最高价、最低价、收盘价和交易量等信息。数据集分为训练集,包含2465个样本,总大小为175324字节。

huggingface 收录

Global Livestock Geo-Wiki

Global Livestock Geo-Wiki是一个全球牲畜分布数据集,旨在提供全球范围内牲畜分布的详细信息。该数据集包括不同类型的牲畜(如牛、羊、猪等)的分布情况,以及相关的环境和社会经济数据。

livestock.geo-wiki.org 收录

MIT Indoor Scenes

室内场景识别是高水平视觉中一个具有挑战性的开放性问题。大多数适用于室外场景的场景识别模型在室内领域的表现都较差。该数据库包含67个室内类别,共15620张图像。图像的数量因类别而异,但每个类别至少有100张图像。所有图像均为jpg格式。此处提供的图像仅用于研究目的。

阿里云天池 收录

FMA (Free Music Archive)

免费音乐档案 (FMA) 是一个大型数据集,用于评估音乐信息检索中的多个任务。它包含 343 天的音频,来自 16,341 位艺术家的 106,574 首曲目和 14,854 张专辑,按 161 种流派的分级分类排列。它提供完整长度和高质量的音频、预先计算的功能,以及轨道和用户级元数据、标签和自由格式的文本,例如传记。作者定义了四个子集:Full:完整数据集,Large:音频限制为 30 秒的完整数据集 从轨道中间提取的剪辑(如果短于 30 秒,则为整个轨道),Medium:选择25,000 个具有单一根流派的 30 年代剪辑,小:一个平衡的子集,包含 8,000 个 30 年代剪辑,其中 8 种根流派中的每一个都有 1,000 个剪辑。官方分为训练集、验证集和测试集(80/10/10)使用分层抽样来保留每个流派的曲目百分比。同一艺术家的歌曲只是一组的一部分。资料来源:FMA:音乐分析数据集

OpenDataLab 收录

THUCNews

THUCNews是根据新浪新闻RSS订阅频道2005~2011年间的历史数据筛选过滤生成,包含74万篇新闻文档(2.19 GB),均为UTF-8纯文本格式。本次比赛数据集在原始新浪新闻分类体系的基础上,重新整合划分出14个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐。提供训练数据共832471条。

github 收录