Este repositório fornece a implementação oficial de Clonagem de Pensamento: Aprendendo a Pensar enquanto Agia Imitando o Pensamento Humano. A clonagem de pensamento (TC) é uma nova estrutura de aprendizagem por imitação que aprimora a capacidade do agente, a segurança da IA e a interpretabilidade, treinando agentes para pensar como humanos . Este repositório implementa TC em um domínio gridworld 2D parcialmente observável simulado BabyAI com um conjunto de dados de pensamento humano sintético. Verifique também o tópico do tweet de introdução.
Crie ambiente com python-venv ou conda. Um exemplo com python-venv é mostrado aqui:
python3 -m venv thoughtcloning
source thoughtcloning/bin/activate
Este repositório foi testado com Python 3.9.10 e PyTorch 1.7.1+cu110. O código pode não ser compatível com versões superiores 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 .
Nota: execute pip3 install --editable .
novamente se o diretório do projeto for alterado posteriormente.
Altere o diretório de saída em storage_dir
em /babyai/utils/__init__.py. Defina path-to-thought-cloning
como o caminho do seu projeto de clonagem de pensamento.
O conjunto de dados sintéticos de pensamento humano em BossLevel , pesos de modelos de TC treinados e ambientes coletados para testar o desempenho fora de distribuição estão disponíveis no Google Drive.
Para reproduzir um conjunto de dados de pensamento sintético, você pode usar o script scripts/make_agent_demos.py
com o seguinte comando:
scripts/make_agent_demos.py --episodes <NUM_OF_EPISODES> --env <ENV_NAME> --noise-rate 0.01
Para reproduzir os principais resultados de desempenho apresentados na Figura 3 do nosso artigo, utilize o seguinte 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, você pode alterar o argumento group_name
para agrupar o log e modelar a saída em uma pasta específica.
Para reproduzir os resultados da avaliação zero shot apresentados na Figura 4 (a) do nosso artigo, use o seguinte comando:
scripts/evaluate_levels.py --env BabyAI-BossLevel-v0 --model <NAME_OF_MODEL> --testing-levels-path <PATH_TO_TESTING_LEVELS_PICKLE>
Nossa implementação é baseada em BabyAI 1.1 (linha de base de domínio e aprendizado de imitação), dan-visdial (codificador de transformador de componente de nível superior) e visdial-rl (decodificador RNN de componente de nível superior).
Se você achar este projeto útil, 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}
}