同一データを学習した際に、ResNetのブロック数とフィルタ数とSE(Squeeze-and-Excitation)有無により、精度、強さがどう変わるかを比較した。
比較対象
- ResNet 10ブロック、192フィルタ
- ResNet 15ブロック、224フィルタ
- ResNet 20ブロック、256フィルタ
- 上の3パターンそれぞれについて、SE有無
教師データ
- floodgate R3800以上 2019~2021/5 (mateで打ち切り)
- 水匠3改で、100万ノード固定。初期局面から24手までにランダム16回(評価値最善手から200以内)
- BURNING BRIDGES(TSEC電竜)で、100万ノード固定。初期局面から24手までにランダム16回(評価値最善手から200以内)
- dlshogi with GCTで、3000プレイアウト
合計約3億局面
なお、やねうら王でhcpe3を生成できるように改造した。※生成が終わっても終了しないバグあり(原因不明。誰か直してくれると助かります)。
学習
- 5エポック
- 4096バッチ
- 学習率 0.04から1エポックごとに半分
- 平均化、評価値補正あり
- 2エポックからSWA開始
- 初期値から学習
- 方策の分布を学習(dlshogi with GCTの棋譜のみ)
精度比較
テストデータに、floodgateのレート3500以上の対局の棋譜からサンプリングした856,923局面を使用した。
SWAなしモデル
- SEなし
モデル | 方策損失 | 価値損失 | 方策正解率 | 価値正解率 | 方策エントロピー |
---|---|---|---|---|---|
10ブロック | 1.6379119 | 0.51276293 | 0.4730206 | 0.72314205 | 1.51876836 |
15ブロック | 1.61451681 | 0.54952968 | 0.47836673 | 0.70189649 | 1.51121722 |
20ブロック | 1.60430686 | 0.5144527 | 0.4825369 | 0.71952424 | 1.41729831 |
- SEあり
モデル | 方策損失 | 価値損失 | 方策正解率 | 価値正解率 | 方策エントロピー |
---|---|---|---|---|---|
10ブロック | 1.64183599 | 0.51881258 | 0.47337911 | 0.71709992 | 1.48604457 |
15ブロック | 1.62213967 | 0.5027243 | 0.47863532 | 0.73173113 | 1.43584003 |
20ブロック | 1.60740022 | 0.50509531 | 0.48131072 | 0.72798019 | 1.43475938 |
ブロック数が大きいほど精度が高くなり、SE有無ではSEありの方が精度が上がる。
(SEなし15ブロックの価値は、10ブロックよりも価値の損失が上がっているが、その分方策の損失が低くなっている。
方策と価値は交互に学習が進むため、エポックごとにどちらの損失が下がるかが入れ替わることがある。)
SWAありモデル
- SEなし
モデル | 方策損失 | 価値損失 | 方策正解率 | 価値正解率 | 方策エントロピー |
---|---|---|---|---|---|
10ブロック | 1.57109508 | 0.49425657 | 0.48709244 | 0.7399652 | 1.51186802 |
15ブロック | 1.54070064 | 0.48825147 | 0.49433273 | 0.74414004 | 1.47669404 |
20ブロック | 1.5281703 | 0.48567744 | 0.49743904 | 0.74624089 | 1.46332859 |
- SEあり
モデル | 方策損失 | 価値損失 | 方策正解率 | 価値正解率 | 方策エントロピー |
---|---|---|---|---|---|
10ブロック | 1.57355652 | 0.49556847 | 0.48687874 | 0.73878457 | 1.4777351 |
15ブロック | 1.5464818 | 0.48941931 | 0.49345689 | 0.74358067 | 1.43782014 |
20ブロック | 1.53439988 | 0.488463 | 0.49672319 | 0.74488159 | 1.41932988 |
ブロック数が大きいほど精度が高い傾向は、SWAなしモデルと同じである。
SWAなしと比較して、SWAありの方が損失が大きく下がっており、精度が高くなっている。
意外なことに、SE有無では、SEなしの方が精度が高い。
SEとSWAは相性が悪いようだ。
強さ比較
SWAあり、SEなしのモデルについて、強さを比較した。
dlshogiのエンジン設定は2GPU、3スレッド。
持ち時間1分、1手1秒加算
- ResNet10ブロック vs GCT電竜(model-0000167) vs 水匠3改(8スレッド)
# PLAYER : RATING ERROR POINTS PLAYED (%) CFS(%) W D L D(%) 1 susho3kai8th : 5.0 6.3 2474.5 4847 51 90 2341 267 2239 6 2 model-0000167 : -2.1 6.4 2404.5 4853 50 55 2225 359 2269 7 3 resnet10 : -2.8 6.3 2396.0 4850 49 --- 2209 374 2267 8
- ResNet10ブロック vs ResNet15ブロック vs 水匠3改(8スレッド)
# PLAYER : RATING ERROR POINTS PLAYED (%) CFS(%) W D L D(%) 1 resnet10 : 12.5 6.3 2642.0 5020 53 63 2498 288 2234 6 2 resnet15 : 10.7 6.5 2624.0 5022 52 100 2479 290 2253 6 3 susho3kai8th : -23.2 6.3 2264.0 5018 45 --- 2111 306 2601 6
- ResNet10ブロック vs ResNet20ブロック vs 水匠3改(8スレッド)
# PLAYER : RATING ERROR POINTS PLAYED (%) CFS(%) W D L D(%) 1 resnet10 : 20.2 7.1 2093.0 3857 54 100 1953 280 1624 7 2 resnet20 : -9.0 7.2 1855.0 3857 48 63 1699 312 1846 8 3 susho3kai8th : -11.2 7.3 1835.0 3852 48 --- 1691 288 1873 7
10ブロックの強さは、GCT電竜とほぼ同じになっている。
方策の分布を学習した場合でも強くできることが確認できた。
15ブロックと20ブロックの方が精度が高いが、10ブロックの方が強いという結果になった。
持ち時間5分、1手2秒加算
- ResNet10ブロック vs GCT電竜(model-0000167) vs 水匠3改(8スレッド)
# PLAYER : RATING ERROR POINTS PLAYED (%) CFS(%) W D L D(%) 1 susho3kai8th : 19.7 13.8 524.5 968 54 97 484 81 403 8 2 resnet10 : -3.0 14.1 478.5 969 49 86 428 101 440 10 3 model-0000167 : -16.7 14.2 452.0 973 46 --- 409 86 478 9
- ResNet10ブロック vs ResNet15ブロック vs 水匠3改(8スレッド)
# PLAYER : RATING ERROR POINTS PLAYED (%) CFS(%) W D L D(%) 1 resnet15 : 11.3 13.5 515.0 984 52 86 476 78 430 8 2 susho3kai8th : -1.9 14.1 485.5 979 50 72 443 85 451 9 3 resnet10 : -9.4 14.0 471.5 981 48 --- 428 87 466 9
- ResNet10ブロック vs ResNet20ブロック vs 水匠3改(8スレッド)
# PLAYER : RATING ERROR POINTS PLAYED (%) CFS(%) W D L D(%) 1 resnet20 : 8.5 13.8 515.5 995 52 84 464 103 428 10 2 resnet10 : -3.6 13.5 488.5 992 49 55 436 105 451 11 3 susho3kai8th : -4.9 13.0 484.0 989 49 --- 442 84 463 8
持ち時間が長い場合は、10ブロックより15ブロック、20ブロックが強いという結果になった。
持ち時間が長い場合は、ブロック数が大きい方が有利と言えそうだ。
この持ち時間では15ブロックが一番良さそうである。
さらに持ち時間が長くなると20ブロックの方がよくなる可能性がある。
また、10ブロックのモデルがGCT電竜よりも強くなっている。
持ち時間が長い場合は、方策の分布を学習した方が良さそうである。
まとめ
同じ教師データを使用して学習した場合、モデルのブロック数が大きいほど精度が上がることがわかった。
SWAなしの場合、SEありの方が精度が高くなる。
しかし、意外なことに、SWAありだと、SEがない方が精度が高くなった。
SEとSWAは相性が悪いようだ。
強さの比較では、持ち時間が短い場合は、10ブロックで指し手のみを学習するのが強そうである。
しかし、持ち時間が長くなると、大きいブロック数で、方策の分布を学習した方が強くなりそうであることがわかった。
GCTが電竜戦で優勝して、世界コンピュータ選手権では振るわなかったことを裏付ける結果となった。