[NeurIPS '23 Spotlight] 思维克隆:通过模仿人类思维来学习边思考边行动
本仓库提供了思维克隆:通过模仿人类思维来学习边思考边行动的官方实现。思维克隆(TC)是一种新颖的模仿学习框架,通过训练智能体"像人类一样思考"来提升智能体能力、人工智能安全性和可解释性。该仓库在模拟的部分可观察2D网格世界领域BabyAI上实现了TC,并使用合成的人类思维数据集。另外还可以查看介绍推文串。
安装
创建环境
使用python-venv或conda创建环境。这里展示了使用python-venv的示例:
python3 -m venv thoughtcloning
source thoughtcloning/bin/activate
主要依赖
- Python >= 3.6
- PyTorch >= 1.7.1
- OpenAI Gym == 0.9.6
- NumPy == 1.19.5
- gym-minigrid == 1.0.0
- blosc
本仓库已在Python 3.9.10和PyTorch 1.7.1+cu110上测试过。代码可能与更高版本的gym、numpy或gym-minigrid不兼容。
安装步骤
- 按照PyTorch官方教程安装PyTorch 1.7.1+。
- 克隆此仓库并使用pip3安装其他依赖
git clone https://github.com/ShengranHu/Thought-Cloning.git
cd Thought-Cloning
pip3 install --upgrade pip
pip3 install --editable .
注意:如果之后更改了项目目录,请再次运行pip3 install --editable .
。
配置路径
在/babyai/utils/__init__.py中更改storage_dir
中的输出目录。将path-to-thought-cloning
设置为你的思维克隆项目路径。
复现论文中的结果
BossLevel上的合成人类思维数据集、训练好的TC模型权重以及用于测试分布外性能的收集环境可在Google Drive上获取。
复现合成思维数据集
要复现合成思维数据集,可以使用scripts/make_agent_demos.py
脚本,命令如下:
scripts/make_agent_demos.py --episodes <NUM_OF_EPISODES> --env <ENV_NAME> --noise-rate 0.01
思维克隆训练
要复现我们论文图3中展示的主要性能结果,请使用以下命令:
scripts/train_tc.py --env BabyAI-BossLevel-v0 --demos <DEMO_NAME> --memory-dim=2048 --recurrence=80 --batch-size=180 --instr-arch=attgru --instr-dim=256 --val-interval 2 --log-interval 2 --lr 5e-4 --epochs 160 --epoch-length 51200 --seed 0 --val-seed 2023 --model <NAME_OF_MODEL> --sg-coef 2 --warm-start --stop-tf 10
对于每个实验,你可以更改group_name
参数,将日志和模型输出分组到特定文件夹中。
分布外环境的零样本评估
要复现我们论文图4(a)中展示的零样本评估结果,请使用以下命令:
scripts/evaluate_levels.py --env BabyAI-BossLevel-v0 --model <NAME_OF_MODEL> --testing-levels-path <PATH_TO_TESTING_LEVELS_PICKLE>
相关链接
我们的实现基于BabyAI 1.1(领域和模仿学习基线)、dan-visdial(上层组件Transformer编码器)和visdial-rl(上层组件RNN解码器)。
引用
如果您觉得这个项目有用,请考虑引用:
@article{hu2023ThoughtCloning,
title={{Thought Cloning}: Learning to think while acting by imitating human thinking},
author={Hu, Shengran and Clune, Jeff},
journal={Advances in Neural Information Processing Systems},
volume={36},
year={2023}
}