TadaoYamaokaの開発日記

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

GCT、dlshogi、二番絞りの比較

電竜戦の決勝リーグに進んだ、dlshogiを使用している3ソフト(GCT, dlshogi, 二番絞りプレミアム生)の比較を行った。
「二番絞りプレミアム生」(以下、二番絞り)は、48先生からモデルファイルを提供いただいて、探索部には最新のdlshogiを使用して測定した。
二番絞りは、探索部にも変更加えているため、今回の測定は参考値である。
二番絞りプレミアム生とは? - 48's diary

測定条件

  • 思考時間を、1手1秒、3秒、5秒、8秒と変えて測定
  • 対局相手は、3ソフトを直接対局させた場合と、水匠2(固定ノード数)を相手にした場合で測定
  • たややん互角局面集を使用
  • Ponderなし
  • 対局回数は1000回で、1局ずつ先後入れ替えて対局。秒読みが長い条件は、途中までの結果を記載。
  • GPUは、V100 1枚

なお、連続対局には、cshogiを使用し、結果をPGNに出力して、Ordoでレーティングを算出している。

1手1秒の測定結果

直接対局
  # PLAYER          :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)     W    D     L  D(%)
   1 dlshogi         :     0.0   ----  1318.5    2000    66      99  1250  137   613     7
   2 GCT             :   -22.8   17.4  1231.0    2000    62     100  1160  142   698     7
   3 nibanshibori    :  -228.2   20.4   450.5    2000    23     ---   383  135  1482     7
水匠2(100万ノード固定)
   # PLAYER                        :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D     L  D(%)
   1 dlshogi                       :   231.8   25.0   789.5    1000    79      99  757   65   178     6
   2 GCT                           :   190.3   22.5   747.5    1000    75     100  715   65   220     6
   3 nibanshibori                  :    84.4   21.1   618.0    1000    62     100  574   88   338     9
   4 YaneuraOu NNUE 5.32 64AVX2    :     0.0   ----   845.0    3000    28     ---  736  218  2046     7

1手1秒では、dlshogiが一番強いという結果になった。

1手3秒の測定結果

直接対局
   # PLAYER          :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D     L  D(%)
   1 GCT             :    48.4   20.6  1004.5    1566    64     100  952  105   509     7
   2 dlshogi         :     0.0   ----   852.5    1568    54     100  802  101   665     6
   3 nibanshibori    :  -113.2   20.4   494.0    1568    32     ---  440  108  1020     7
水匠2(300万ノード固定)
   # PLAYER                        :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
   1 GCT                           :   176.7   43.9   211.0     288    73      80  205   12   71     4
   2 dlshogi                       :   150.2   43.7   205.0     292    70     100  197   16   79     5
   3 nibanshibori                  :    69.8   41.7   176.5     295    60     100  167   19  109     6
   4 YaneuraOu NNUE 5.32 64AVX2    :     0.0   ----   282.5     875    32     ---  259   47  569     5

1手3秒では、dlshogiとGCTが逆転して、GCTが一番強いという結果になった。

1手5秒の測定結果

直接対局
   # PLAYER          :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
   1 GCT             :     4.5   29.1   462.0     768    60      62  437   50  281     7
   2 dlshogi         :     0.0   ----   451.5     763    59     100  426   51  286     7
   3 nibanshibori    :  -142.2   29.4   231.5     759    31     ---  204   55  500     7

水匠2(固定ノード)は未測定。

1手5秒では、GCTとdlshogiの差がなくなっている。

1手8秒の測定結果

直接対局
   # PLAYER          :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
   1 GCT             :    57.2   42.1   241.0     375    64     100  228   26  121     7
   2 dlshogi         :     0.0   ----   191.5     366    52     100  179   25  162     7
   3 nibanshibori    :   -94.9   41.4   121.5     367    33     ---  112   19  236     5

水匠2(固定ノード)は未測定。

1手8秒では、GCTが1番強いという結果になった。

考察

測定結果から、1手1秒という短い思考時間ではdlshogiが強く、長い思考時間ではGCTが強いということがわかった。
大会の持ち時間であればさらに差が広がっていた可能性がある。

二番絞りについては、探索部が大会で使用されたものとは別なため、参考値である。
二番絞りが大会で強かったことを考えると、探索部の改良(ルートでLCBで選択、探索打ち切り条件変更)が効いているのかもしれない。
特に、探索打ち切り条件の変更は、20ブロックのResNetでは効いていそうである。
また、長い持ち時間では強くなる可能性がある。

まとめ

今回の測定から大会の結果は偶然ではなく、やはりGCTが強いことが確認できた。
dlshogiとGCTの差は、活性化関数、学習データと学習方法の差であり、そのうちどれが強さに影響したのかについて、別途確認したいと思う。