TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

dlshogiを使って棋譜から棋力を推定する

たややんさんが実施していた棋譜から棋力を推定する方法をdlshogiを使って検証してみた。

使用する棋譜

将棋倶楽部24名人戦対局の2452棋譜を使用した。

対局者間のレーティングの分布は以下の通り。
f:id:TadaoYamaoka:20220316232621p:plain

対局者のレーティングのヒストグラムは以下の通り。
f:id:TadaoYamaoka:20220316232733p:plain

dlshogiの設定

棋譜の各局面について、バッチサイズ1で512プレイアウトで探索を行い評価値と最善手を取得する。

勝率の平均損失

まずは、各棋譜ごとに、勝率の平均損失を調べた。

勝率の平均損失は、(着手後の局面の勝率 - 着手前の局面の勝率)の全局面の平均を、各棋譜のプレイヤーごとに求める。

序盤はプレイヤーの好みによるため、分析開始手数は12とした。
詰みの局面の前後は勝率差が極端に大きくなるため、除外した。

棋譜のプレイヤーのレーティングと勝率の平均損失の関係は以下の通りとなった。
f:id:TadaoYamaoka:20220316234456p:plain

棋譜ごとだと、相関係数は-0.22であり、レーティングと勝率の平均損失の相関は低い。

1棋譜のみで、レーティングを推定するのは難しそうである。

プレイヤーごとに集計

次にプレイヤーごとに集計して、レーティングと勝率の平均損失の関係を調べた。
10棋譜以上あるプレイヤーを対象とした。

プレイヤーごとの棋譜数の統計値は以下の通り。

count    309.000000
mean      15.443366
std        4.381284
min        1.000000
25%       14.000000
50%       17.000000
75%       19.000000
max       22.000000

プレイヤーごとの、レーティングと勝率の平均損失の関係は以下の通りとなった。
f:id:TadaoYamaoka:20220316235218p:plain

相関係数は、-0.59となり、10棋譜以上あると、相関は高くなったが、それでもあまり高くない。

レーティング帯で集計

100区切りのレーティング帯ごとで集計して調査した。

レーティング帯ごとの棋譜数は、以下の通り。
f:id:TadaoYamaoka:20220316235825p:plain

レーティング帯ごとの、レーティングと勝率の平均損失の関係は以下の通りとなった。
f:id:TadaoYamaoka:20220316235453p:plain

相関係数は、-0.95となり、強い相関が見られた。

一致率

レーティング帯ごとの一致率についても確認した。
f:id:TadaoYamaoka:20220317000619p:plain

相関係数は、0.97となり、勝率の平均損失よりも強い相関が見られた。

dlshogiの最善手は、従来ソフトよりも人間の手との一致率が高いため、一致率もレーティングの指標にできそうである。

悪手率

1対局で勝率が10%下がる悪手を指した割合を悪手率として、レーティング帯ごとの悪手率についても確認した。

f:id:TadaoYamaoka:20220317000925p:plain

相関係数は、-0.94となり、悪手率にも強い相関が見られた。
勝率の平均損失よりは少し低い。


20%下がる場合を悪手とした場合は、以下の通り。
f:id:TadaoYamaoka:20220317001144p:plain

相関係数は、-0.94となり、20%とした場合もほぼ同じ傾向である。

開始手数

開始手数を12としたが、先行研究では、40手以降としている。

40手以降とした場合の、レーティングと勝率の平均損失の関係は以下の通り。

f:id:TadaoYamaoka:20220317001448p:plain

相関係数は、-0.89となり、12手以降よりも低くなった。

先行研究では従来型のソフトを使用しているため、序盤の評価が不正確であることが影響していた可能性がある。
dlshogiは、序盤から正確な評価ができるため、序盤も含めた方が相関は高くなる。

0手目からとすると、相関係数は下がる。
最序盤の手は、好みの戦型によることを裏付けていると考える。
f:id:TadaoYamaoka:20220317002643p:plain


同様に評価値の閾値についても調査したが、先行研究は評価値の絶対値が200以内の局面を使用していたが、閾値は設けない方が相関係数は高くなった。
評価値の閾値を1000にした場合の相関係数は、-0.91となった。
f:id:TadaoYamaoka:20220317001930p:plain

まとめ

dlshogiで評価した勝率の平均損失とレーティングには強い相関があることがわかった。
ただし、1棋譜のみから推定すると誤差が大きく、レーティングを推測するには少なくとも10棋譜以上は必要である。

dlshogiの最善手との一致率にもレーティングと強い相関があることがわかった。
また、悪手率についても、強い相関がある。

先行研究では評価に序盤の局面を含めると相関係数が低くなるが、dlshogiの場合は序盤の局面を含めても相関係数が下がらないことがわかった。
これは、従来ソフトよりも序盤を正確に評価できることによると考える。

dlshogiによる勝率の平均損失がレーティングの推定に有効であることがわかったので、調査結果を元に作成している将棋アプリの棋力推定機能を実装する予定である。