Miacis WCSOC2020版

 世界コンピュータ将棋選手権のオンライン大会(WCSOC)に向けて、これ以上レートが伸びそうにないのでここで結果をまとめておきます。

実行ファイル

 Windows向け実行ファイルをGitHubで公開しています。

 CPU版

 GPU

 CPU版はNPS50くらいしか出ないのでほぼお試し用です。GPU版もWindowsではなぜかNPSが低く、手元では3,000くらいしか出ませんでした(コンパイル時に最適化を上手くかけられていない気がします)。Ubuntu 18.04では16,000くらい出るのでUbuntu推奨です。Ubuntuでの実行ファイルは……自分でビルドしていただく方針で(README.md参照)。

最終的に行った実験

学習

 ランダムに初期化したパラメータからAlphaZeroと同様の形式で強化学習

項目
バッチサイズ 512
学習ステップ数 2,000,000
データ生成速度 112.2 局面 / 秒
1ステップあたりの生成量 128 局面
学習率 0.025(1Mステップ時点で1/10、1.5Mステップ時点でさらに1/10)
リプレイバッファサイズ  2^{20} 局面
1局面の探索回数 800
マシン 2080ti × 2搭載
学習時間 672時間32分 (=28日)

学習結果

 検証損失として、floodgate2015年の棋譜からレート2800以上同士の対局者による棋譜のみを抽出し、Policyでは指し手に対する交差エントロピーValueでは勝敗を1,-1として自乗誤差を計算

f:id:tokumini:20200427131800p:plainf:id:tokumini:20200427131809p:plain
左:Policy損失 右:Value損失

対局

 CPU:Intel i7-6700K @4.00GHz, GPU RTX 2080ti

 Miacis側は1手1秒、YaneuraOu/Kristallweizen(4Thread, 定跡オフ)は1手0.2秒で対局。引き分け、入玉などのルールはWCSC30のルールに準拠。

f:id:tokumini:20200427131204p:plain

 こうしてみると1Mステップ時点でもまだ伸びているので学習率を減衰させるのが早すぎたかもしれない。

 YaneuraOu/Kristallweizen(4Thread, 定跡オフ)側も1手1秒にして500局対局した場合

対局数 勝数 引き分け数 敗数 勝率 相対Eloレート
500 94 0 406 18.8% -254.2