PUZZLES|强化学习数据集|逻辑推理数据集
收藏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 上测试了代码。
逐步指南
-
将 git 仓库克隆到您的本地机器。 shell git clone https://github.com/ETH-DISCO/rlp.git
-
进入目录。 shell cd rlp
-
安装所有必需的包并构建 C 库。 shell ./install.sh
-
激活
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.py 和 rlp/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_methods
、get_action_keys_methods
、get_observation_space_methods
和 get_observation_methods
这四个字典中分别添加新函数。
许可证
RLP
代码在 CC BY-NC 4.0 许可证下发布。更多信息请参见 LICENSE。
Simon Tathams Portable Puzzle Collection 在 MIT 许可证下发布,参见 puzzles/LICENCE。

- 1PUZZLES: A Benchmark for Neural Algorithmic Reasoning苏黎世联邦理工学院 · 2024年
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 收录