Este repositorio proporciona la implementación oficial de Thought Cloning: aprender a pensar mientras actúa imitando el pensamiento humano. Thought Cloning (TC) es un novedoso marco de aprendizaje por imitación que mejora la capacidad de los agentes, la seguridad de la IA y la interpretabilidad al entrenar a los agentes para que piensen como humanos . Este repositorio implementa TC en un dominio BabyAI de gridworld 2D parcialmente observable simulado con un conjunto de datos sintéticos de pensamiento humano. Consulte también el hilo del tweet de introducción.
Cree un entorno con python-venv o conda. Aquí se muestra un ejemplo con python-venv:
python3 -m venv thoughtcloning
source thoughtcloning/bin/activate
Este repositorio ha sido probado con Python 3.9.10 y PyTorch 1.7.1+cu110. Es posible que el código no sea compatible con una versión superior de gym, numpy o gym-minigrid.
git clone https://github.com/ShengranHu/Thought-Cloning.git
cd Thought-Cloning
pip3 install --upgrade pip
pip3 install --editable .
Nota: ejecute pip3 install --editable .
nuevamente si el directorio del proyecto se cambia posteriormente.
Cambie el directorio de salida en storage_dir
en /babyai/utils/__init__.py. Establezca path-to-thought-cloning
en la ruta de su proyecto de clonación de pensamientos.
El conjunto de datos sintéticos de pensamiento humano en BossLevel , los pesos del modelo TC entrenado y los entornos recopilados para probar el rendimiento fuera de distribución están disponibles en Google Drive.
Para reproducir un conjunto de datos de pensamiento sintético, puede utilizar el script scripts/make_agent_demos.py
con el siguiente comando:
scripts/make_agent_demos.py --episodes <NUM_OF_EPISODES> --env <ENV_NAME> --noise-rate 0.01
Para reproducir los principales resultados de rendimiento presentados en la Fig. 3 de nuestro artículo, utilice el siguiente comando:
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
Para cada experimento, puede cambiar el argumento group_name
para agrupar el registro y la salida del modelo en una carpeta específica.
Para reproducir los resultados de la evaluación de disparo cero presentados en la Fig. 4 (a) de nuestro artículo, utilice el siguiente comando:
scripts/evaluate_levels.py --env BabyAI-BossLevel-v0 --model <NAME_OF_MODEL> --testing-levels-path <PATH_TO_TESTING_LEVELS_PICKLE>
Nuestra implementación se basa en BabyAI 1.1 (dominio y línea base de aprendizaje de imitación), dan-visdial (codificador de transformador de componentes de nivel superior) y visdial-rl (decodificador RNN de componentes de nivel superior).
Si encuentra útil este proyecto, considere citar:
@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}
}