TadaoYamaokaの開発日記

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

手数ごとのポリシーと訪問回数のKL情報量

山下さんがAobaZeroのKL情報量を調べていて、気になったのでdlshogiでも調べてみた。
KL情報量は、2つの確率分布の差異を測る指標である。
ニューラルネットワークで予測したポリシーと、MCTSで探索した結果のルートノードでの訪問回数のKL情報量を測ることで、どれくらいポリシーの予測が外れているかが確認できる。

KL情報量

Pをポリシーの確率分布、Qを訪問回数の確率分布とすると、KL情報量は以下の式で表される。
\displaystyle
KLD(P, Q) = \sum_i P(i) \log{\frac{P(i)}{Q(i)}}

測定結果

連続対局を行い、手数ごとのKL情報量の平均を算出した結果は、以下の通り。

f:id:TadaoYamaoka:20220129221826p:plain

seabornで95%信頼区間も表示している。

sns.relplot(x='ply', y='kld', kind='line', data=df, aspect=1.5)

考察

開始局面付近での、KL情報量は小さく、探索しなくてもポリシーのみで正確な手が予測できていることがわかる。
50手くらいまで右肩あがりにKL情報量が上がり、50数手でピークになる。

50手から100手くらいでKL情報量が高い状態が続き、中盤に難解な局面があることがわかる。

100手を超えると徐々にKL情報量が下がっていき、終局に近づくほど予測しやすくなっている。

200手を超えると分散が大きくなっているのは、サンプルが少ないことが原因と考えられる。

サンプル数

f:id:TadaoYamaoka:20220129235712p:plain

まとめ

dlshogiのポリシーと訪問回数のKL情報量を調べた。
50手から100手付近がKL情報量が高くなり、中盤に探索が重要な局面が多いことが確かめられた。

中盤により探索の時間をかけた方がよいと言えそうで、時間制御にKL情報量を利用すると効果的である可能性がある。
別途、KL情報量を時間制御に利用する方法を検証したい。