Упрощенная, очень гибкая, прокомментированная и (надежда) легко понять внедрение обучения на основе самостоятельной работы на основе Alphago Zero Paper (Silver et al). Он предназначен для того, чтобы его легко принять для любой пошаговой игры с двумя игроками и любых оснований по глубокому обучению по вашему выбору. Образец реализации была предоставлена для игры Othello в Pytorch и Keras. Сопутствующее руководство можно найти здесь. У нас также есть реализации для многих других игр, таких как Gobang и Tictactoe.
Чтобы использовать игру по вашему выбору, подкласс классов в Game.py и NeuralNet.py и реализовать их функции. Пример реализаций для Othello можно найти в othello/OthelloGame.py и othello/{pytorch,keras}/NNet.py .
Coach.py содержит основную петлю обучения, а MCTS.py выполняет поиск дерева Монте -Карло. Параметры для самостоятельной игры могут быть указаны в main.py Дополнительные параметры нейронной сети находятся в othello/{pytorch,keras}/NNet.py (флаг CUDA, размер партии, эпохи, скорость обучения и т. Д.).
Чтобы начать обучение модели для Отелло:
python main.py Выберите свою структуру и игру в main.py
Для легкой настройки среды мы можем использовать Nvidia-Docker. После того, как у вас настройка Nvidia-Docker, мы сможем просто запустить:
./setup_env.sh
Чтобы настроить (по умолчанию: Pytorch) контейнер Docker Docker. Теперь мы можем открыть новый терминал и ввести:
docker exec -ti pytorch_notebook python main.py
Мы обучили модель Pytorch для Othello 6x6 (~ 80 итераций, 100 эпизодов на итерацию и моделирование 25 MCT за ход). Это заняло около 3 дней на Nvidia Tesla K80. Предварительную модель (Pytorch) можно найти в pretrained_models/othello/pytorch/ . Вы можете сыграть в игру против этого, используя pit.py Ниже приведена производительность модели против случайной и жадной базовой линии с количеством итераций. 
Краткое описание нашего алгоритма можно найти здесь.
Если вы нашли эту работу полезной, не стесняйтесь цитировать ее как
@misc{thakoor2016learning,
title={Learning to play othello without human knowledge},
author={Thakoor, Shantanu and Nair, Surag and Jhunjhunwala, Megha},
year={2016},
publisher={Stanford University, Final Project Report}
}
Хотя текущий код довольно функционален, мы могли бы извлечь выгоду из следующих вкладов:
Game.py , наряду с их нейронными сетямиНекоторые расширения были включены здесь.
ПРИМЕЧАНИЕ. Версии цепочки и Tensorflow V1 были удалены, но их можно найти до Commit 2AD461C.