最近のコンピュータ将棋では、氷彗をはじめとしてNNUE系が、Stockfishの手法を取り入れることで棋力を伸ばしている。
また、ディープラーニング系のモデルを知識蒸留することで、モデル精度も向上している。
それと比較して、dlshogiはやや停滞気味で、序中盤の精度が高いという強みも、大規模な定跡が整備されつつあり、活かせなくなっている。
電竜戦TSECのような未知の局面では、強さを発揮しているが、平手開始局面からの大会だと、定跡でほぼ終盤から開始して、後手番でやや先手有利から覆すことができるかが勝負になっている。
それには、終盤の読みの精度が重要になり、現状ではディープラーニング系よりNNUE系の方が有利な展開である。
終盤の精度をどのように向上させるか
方向性は、主に以下の2つがあると考える。
- 探索にヒューリスティックを導入する
- モデル精度を向上させる
前者は、軽量モデルとの組み合わせや、Leela Chess Zeroで検証されているようなDAGを考慮した探索などがある。
後者は、シンプルにモデル精度を向上させるアプローチである。
モデル精度を上げるためにパラメータ数を増やすと、探索速度が落ちるため、精度と速度はトレードオフの関係にある。
昨年の第5回の電竜戦までは、モデルサイズを40ブロック512フィルタまで増やすことで探索速度が落ちても強くなる傾向が確かめられていた。
今年の第35回世界コンピュータ将棋選手権では、50ブロック640フィルタのモデルを学習したが、同一持ち時間では強くならなかった。
今回は、さらにパラメータ数を増やして、60ブロック768フィルタのモデルを学習した。
60ブロック768フィルタ
訓練データ
- 50ブロック640フィルタのモデルから知識蒸留したデータ: 約10億局面
- dlshogiの自己対局+NNUE系との対局データ: 約28億局面
データ量は、50ブロック640フィルタを学習した際より少しだけ増えているが、誤差程度である。
50ブロック640フィルタのモデルは、40ブロック512フィルタのモデルから知識蒸留したデータを使用したので、データの質は良くなっている。
強さ
持ち時間400秒1手2秒加算、中終盤互角局面で測定した結果は以下の通り。
使用GPU:H100 PCI
# PLAYER : RATING ERROR POINTS PLAYED (%) CFS(%) W D L D(%) 1 nnue-8th : 45.0 20.7 301.5 517 58 100 264 75 178 15 2 pre60_50x640 : -11.6 20.3 254.0 529 48 89 221 66 242 12 3 pre66_60x768 : -33.4 20.6 229.5 524 44 --- 199 61 264 12 White advantage = 128.85 +/- 11.97 Draw rate (equal opponents) = 14.06 % +/- 1.34
pre60_50x640が50ブロック640フィルタのモデル、pre66_60x768が今回学習した60ブロック768フィルタのモデルである。
nnue-8thは基準としてリーグに加えているNNUE系のソフトである。
dlshogiの定跡から抽出した中終盤の互角局面で、終盤の読みの強さを測っている。
結果は、60ブロック768フィルタのモデルは、同一持ち時間で終盤が弱くなることが確かめられた。
なお、同一ノード数では、60ブロック768フィルタのモデルの方が強くなっている。
# PLAYER : RATING ERROR POINTS PLAYED (%) CFS(%) W D L D(%) 1 nnue-8th : 44.4 21.1 286.0 482 59 100 265 42 175 9 2 pre67_60x768 : -8.9 19.8 237.0 491 48 93 217 40 234 8 3 pre60_50x640 : -35.5 20.9 211.0 495 43 --- 187 48 260 10 White advantage = 20.60 +/- 12.31 Draw rate (equal opponents) = 9.00 % +/- 1.04
pre67_60x768が60ブロック768フィルタのモデルである。
※ファインチューニングした後のモデルで、上記と異なっている。
※ファインチューニングで弱くなっていることに後で気づいたので、実際はこれより強いはずである。
ファインチューニングの効果
50ブロック640フィルタのモデルから知識蒸留したデータ 約10億局面を除いて、dlshogiが評価が誤っていた局面からの対局の棋譜を加えたデータでファインチューニングを行った。
# PLAYER : RATING ERROR POINTS PLAYED (%) CFS(%) W D L D(%) 1 nnue-8th : 44.7 13.2 978.0 1718 57 100 853 250 615 15 2 pre60_50x640 : 14.2 12.5 891.5 1742 51 98 800 183 759 11 3 pre66_60x768 : -18.6 22.6 229.5 524 44 89 199 61 264 12 4 pre67_60x768 : -40.3 16.0 495.0 1204 41 --- 439 112 653 9 White advantage = 110.16 +/- 6.71 Draw rate (equal opponents) = 12.50 % +/- 0.67
pre66_60x768がファインチューニング前、pre67_60x768がファインチューニング後のモデルである。
ファインチューニングしたモデルの方が弱いことがわかった。
事前学習で使用したデータの分布から外れるデータが増えたことが影響している可能性がある。
知識蒸留したデータだけを除いて、ファインチューニングした場合と比較してみるつもりである。
方策のみの強さ
ファインチューニング後のモデルをfloodgateに放流した。

2週間くらいで、レーティング2866となった。
50ブロック640フィルタのモデルは、2914だったので、floodagateのレーティングは上がっていない。
gikou2_1cには、方策のみで5回勝っている。

今後の改善方針
パラメータ数を増やすだけでは、H100ではこれ以上強くならないことがはっきりしてきたので、今後は別のアプローチを検討したい。
現在、ResNetのブロックをより多くTransormerの層に置き換えるモデルアーキテクチャの変更を試している。
また、訓練データの量については、パラメータ数を増やす一連の検証でそれほど増やしていないため、訓練データの量を増やした場合に強くなるかを検証したい。
まとめ
60ブロック768フィルタのモデルを学習した。
50ブロック640フィルタのモデルに比べて、評価精度は向上したものの、同一持ち時間中終盤互角局面で弱くなることが確認できた。
パラメータ数を増やしてもこれ以上強くならないことが明確になったため、今後はモデルアーキテクチャ変更や訓練データ量を増やすなど検討したい。






