前回の日記でバリューネットワークの学習時間を見積もったところ、elmoと同じ50億局面を学習するには3.5ヶ月かかる見積もりになったので、高速化を行う必要性を感じている。
ミニバッチデータの加工をPythonで行っている部分をC++に書き換えることでかなり高速化ができそうである。
それについては別途記事を書く予定。
今回は、入力特徴の歩の持ち駒について見直しを行う。
歩の持ち駒は最大で18枚になるが、実践で歩の持ち駒が18枚になることはまずあり得ない。
竜王戦の棋譜3744局から、歩の持ち駒の数について調べた。
1局中の歩の持ち駒の最大枚数は、ほぼ10枚以内に収まっている。
また、1枚持っているのと、2枚持っているのでは、指し手が変わると思われるが、9枚と10枚ではほとんど影響ないと思われる。
そこで、入力特徴の歩の持ち駒に上限を設けた場合に、精度と学習時間にどのような影響があるか調べた。
はじめ竜王戦の棋譜で調べたが局数が少なすぎるのかほとんど差がみられなかった。
8枚が上限のときが若干test accuracyが良いが、誤差の範囲。
また、歩以外の持ち駒全てなしにしてもほとんど変わらなかった。
確かに盤面にない駒は持ち駒になっているので、盤面の情報に持ち駒の情報も内包しているが、学習データの少なさによるものと思われる。