プロの棋譜を使って前回の日記で作成したニューラルネットワークの学習を行った。
訓練データとテストデータの数は以下の通り。
訓練データ | テストデータ | |
局数 | 3744 | 417 |
局面数 | 422852 | 47242 |
学習には非常に時間がかかるため、学習が進んでいることが確認できたら途中で打ち切ることにした。
はじめ最適化手法をAdamで行ったが学習が進まないので、AdaGradにしたところ学習が進むことを確認できた。
ミニバッチサイズを8として、1ミニバッチサイズの学習を1イテレーションとして、32500イテレーション学習した結果は以下の通り。
accuracyは100イテレーションごとに、テストデータからランダムに抽出した64サンプルで評価している。
グラフを見ると、lossは順調に下がっている。
accuracyは、0.15程度まで上昇しており、15%の精度でプロの指し手を予測している。
lossはまだ下がりそうなのでこのまま学習を進めれば予測精度は上がっていくと思われる。
lossが下がらなくなるまで学習を進めないとはっきりしたことは言えないが、将棋でもディープラーニングを使用して指し手の予測ができそうである。
学習に使用したソースをGitHubに公開した。
github.com
次は、特徴に手番や王手、2歩などを追加した場合に精度が上がるか比較してみたい。
追記2
後手番のときに盤を回転しないで学習していたので、180度回転して学習するようにしたところ、accuracyが0.25くらいまで上がった。