TadaoYamaokaの開発日記

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

将棋AI実験ノート:30ブロックの学習

dlshogiのモデルサイズは、10ブロック192フィルタから初めて、精度が飽和するたびに、15ブロック224フィルタ、20ブロック256フィルタと段階的に大きくしている。

参考:


直近の大会(第32回世界コンピュータ将棋選手権、第3回電竜戦TSEC)では、20ブロック256フィルタのモデルを使用していた。

その後も、20ブロック256フィルタのモデルで、強化学習を続けていたが、精度が飽和したため、並行して30ブロック384フィルタのモデルの学習も行っている。

20ブロック256フィルタのモデル

30ブロックモデルとの強さを比較するために、まずは、20ブロック256フィルタのモデルが、第32回世界コンピュータ将棋選手権以降どれくらい強くなったか測定を行った。

持ち時間5分2秒加算で、互角局面集24手目から対局した結果は、以下の通りである。

pre28が第32回世界コンピュータ将棋選手権のモデル、
pre38が精度が飽和するまで学習した最新の20ブロックである。

参考として、公開している15ブロック224フィルタのモデル(dr2_exhi)もリーグに加えて測定した。
また、基準として、水匠5(32スレッド)をリーグ加えている。強さをそろえるため水匠5は、持ち時間を10倍にした。
dlshogiは、A100 1GPU、3スレッドである。

   # PLAYER             :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
   1 pre38              :    66.0   25.4   224.5     380    59      96  192   65  123    17
   2 pre28              :    28.5   32.4   122.0     255    48      63  103   38  114    15
   3 suisho5-32thx10    :    21.2   26.6   186.5     375    50     100  145   83  147    22
   4 dr2_exhi           :  -115.7   45.7    38.0     132    29     ---   24   28   80    21

White advantage = 10.93 +/- 13.46
Draw rate (equal opponents) = 19.38 % +/- 1.71

20ブロックの最新モデル(pre38)は、公開している15ブロックのモデルからは、R+181.7、
第32回世界コンピュータ将棋選手権のモデル(pre28)からは、R+37.5になっている。

精度

テストデータにfloodgateのR3500以上の棋譜からサンプリングした856,923局面(重複なし)を使用した場合の精度は以下の通りである。

モデル モデルサイズ 方策正解率 価値正解率
dr2_exhi 15ブロック224フィルタ 0.523406 0.7607527
pre28 20ブロック256フィルタ 0.5376619 0.768036
pre38 20ブロック256フィルタ 0.5410133 0.7686995

15ブロックから20ブロックで精度が大きく向上し、20ブロックモデルは、第32回世界コンピュータ将棋選手権のモデルからはそれほど精度が向上していない。

30ブロック384フィルタ

20ブロックのモデルで強化学習したデータを使って学習している30ブロック384フィルタのモデルの精度が20ブロックを上回ったので、同じ持ち時間で強くなっているか測定した。

持ち時間400秒2秒加算で、互角局面集24手目から対局した結果は、以下の通りである。

基準として、水匠5(32スレッド)をリーグ加えている。強さをそろえるため水匠5は、持ち時間を10倍にした。
dlshogiは、A100 1GPU、3スレッドである。

pre38が精度が飽和するまで学習した最新の20ブロック、
pre33が学習途中の30ブロック384フィルタのモデルである。

   # PLAYER             :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
   1 pre33              :    14.0   16.5   353.5     667    53      89  301  105  261    16
   2 suisho5-32thx10    :    -3.9   16.4   324.0     659    49      67  253  142  264    22
   3 pre38              :   -10.2   16.4   317.5     664    48     ---  261  113  290    17

White advantage = 18.01 +/- 9.64
Draw rate (equal opponents) = 18.15 % +/- 1.25

30ブロックのモデルが、20ブロックのモデルに対して、同じ持ち時間でも、R+24.2になっている。


同じプレイアウト数(30000)、水匠5は400倍の1200万だと、

   # PLAYER             :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)     W    D     L  D(%)
   1 pre33              :   178.3   14.9  1089.0    1354    80     100  1028  122   204     9
   2 pre38              :    15.2   13.4   708.0    1352    52     100   642  132   578    10
   3 suisho5-32thx10    :  -193.5   15.6   230.0    1348    17     ---   177  106  1065     8

White advantage = 22.08 +/- 9.29
Draw rate (equal opponents) = 11.67 % +/- 0.80

30ブロックのモデルが、20ブロックのモデルに対して、R+163.1となる。

精度

テストデータにfloodgateのR3500以上の棋譜からサンプリングした856,923局面(重複なし)を使用した場合の精度は以下の通りである。

モデル モデルサイズ 方策正解率 価値正解率
pre38 20ブロック256フィルタ 0.5410133 0.7686995
pre33 30ブロック384フィルタ 0.5598156 0.7760576

30ブロックのモデルの精度は、20ブロックに対して大幅に向上している。
まだ学習途中であり、さらに精度を向上できる見込みである。

学習時間

バッチサイズ4096、1000ステップの平均学習時間を比較すると以下の通りである。

モデルサイズ 時間(h:m:s)
20ブロック256フィルタ 0:07:25
30ブロック384フィルタ 0:19:44

学習時間は、約2.66倍になっている。

まとめ

dlshogiのモデルサイズを30ブロックにした場合、20ブロックに対してどれくらい強くなるか測定を行った。
その結果、同じ持ち時間で20ブロックを上回ることが確認できた。
20ブロックのモデルの精度は飽和しているが、30ブロックはまだ学習途中であり、さらに強くできる余地がある。
今のところ経験的には、モデルサイズは大きいほどよいという法則が成り立ちそうである。

ただし、学習時間は、約2.66倍になっているため、いきなり大きいモデルを学習するより段階的に大きくしていくのが効率がよいと考える。
また、より大きなモデルサイズを学習するには、同じバッチサイズではGPUメモリが不足するため、学習の工夫も必要になってくる。