先日実験した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エポック学習したモデルで測定したが、データ量を増やして収束するまで学習した場合にどうなるかは、時間がかかるためすぐにはできないが別途確認したい。