Dieses Repository stellt die offizielle Implementierung für Thought Cloning: Lernen des Denkens beim Handeln durch Nachahmung menschlichen Denkens bereit. Thought Cloning (TC) ist ein neuartiges Imitationslern-Framework, das die Agentenfähigkeit, die KI-Sicherheit und die Interpretierbarkeit verbessert, indem es Agenten trainiert, wie Menschen zu denken . Dieses Repository implementiert TC auf einer simulierten, teilweise beobachtbaren 2D-Gitterweltdomäne BabyAI mit einem synthetischen menschlichen Gedankendatensatz. Schauen Sie sich auch den Einführungs-Tweet-Thread an.
Erstellen Sie eine Umgebung mit Python-Venv oder Conda. Ein Beispiel mit Python-Venv wird hier gezeigt:
python3 -m venv thoughtcloning
source thoughtcloning/bin/activate
Dieses Repository wurde mit Python 3.9.10 und PyTorch 1.7.1+cu110 getestet. Der Code ist möglicherweise nicht mit höheren Versionen von Gym, Numpy oder Gym-Minigrid kompatibel.
git clone https://github.com/ShengranHu/Thought-Cloning.git
cd Thought-Cloning
pip3 install --upgrade pip
pip3 install --editable .
Hinweis: Führen Sie pip3 install --editable .
erneut, wenn das Projektverzeichnis nachträglich geändert wird.
Ändern Sie das Ausgabeverzeichnis in storage_dir
in /babyai/utils/__init__.py. Legen Sie path-to-thought-cloning
auf den Pfad Ihres Gedankenklonungsprojekts fest.
Der synthetische menschliche Gedankendatensatz auf BossLevel , trainierte TC-Modellgewichte und gesammelte Umgebungen zum Testen der Out-of-Distribution-Leistung sind in Google Drive verfügbar.
Um einen synthetischen Gedankendatensatz zu reproduzieren, können Sie das Skript scripts/make_agent_demos.py
mit dem folgenden Befehl verwenden:
scripts/make_agent_demos.py --episodes <NUM_OF_EPISODES> --env <ENV_NAME> --noise-rate 0.01
Um die wichtigsten Leistungsergebnisse in Abb. 3 unseres Artikels zu reproduzieren, verwenden Sie den folgenden Befehl:
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
Für jedes Experiment können Sie das Argument group_name
ändern, um die Protokoll- und Modellausgabe in einem bestimmten Ordner zu gruppieren.
Um die in Abb. 4(a) unserer Arbeit dargestellten Zero-Shot-Bewertungsergebnisse zu reproduzieren, verwenden Sie den folgenden Befehl:
scripts/evaluate_levels.py --env BabyAI-BossLevel-v0 --model <NAME_OF_MODEL> --testing-levels-path <PATH_TO_TESTING_LEVELS_PICKLE>
Unsere Implementierung basiert auf BabyAI 1.1 (Domänen- und Imitation-Learning-Basislinie), dan-visdial (Komponententransformator-Encoder der oberen Ebene) und visdial-rl (Komponenten-RNN-Decoder der oberen Ebene).
Wenn Sie dieses Projekt nützlich finden, denken Sie bitte darüber nach, Folgendes zu zitieren:
@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}
}