Ce référentiel fournit l'implémentation officielle de Thought Cloning : Apprendre à penser en agissant en imitant la pensée humaine. Le clonage de pensée (TC) est un nouveau cadre d'apprentissage par imitation qui améliore les capacités des agents, la sécurité de l'IA et l'interprétabilité en entraînant les agents à penser comme des humains . Ce référentiel implémente TC sur un domaine de grille 2D partiellement observable simulé BabyAI avec un ensemble de données synthétiques sur la pensée humaine. Consultez également le fil de tweet d’introduction.
Créez un environnement avec python-venv ou conda. Un exemple avec python-venv est présenté ici :
python3 -m venv thoughtcloning
source thoughtcloning/bin/activate
Ce référentiel a été testé avec Python 3.9.10 et PyTorch 1.7.1+cu110. Le code peut ne pas être compatible avec la version supérieure de gym, numpy ou gym-minigrid.
git clone https://github.com/ShengranHu/Thought-Cloning.git
cd Thought-Cloning
pip3 install --upgrade pip
pip3 install --editable .
Remarque : exécutez pip3 install --editable .
encore une fois si le répertoire du projet est modifié par la suite.
Modifiez le répertoire de sortie dans storage_dir
dans /babyai/utils/__init__.py. Définissez path-to-thought-cloning
sur le chemin de votre projet de clonage de pensée.
L'ensemble de données synthétiques sur la pensée humaine sur BossLevel , les poids du modèle TC formés et les environnements collectés pour tester les performances hors distribution sont disponibles dans Google Drive.
Pour reproduire un ensemble de données de pensée synthétique, vous pouvez utiliser le script scripts/make_agent_demos.py
avec la commande suivante :
scripts/make_agent_demos.py --episodes <NUM_OF_EPISODES> --env <ENV_NAME> --noise-rate 0.01
Pour reproduire les principaux résultats de performances présentés dans la figure 3 de notre article, utilisez la commande suivante :
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
Pour chaque expérience, vous pouvez modifier l'argument group_name
en groupant le journal et la sortie du modèle dans un dossier spécifique.
Pour reproduire les résultats de l'évaluation zéro-shot présentés sur la figure 4 (a) de notre article, utilisez la commande suivante :
scripts/evaluate_levels.py --env BabyAI-BossLevel-v0 --model <NAME_OF_MODEL> --testing-levels-path <PATH_TO_TESTING_LEVELS_PICKLE>
Notre implémentation est basée sur BabyAI 1.1 (base de référence pour le domaine et l'apprentissage par imitation), dan-visdial (encodeur de transformateur de composants de niveau supérieur) et visdial-rl (décodeur RNN de composants de niveau supérieur).
Si vous trouvez ce projet utile, pensez à citer :
@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}
}