TadaoYamaokaの開発日記

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

dlshogiモデルの20ブロックから15ブロックへの知識蒸留 追試

先日実験した20ブロックから15ブロックへの知識蒸留について、どれくらい強くなるか検証した。

検証項目

同一データを使用して学習した、20ブロックと、知識蒸留あり15ブロックのどちらが強いかを確認する。
比較のために、知識蒸留なしで学習した15ブロックも加えて測定する。

20ブロックとの精度比較

前回と同じ20ブロックで生成した9.4千万局面(同一局面を平均化すると7千万局面)で、20ブロックを学習して15ブロックへの知識蒸留ありと比較した。
参考として、20ブロックのモデルを20ブロックの学習済みモデルで知識蒸留ありでも学習した。

ブロック 知識蒸留 方策損失 価値損失 方策正解率 価値正解率 方策エントロピー 価値エントロピー
15 なし 1.6143 0.510782 0.478344 0.729586 1.53176 0.539728
15 あり 1.56883 0.49999 0.488682 0.738732 1.47312 0.537952
20 なし 1.59963 0.505184 0.483299 0.73285 1.4642 0.530222
20 あり 1.53918 0.492496 0.49574 0.74317 1.45498 0.529619

20ブロック(知識蒸留なし)と比較して、15ブロック知識蒸留ありでは、方策正解率、価値正解率がそれぞれ、0.54%、0.59%高い。
同じデータを使用しても、知識蒸留を行うと15ブロックの方が強くなる可能性がある。

参考として、20ブロックのモデルを20ブロックモデルで知識蒸留ありで学習しても、方策正解率、価値正解率がそれぞれ、1.24%、1.03%高くなることがわかった。

強さ比較

平手から24手まで評価値2%範囲(1手ごと0.1%低減)でランダムありで対局した。
比較のために水匠5も加えている。

dlshogiは、2スレッド、1GPU(A100)、水匠5は32スレッド。
思考時間は、秒読み5秒とした。

結果は、以下の通りとなった。

   # PLAYER          :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
   1 suisho5-32th    :    98.7   23.0   397.0     586    68      99  376   42  168     7
   2 15b_dist        :    38.5   35.2   123.0     243    51     100  111   24  108    10
   3 20b             :   -27.7   22.3   256.0     592    43     100  232   48  312     8
   4 15b             :  -109.4   30.9   112.0     355    32     ---  101   22  232     6

White advantage = 67.76 +/- 11.74
Draw rate (equal opponents) = 8.33 % +/- 0.96

15b_distは、15ブロックの知識蒸留あり、
20bは、20ブロック(知識蒸留なし)、
15bは、15ブロック(知識蒸留なし)である。

知識蒸留ありで学習した15ブロックの方が、20ブロックよりもR+66.2だけ強くなることがわかった。

知識蒸留なしでは、20ブロックの方が15ブロックよりも強い。

まとめ

同じデータを学習した場合でも、知識蒸留ありで学習した15ブロックの方が、20ブロックよりも強くなることがわかった。
今回は、9.4千万局面を4エポック学習したモデルで測定したが、データ量を増やして収束するまで学習した場合にどうなるかは、時間がかかるためすぐにはできないが別途確認したい。