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