Этот репозиторий предоставляет официальную реализацию «Клонирования мыслей: учимся думать, действуя, имитируя человеческое мышление». Клонирование мыслей (TC) — это новая система имитационного обучения, которая повышает возможности агентов, безопасность ИИ и интерпретируемость, обучая агентов думать, как люди . Этот репозиторий реализует TC на смоделированной частично наблюдаемой 2D-области Gridworld BabyAI с синтетическим набором данных человеческого мышления. Также проверьте ветку вводного твита.
Создайте среду с помощью python-venv или conda. Пример с python-venv показан здесь:
python3 -m venv thoughtcloning
source thoughtcloning/bin/activate
Этот репозиторий был протестирован с Python 3.9.10 и PyTorch 1.7.1+cu110. Код может быть несовместим с более высокой версией Gym, numpy или Gym-Minigrid.
git clone https://github.com/ShengranHu/Thought-Cloning.git
cd Thought-Cloning
pip3 install --upgrade pip
pip3 install --editable .
Примечание. запустите pip3 install --editable .
еще раз, если каталог проекта будет изменен впоследствии.
Измените выходной каталог в storage_dir
в /babyai/utils/__init__.py. Установите 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 (а) нашей статьи, используйте следующую команду:
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 (кодер преобразователя компонентов верхнего уровня) и 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}
}