nodchipのコンピューター将棋ブログ

コンピューター将棋ソフト「tanuki-」シリーズの実験結果を掲載しています。

tanuki- 2026-05-26 bullet-shogi レーティングリグレッション調査用のベースライン

 

tanuki- 2026-05-26 bullet-shogi レーティングリグレッション調査用のベースライン

実験内容

  • nnue-pytorch と bullet-shogi で学習したとき、 bullet-shogi で学習させたほうが有意にレーティングが低い原因を調べるため、調査のベースラインとなるネットワークパラメーターを学習させる。

棋譜生成

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 tanuki-.nnue-pytorch-2024-07-30.1
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgate の 2020 年~ 2021 年の棋譜を使用した。レーティング 3900 以上同士の対局のみ使用した。戦型が角換わりの対局が 10% になるよう調整した。 32 手目までから 1 局面ランダムに選択し、その局面を開始局面とした。ランダムムーブはしなかった。
生成局面数 10 億局面 × 8 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した
フォルダ名 tanuki-.nnue-pytorch-2024-07-30.1
開始局面の最大手数 32

シャッフル条件

生成ルーチン tanuki-シャッフルルーチン
qsearch() あり
置換表 無効
min_progress 0.0
重複した局面 取り除かない

知識蒸留

Knowledge Response-based Knowledge
Distillation Schemes Offline Knowledge Distillation
Teacher network DL 水匠 dlsuisho-15b-20220426 AobaZero 20250407_235846_model_resnet30x384_relu_060

機械学習

nnue-pytorch

機械学習ルーチン nnue-pytorch + やねうら王 https://github.com/nodchip/nnue-pytorch/tree/shogi.2025-11-30.sfnnwop-1536
学習モデル sfnnwop-1536
学習手法 SGD
最適化手法 Ranger21
学習率調整手法 StepLR
features HalfKA_hm
max_epochs 800
max_time 30:00:00:00
lambda 1.0
start_lambda None
end_lambda None
qp_asymmetry 0.0
pow_exp 2.5
in_offset 270
out_offset 270
in_scaling 340
out_scaling 380
gamma 0.992
初期学習率 (lr) 8.75e-4
num_workers 16
batch_size 16384
threads 16
compile_backend cudagraphs
seed 42
network_save_period 1000000000
epoch_size 100000000
validation_size 1000000
1 epoch 毎のネットワークパラメーターのクリップ あり
ネットワークパラメーターの量子化 量子化なしで学習し、収束後に量子化する。
ネットワークパラメーターの初期化方法 pytorch のデフォルトの初期化手法で初期化する。
入玉ボーナス 入玉時、持ち駒および敵陣三段目までに侵入している駒について、小駒 1 枚につき 20 点、大駒 1 枚につき 100 点、敵陣三段目までに侵入している駒 1 枚につき 20 点追加する。

bullet-shogi

機械学習ルーチン bullet-shogi https://github.com/nodchip/bullet-shogi
bucket_mode progress8kpabs
progress_coeff tanuki-wcsc36 付属の progress.bin
output_format tanuki-sfnnwop1536
l0 1536
l1 16
l2 32
scale 600
batch_size 16384
batches_per_superbatch 6104
superbatches 300
save_rate 10000
threads 127
batch_queue_size 64
optimizer ranger
weight_decay 0.0
lr 8.75e-4
lr_gamma 0.992
lr_step 1
wdl 0.5
BRANCH shogi-support

レーティング測定

Author Nodchip
Creation 2026/05/26 00:24:37
Dev Source https://github.com/nodchip/tanuki-
Dev Sha 69eac6ad1a500823ab05a49983c1d18f369852ec
Dev Branch tanuki-wcsc36-engine.shogitest.sfnnwoP1536.progress
Dev Bench 1
Dev Network tanuki-.bullet-shogi.2026-05-07.00-400
Dev Book None
Dev Options Threads=1 Hash=16
Dev Time 8.0+0.08
Base Source https://github.com/nodchip/tanuki-
Base Sha 69eac6ad1a500823ab05a49983c1d18f369852ec
Base Branch tanuki-wcsc36-engine.shogitest.sfnnwoP1536.progress
Base Bench 1
Base Network tanuki-.nnue-pytorch-2026-05-24.0
Base Book None
Base Options Threads=1 Hash=16
Base Time 8.0+0.08
Opening Book SHOGI.floodgate32-80.adjust_bishop_exchange.sfen.epd
Upload PGNs FALSE
Syzygy WDL DISABLED
Syzygy ADJ. OPTIONAL
Win ADJ. movecount=3 score=2000

実験結果

レーティング測定

Elo | -451.55 +- 94.15 (95%)

SPRT | 8.0+0.08s Threads=1 Hash=16MB

LLR | -2.41 (-2.25, 2.89) [0.00, 4.00]

Games | N: 318 W: 20 L: 294 D: 4

Penta | [136, 4, 18, 0, 1]

https://bench.kishibe.dyndns.tv/test/203/

 

自己対局は、 nnue-pytorch で学習させたものと比べ、 R451.55 レーティングが低く、有意な差があった。

考察

自己対局でレーティングが有意に低かったのは、ロス関数の違いや、パラメーターの違いによるものだと思う。まったく勝てていないわけではないため、学習に完全に失敗しているわけではないと思う。

まとめ

nnue-pytorch と bullet-shogi で学習したとき、 bullet-shogi で学習させたほうが有意にレーティングが低い原因を調べるため、調査のベースラインとなるネットワークパラメーターを学習させた。

自己対局は、 nnue-pytorch で学習させたものと比べ、 R451.55 レーティングが低く、有意な差があった。自己対局でレーティングが有意に低かったのは、ロス関数の違いや、パラメーターの違いによるものだと思う。まったく勝てていないわけではないため、学習に完全に失敗しているわけではないと思う。

次回は、ロス関数を nnue-pytorch で使われている abs(error)^2.5 に変更し、学習させ、レーティングを測定したい。