Eine vereinfachte, hoch flexible, kommentierte und (hoffentlich) leicht verständliche Implementierung von selbst spielbasiertem Verstärkungslernen basierend auf dem Alphago Zero Paper (Silver et al.). Es ist so konzipiert, dass es für jedes zwei Spieler-runden-basierte kontroverse Spiel und jeden Deep-Learning-Framework Ihrer Wahl leicht zu übernehmen ist. Für das Othello -Spiel in Pytorch und Keras wurde eine Beispielimplementierung vorgesehen. Hier finden Sie ein begleitendes Tutorial. Wir haben auch Implementierungen für viele andere Spiele wie Gobang und Tictactoe.
Um ein Spiel Ihrer Wahl zu verwenden, klassifizieren Sie die Klassen in Game.py und NeuralNet.py und implementieren Sie ihre Funktionen. Beispielimplementierungen für Othello finden Sie in othello/OthelloGame.py und othello/{pytorch,keras}/NNet.py .
Coach.py enthält die Kerntrainingsschleife und MCTS.py führt die Monte -Carlo -Baumsuche durch. Die Parameter für das Selbstspiel können in main.py angegeben werden. Zusätzliche neuronale Netzwerkparameter finden Sie in othello/{pytorch,keras}/NNet.py (CUDA -Flag, Chargegröße, Epochen, Lernrate usw.).
Mit dem Training eines Modells für Othello:
python main.py Wählen Sie Ihr Framework und Ihr Spiel in main.py
Für eine einfache Umgebungs-Setup können wir Nvidia-Docker verwenden. Sobald Sie Nvidia-Docker eingerichtet haben, können wir einfach rennen:
./setup_env.sh
So einrichten ein (Standard: Pytorch) Jupyter Docker Container. Wir können jetzt ein neues Terminal öffnen und eingeben:
docker exec -ti pytorch_notebook python main.py
Wir haben ein Pytorch -Modell für 6x6 Othello (~ 80 Iterationen, 100 Episoden pro Iteration und 25 MCTs -Simulationen pro Kurve) ausgebildet. Dies dauerte ungefähr 3 Tage bei einem Nvidia Tesla K80. Das vorgezogene Modell (Pytorch) befindet sich in pretrained_models/othello/pytorch/ . Sie können ein Spiel gegen es mit pit.py spielen. Nachfolgend finden Sie die Leistung des Modells gegen einen zufälligen und eine gierige Grundlinie mit der Anzahl der Iterationen. 
Eine kurze Beschreibung unseres Algorithmus finden Sie hier.
Wenn Sie diese Arbeit nützlich fanden, können Sie sie gerne als zitieren
@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}
}
Während der aktuelle Code ziemlich funktional ist, können wir von den folgenden Beiträgen profitieren:
Game.py zusammen mit ihren neuronalen Netzwerken folgenEinige Erweiterungen wurden hier impliziert.
Hinweis: Die V1 -Versionen von Chainer und TensorFlow wurden entfernt, können jedoch vor dem Commit 2AD461C gefunden werden.