AlphaZeroのパラメータ更新部を作成します。
前回行ったセルフプレイで作成した学習データ(data/*.history)とベストプレイヤーのモデル(model/best.h5)が入力となります。
学習を行ったモデルを最新プレイヤー(model/latest.h5)として出力します。
まず必要なパッケージをインポートします。
1 | # ==================== |
パラメータを定義します。RN_EPOCHSは学習回数を表します。
1 | # パラメータの準備 |
セルフデータ部で保存した学習データ(data/*.history)を読み込む関数を定義します。
1 | # 学習データの読み込み |
デュアルネットワークの学習を行います。学習手順は以下の通りです。
- 学習データの読み込みを行います。
- 学習のために入力データのシェイプを変換します。
- ベストプレイヤーのモデルを読み込みます。
- モデルをコンパイルします。
- 学習率をステップ数に応じて減らしていきます。
- 1ゲームごとに経過を出力します。
- 学習を実行します。
- 最新プレイヤーのモデルを保存します。
- モデルを破棄します。
1 | # デュアルネットワークの学習 |
動作確認のための実行コードを実装します。
1 | # 動作確認 |
実行結果は下記の通りです。
modelフォルダにlatest.h5ファイル(最新プレイヤー)が作成されます。
最新プレイヤーはベストプレイヤーをコピーし、学習を行ったモデルとなります。
参考
AlphaZero 深層学習・強化学習・探索 人工知能プログラミング実践入門 サポートページ