TadaoYamaokaの開発日記

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

やねうら王バグのdlshogiへの影響

先日の水匠とdlshogiの長時間マッチの第1局で、水匠側にバグが発生するというハプニングがあった。
原因などの詳細は、やねうら王ブログを参照して欲しい。
先日の電竜戦、長時間マッチで現れたやねうら王のバグについて | やねうら王 公式サイト

ここで、このやねうら王のバグは、dlshogiがバグが起きやすい局面に誘導したのではないかという疑問が浮かんでくる。
やねうら王ブログでも可能性について言及している。

はじめ私もその可能性はあると考えた。
しかし、再現性が低いことがわかったため可能性は低そうだが、検証してみないと否定はできない状況である。

dlshogiは、強化学習をリーグ戦で実施しており、割合は高くないが水匠も混ぜている。
バグの影響があったとするとモデルの精度にも悪影響していることになり、はっきりさせておきたい。


やねうら王に修正のプルリクエストが上がったので、修正前後で勝率を比較し、バグの影響がどれくらいあったか検証した。

勝率比較

平手初期局面から

平手初期局面から持ち時間5分2秒加算の結果は以下の通り。

_bugfixがPRを適用したもの。
先後は1局ずつ入れ替えて対局。
dlshogiは、1GPU、3スレッド。
やねうら王は、12スレッド、ハッシュは4096。

リーグ戦のレーティング
# PLAYER              :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
1 dlshogi-1gpu_3th    :    87.3   28.2   167.5     248    68     100  151   33   64    13
2 suisho4-12th        :   -12.7   27.1   115.5     245    47      99   87   57  101    23
3 suisho4-12th_bugfix :   -74.6   28.5    84.0     241    35     ---   60   48  133    20

White advantage = 37.14 +/- 17.36
Draw rate (equal opponents) = 20.20 % +/- 2.15

1対1のレーティング

# PLAYER              :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
1 suisho4-12th        :    33.1   27.0    69.5     118    59      99   52   35   31    30
2 suisho4-12th_bugfix :   -33.1   27.0    48.5     118    41     ---   31   35   52    30

White advantage = 78.07 +/- 28.27
Draw rate (equal opponents) = 31.47 % +/- 4.53

# PLAYER              :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
1 dlshogi-1gpu_3th    :    51.3   29.6    79.5     124    64     100   69   21   34    17
2 suisho4-12th        :   -51.3   29.6    44.5     124    36     ---   34   21   69    17

White advantage = -23.29 +/- 30.44
Draw rate (equal opponents) = 17.86 % +/- 3.51

# PLAYER              :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
1 dlshogi-1gpu_3th    :    79.7   34.5    85.0     120    71     100   79   12   29    10
2 suisho4-12th_bugfix :   -79.7   34.5    35.0     120    29     ---   29   12   79    10

White advantage = 57.38 +/- 34.96
Draw rate (equal opponents) = 11.31 % +/- 3.23

※White advantageは先手のレーティング

バグ修正前に対して特に勝率が高くなっているということはなかった。
バグ修正後に対しての方がむしろ勝率が高くなっているが、平手初期局面からだと結果が偏るため、バグ修正後が弱くなっているとは言えない。

たややん互角局面24手目から

たややん互角局面24手目から持ち時間5分2秒加算の結果は以下の通り。

リーグ戦のレーティング
# PLAYER              :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
1 dlshogi-1gpu_3th    :    79.6   24.6   196.0     296    66     100  170   52   74    18
2 suisho4-12th        :   -32.9   25.0   127.0     294    43      73   93   68  133    23
3 suisho4-12th_bugfix :   -46.7   24.7   118.0     292    40     ---   84   68  140    23

White advantage = 43.31 +/- 15.26
Draw rate (equal opponents) = 22.59 % +/- 2.00

1対1のレーティング

# PLAYER              :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
1 suisho4-12th        :     3.7   23.5    73.0     143    51      62   52   42   49    29
2 suisho4-12th_bugfix :    -3.7   23.5    70.0     143    49     ---   49   42   52    29

White advantage = 2.40 +/- 25.59
Draw rate (equal opponents) = 29.38 % +/- 3.84

# PLAYER              :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
1 dlshogi-1gpu_3th    :    52.2   26.5    95.0     148    64     100   82   26   40    18
2 suisho4-12th        :   -52.2   26.5    53.0     148    36     ---   40   26   82    18

White advantage = 51.98 +/- 27.50
Draw rate (equal opponents) = 18.75 % +/- 3.27

# PLAYER              :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
1 dlshogi-1gpu_3th    :    72.0   28.4   100.0     146    68     100   87   26   33    18
2 suisho4-12th_bugfix :   -72.0   28.4    46.0     146    32     ---   33   26   87    18

White advantage = 85.79 +/- 30.30
Draw rate (equal opponents) = 20.28 % +/- 3.60

互角局面でも、バグ修正前に対して特に勝率が高くなっているということはなかった。
やねうら王のバグ修正前後の強さは誤差の範囲である。

強化学習への影響

強化学習でのリーグ戦での、修正前後のやねうら王(水匠4)に対する勝率も計測した。

修正前
[2021-08-19 13:21:29.823] [info] Made 25000061 teacher nodes in 213932 seconds. games:259910, draws:18227, ply/game:96.1874, usi_games:18224, usi_win:9216, usi_draw:656, usi_winrate:52.46%
修正後
[2021-08-22 21:03:38.594] [info] Made 25000138 teacher nodes in 218892 seconds. games:259670, draws:18612, ply/game:96.2766, usi_games:18216, usi_win:9212, usi_draw:720, usi_winrate:52.65%

usi_winrateがやねうら王(水匠4)に対する勝率を示す。

修正前後で、勝率は約18200対局で52.46%と52.65%であり、誤差の範囲である。

そもそも、強化学習は、平手初期局面からではなく、初期局面集からさらにランダムムーブを行った局面から開始しているため、今回起きた局面になる可能性はかなり低い。
今回計測した勝率からも、バグの局面を学習してしまっているということはないと言えそうだ。

まとめ

dlshogiがやねうら王のバグを学習してしまっていることがないか確認した。
モデルに悪影響がでていないか心配だったのと、ちゃんと計測して事実を書いておかないと誤解が起きると考えたので、今回計測を行った。
バグ修正前後の勝率と、強化学習での勝率の計測結果から、影響はないと言えそうである。