状态: 稳定版本
Crafter
开放世界生存游戏,用于在单一环境中评估智能体的广泛能力。
概述
Crafter 提供随机生成的 2D 世界,玩家需要寻找食物和水、寻找睡眠庇护所、抵御怪物、收集材料并制作工具。Crafter 旨在成为强化学习的有效基准测试,专注于以下设计目标:
-
研究挑战: Crafter 为当前方法提出了重大挑战,评估强大的泛化能力、广泛深入的探索、表征学习以及长期推理和信用分配。
-
有意义的评估: 通过每个回合中可以解锁的语义上有意义的成就来评估智能体,为有奖励和无监督的智能体能力谱系提供洞察。
-
迭代速度: Crafter 在单一环境中评估智能体的多种能力,与需要从头开始训练多个单独环境的基准测试套件相比,大大降低了计算需求。
查看研究论文了解更多信息:评估智能体能力谱系
@article{hafner2021crafter,
title={Benchmarking the Spectrum of Agent Capabilities},
author={Danijar Hafner},
year={2021},
journal={arXiv preprint arXiv:2109.06780},
}
亲自游玩
python3 -m pip install crafter # 安装 Crafter
python3 -m pip install pygame # 人机界面所需
python3 -m crafter.run_gui # 启动游戏
键盘映射(点击展开)
按键 | 动作 |
---|---|
WASD | 移动 |
空格 | 收集材料、从湖中饮水、攻击生物 |
TAB | 睡眠 |
T | 放置桌子 |
R | 放置石头 |
F | 放置熔炉 |
P | 放置植物 |
1 | 制作木镐 |
2 | 制作石镐 |
3 | 制作铁镐 |
4 | 制作木剑 |
5 | 制作石剑 |
6 | 制作铁剑 |
接口
要安装 Crafter,运行 pip3 install crafter
。环境遵循 OpenAI Gym 接口。观察是大小为 (64, 64, 3) 的图像,输出是 17 个分类动作之一。
import gym
import crafter
env = gym.make('CrafterReward-v1') # 或 CrafterNoReward-v1
env = crafter.Recorder(
env, './path/to/logdir',
save_stats=True,
save_video=False,
save_episode=False,
)
obs = env.reset()
done = False
while not done:
action = env.action_space.sample()
obs, reward, done, info = env.step(action)
评估
智能体允许使用 100 万环境步骤的预算,通过 22 项成就的成功率和几何平均分数来评估。仓库的 analysis
目录中包含了计算这些指标的示例脚本。
-
奖励: 稀疏奖励为在回合中解锁成就时得到
+1
,失去或恢复生命值时分别得到-0.1
或+0.1
。结果应以成功率和分数而非奖励形式报告。 -
成功率: 22 项成就的成功率计算为所有训练回合中解锁该成就的百分比,从而洞察智能体的能力谱系。
-
Crafter 分数: 分数是成功率的几何平均值,因此在难度较高的成就上的改进比在已有高成功率的成就上的改进贡献更大。
排行榜
如果您想将自己或其他算法添加到排行榜,请创建一个拉取请求。对于强化学习和无监督智能体类别,交互预算为 100 万步。外部知识类别的定义更为广泛。
强化学习
算法 | 得分 (%) | 奖励 | 开源 |
---|---|---|---|
好奇重放 | 19.4±1.6 | - | AutonomousAgentsLab/cr-dv3 |
PPO (ResNet) | 15.6±1.6 | 10.3±0.5 | snu-mllab/Achievement-Distillation |
DreamerV3 | 14.5±1.6 | 11.7±1.9 | danijar/dreamerv3 |
LSTM-SPCNN | 12.1±0.8 | — | astanic/crafter-ood |
EDE | 11.7±1.0 | — | yidingjiang/ede |
OC-SA | 11.1±0.7 | — | astanic/crafter-ood |
DreamerV2 | 10.0±1.2 | 9.0±1.7 | danijar/dreamerv2 |
PPO | 4.6±0.3 | 4.2±1.2 | DLR-RM/stable-baselines3 |
Rainbow | 4.3±0.2 | 6.0±1.3 | Kaixhin/Rainbow |
无监督代理
算法 | 得分 (%) | 奖励 | 开源 |
---|---|---|---|
Plan2Explore | 2.1±0.1 | 2.1±1.5 | danijar/dreamerv2 |
RND | 2.0±0.1 | 0.7±1.3 | alirezakazemipour/PPO-RND |
随机 | 1.6±0.0 | 2.1±1.3 | — |
外部知识
算法 | 得分 (%) | 奖励 | 使用 | 交互 | 开源 |
---|---|---|---|---|---|
人类 | 50.5±6.8 | 14.3±2.3 | 生活经验 | 0 | crafter_human_dataset |
SPRING | 27.3±1.2 | 12.3±0.7 | 大语言模型、场景描述、Crafter论文 | 0 | ❌ |
成就蒸馏 | 21.8±1.4 | 12.6±0.3 | 奖励结构 | 1M | snu-mllab/Achievement-Distillation |
ELLM | — | 6.0±0.4 | 大语言模型、场景描述 | 5M | ❌ |
基准
Crafter提供了各种代理的基准分数,包括有奖励和无奖励的情况。这些分数以JSON格式存储在仓库的scores
目录中。作为对比,人类专家玩家的得分为50.5%。基准实现可在单独的仓库中获取。
问题
请在 Github 上提交问题。