前回までに調整したニューラルネットワークを、floodgateの棋譜を使って学習した。
floodgateの棋譜の入手
floodgateの棋譜は、コンピュータ将棋対局場の「情報収集」→「棋譜倉庫: 圧縮CSAファイル(7z形式)」から1年単位でアーカイブが入手できる。
とりあえず2016年の棋譜をダウンロードした。
棋譜には人が対戦したものや、手数が短すぎる棋譜が混じっているので、適切な条件でフィルターする必要がある。
以下の条件でフィルターを行った。
フィルター条件
- 投了で終局している
- 手数が50以上
- 両対局者のレーティングが3000以上
フィルター前
局数 | 80,141 |
局面数 | 9,375,564 |
平均手数 | 117 |
floodgateの棋譜で学習
フィルターしたfloodgateの棋譜を使って学習した。
前回の実験結果から、ミニバッチサイズを32としたときの学習時間は1エポックあたり0:31:23の見積もりとなる。
5時間くらいで終わるように10エポック学習を行った。
学習結果
1000イテレーションごと
エポックごと
10エポック学習後の間train lossは下がり続けている。
test accuracyは8エポック目以降では0.001~0.002ずつくらいしか上昇していない。
そこで、学習率をlr=0.01から半分のlr=0.005にして、追加で1エポック学習してみた。
今度は、1エポックでtest accuracyが0.005上昇した。
SGDの場合、徐々に学習率を下げていくことが重要であることがわかる。
AlphaGoの論文では、入力特徴が盤面の情報のみの場合、Test accuracyが47.6%になっている。
11エポックで43.6%になったので、このまま学習を続ければ近い値になるかもしれないが、時間がかかるので検証は一旦ここまでにする。
なお、AlphaGoの論文では、シチョウなどの入力特徴を増やすことでTest accuracyが54.7%までになっているので、将棋において効果的な入力特徴を見つけて追加するとさらに改善できる見込みがある。
次回は、今回学習したモデルをベースラインとして、強化学習で方策改善を試したい。