AlphaZeroのベストプレイヤーの評価を行います。
評価方法としては、下記の3手法と対戦させて勝率を表示します。
- ランダム
- アルファベータ法 <= 最強
- モンテカルロ木探索 <= AlphaZeroのベース
まず必要なパッケージをインポートします。
1 | # パッケージのインポート |
パラメータを準備します。
EP_GAME_COUNTは勝率を計算するために行うゲーム数になります。
1 | # パラメータの準備 |
最終局面から先手プレイヤーのポイントを返す関数を定義します。
1 | # 先手プレイヤーのポイント |
1ゲームを最後まで実行して、先手プレイヤーのポイントを返す関数を定義します。
1 | # 1ゲームの実行 |
任意のアルゴリズムに対して10ゲーム行い勝率を算出します。
1 | # 任意のアルゴリズムの評価 |
ベストプレイヤーの評価を行います。
ベストプレイヤーとランダム、アルファベータ法、モンテカルロ木探索との対戦を行いそれぞれの勝率を表示します。
1 | # ベストプレイヤーの評価 |
動作確認のための実行コードを実装します。
1 | # 動作確認 |
実行結果は下記の通りです。
現在のベストプレイヤーは自己対戦500回、学習回数100回ですが最強のアルファベータ法に対しては勝率25%です。
もうすこし学習サイクルを増やして、強いモデルにしたいところです。
参考
AlphaZero 深層学習・強化学習・探索 人工知能プログラミング実践入門 サポートページ