単純化され、非常に柔軟で、コメントされた、(できれば)Alphago Zero Paper(Silver et al)に基づいた自己プレイベースの強化学習の実装を理解しやすい(できれば)理解しやすい。これは、2人のターンベースの敵対的なゲームと、お好みの深い学習フレームワークに簡単に採用できるように設計されています。 PytorchとKerasのOthelloのゲームには、サンプルの実装が提供されています。付随するチュートリアルはこちらをご覧ください。また、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フラグ、バッチサイズ、エポック、学習率など)にあります。
オセロのモデルのトレーニングを開始するには:
python main.py main.pyでフレームワークとゲームを選択してください。
環境のセットアップを簡単にするために、Nvidia-Dockerを使用できます。 nvidia-dockerをセットアップしたら、単純に実行できます。
./setup_env.sh
(デフォルト:Pytorch)Jupyter Dockerコンテナをセットアップします。これで、新しい端末を開いて入力できます。
docker exec -ti pytorch_notebook python main.py
6x6 OthelloのPytorchモデルをトレーニングしました(〜80の反復、ターンごとに100エピソード、ターンごとに25 MCTSシミュレーション)。これには、Nvidia Tesla K80で約3日かかりました。前処理されたモデル(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の仕様に従うより多くのゲーム、およびニューラルネットワークここにはいくつかの拡張機能が埋め込まれています。
注:ChainerおよびTensorflow V1バージョンは削除されていますが、2AD461Cのコミット前に見つけることができます。