TadaoYamaokaの日記

山岡忠夫 Home で公開しているプログラムの開発ネタを中心に書いていきます。

将棋でディープラーニングする その24(歩の持ち駒の上限)

前回の日記でバリューネットワークの学習時間を見積もったところ、elmoと同じ50億局面を学習するには3.5ヶ月かかる見積もりになったので、高速化を行う必要性を感じている。

ミニバッチデータの加工をPythonで行っている部分をC++に書き換えることでかなり高速化ができそうである。
それについては別途記事を書く予定。

今回は、入力特徴の歩の持ち駒について見直しを行う。
歩の持ち駒は最大で18枚になるが、実践で歩の持ち駒が18枚になることはまずあり得ない。
竜王戦棋譜3744局から、歩の持ち駒の数について調べた。
f:id:TadaoYamaoka:20170527204036p:plain:w400
1局中の歩の持ち駒の最大枚数は、ほぼ10枚以内に収まっている。

また、1枚持っているのと、2枚持っているのでは、指し手が変わると思われるが、9枚と10枚ではほとんど影響ないと思われる。

そこで、入力特徴の歩の持ち駒に上限を設けた場合に、精度と学習時間にどのような影響があるか調べた。

はじめ竜王戦棋譜で調べたが局数が少なすぎるのかほとんど差がみられなかった。

f:id:TadaoYamaoka:20170527204844p:plain
8枚が上限のときが若干test accuracyが良いが、誤差の範囲。
また、歩以外の持ち駒全てなしにしてもほとんど変わらなかった。
確かに盤面にない駒は持ち駒になっているので、盤面の情報に持ち駒の情報も内包しているが、学習データの少なさによるものと思われる。

floodgateの棋譜で再測定

そこで、floodgateの棋譜14,230局を使って、測定をやり直した。
f:id:TadaoYamaoka:20170527205523p:plain
歩以外の持ち駒もなしにすると、精度が落ちることが観測できた。
しかし、歩の持ち駒の枚数による違いはほとんどない。

学習時間は以下のようになった。
f:id:TadaoYamaoka:20170527205904p:plain
持ち駒の上限が増えるほど、学習時間も増える傾向がある。
歩の持ち駒の上限が2と18では、約2分の違いがある。

以上の測定結果から、歩の持ち駒の上限は制限しても精度にはあまり影響がないことがわかった。

上限を何枚にするか決め手にかけるが、18枚は無駄があるので、上限はとりえあず8枚とする。