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

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

tanuki- 2022-01-21 進行度と局面の割合

tanuki- 2022-01-21 進行度と局面の割合

実験内容

  • 進行度と、その進行度に属する局面の割合を調べる。

棋譜生成

A

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠2
1手あたりの思考 深さ最大 24 思考ノード数最大 50,000 ノード
開始局面 foodgateの2019年~2020年前半の棋譜の32手目までから1局面ランダムに選択し、ランダムに 1 手指し、その局面を開始局面とした
生成局面数 10 億局面× 2 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

B

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠2
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgateの2019年~2020年前半の棋譜の32手目までから1局面ランダムに選択し、ランダムに 1 手指し、その局面を開始局面とした
生成局面数 20 億局面 × 1 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

C

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠2
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgateの2019年~2020年前半の棋譜の32手目までから1局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし
生成局面数 20 億局面 × 1 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

D

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠2
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgate の 2020 年~ 2021 年の棋譜のうち、レーティング 3900 以上同士の対局の 32 手目までから 1 局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし
生成局面数 10 億局面 × 2 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

E

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠5
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgate の 2020 年~ 2021 年の棋譜のうち、レーティング 3900 以上同士の対局の 32 手目までから 1 局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし
生成局面数 10 億局面 × 2 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

F

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠5
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgate の 2020 年~ 2021 年の棋譜のうち、レーティング 3900 以上同士の対局の 32 手目までから 1 局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし FV_SCALE=24
生成局面数 10 億局面 × 2 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

実験結果

A vs B

B vs C

C vs D

D vs E

E vs F

まとめ

進行度と、その進行度に属する局面の割合を調べた。

A と B を比較した結果、 B のほうが中盤の局面が少なく、終盤の局面が多かった。

B と C を比較した結果、 C のほうが序盤の局面が多く、中盤の局面が少なく、終盤の局面が多かった。

C と D を比較した結果、 D のほうが序盤の局面が多く、中盤の局面が少なく、終盤の局面は多かった。

D と E を比較した結果、 E のほうが序中盤の局面が少なく、中盤の局面が多かった。

E と F を比較した結果、 F のほうが終盤の局面は少なかった。

A と B の違いは、探索の深さである。探索の深さが浅いほうが、中盤がすぐに終わり、終盤に突入しやすくなるのだと思われる。

B と C の違いは、ランダムムーブの有無である。ランダムムーブがないほうが、序盤の局面が多くなるという事だと思われる。

C と D の違いは、開始局面の選び方である。強いソフト同士の対局のほうが、棋譜に序盤の局面が多く含まれるという事なのだと思われる。

D と E の違いは、評価関数の差である。水匠 5 のほうが、序盤を早く終えやすいという事なのだと思われる。

E と F の違いは、 FV_SCALE の差である。 FV_SCALE を 24 に設定したほうが、序盤が長く続くのだと思われる。

棋譜の生成条件により、進行度とそれに属する局面の割合が異なることが確かめられた。

tanuki- 2022-01-21 評価値の絶対値と局面の割合

tanuki- 2022-01-21 評価値の絶対値と局面の割合

実験内容

  • 評価値の絶対値と局面の割合を調べる。

棋譜生成

A

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠2
1手あたりの思考 深さ最大 24 思考ノード数最大 50,000 ノード
開始局面 foodgateの2019年~2020年前半の棋譜の32手目までから1局面ランダムに選択し、ランダムに 1 手指し、その局面を開始局面とした
生成局面数 10 億局面× 2 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

B

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠2
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgateの2019年~2020年前半の棋譜の32手目までから1局面ランダムに選択し、ランダムに 1 手指し、その局面を開始局面とした
生成局面数 20 億局面 × 1 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

C

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠2
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgateの2019年~2020年前半の棋譜の32手目までから1局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし
生成局面数 20 億局面 × 1 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

D

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠2
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgate の 2020 年~ 2021 年の棋譜のうち、レーティング 3900 以上同士の対局の 32 手目までから 1 局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし
生成局面数 10 億局面 × 2 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

E

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠5
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgate の 2020 年~ 2021 年の棋譜のうち、レーティング 3900 以上同士の対局の 32 手目までから 1 局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし
生成局面数 10 億局面 × 2 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

F

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠5
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgate の 2020 年~ 2021 年の棋譜のうち、レーティング 3900 以上同士の対局の 32 手目までから 1 局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし FV_SCALE=24
生成局面数 10 億局面 × 2 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

実験結果

A vs B

B vs C

C vs D

D vs E

E vs F

まとめ

進行度と、その進行度に属する局面の割合を調べた。

A と B を比較した結果、 B のほうが評価値の絶対値が低い局面が多く、評価値の絶対値 1000 程度で逆転した。

B と C を比較した結果、 C のほうが評価値の絶対値が低い局面が多く、評価値の絶対値 1300 程度で逆転した。

C と D を比較した結果、 D のほうが評価値の絶対値が低い局面が多いが、評価値の絶対値 500 程度で逆転した。

D と E を比較した結果、 E のほうが評価値の絶対値が低い局面が少ないが、評価値の絶対値 1400 程度で逆転した。また、 E には特定の評価値に山があった。

E と F を比較した結果、 F のほうが評価値の絶対値が低い局面が多かった。また F には E より左の地点に山があった。

A と B の違いは、探索の深さである。探索の深さが浅いほうが、評価値の絶対値が小さい局面が多くなるという事だと思われる。

B と C の違いは、ランダムムーブの有無である。ランダムムーブにより、開始局面の評価値の絶対値が大きくなるという現象が起こっているのだと思われる。

C と D の違いは、開始局面の選び方である。強いソフト同士の対局のほうが、序盤の評価値の絶対値が小さいのだと思われる。

D と E の違いは、評価関数の差である。水匠 5 のほうが、全般的に評価値の絶対値が大きく、終盤の手数が短いのだと思われる。

E と F の違いは、 FV_SCALE の差である。 FV_SCALE を 24 に設定したほうが、評価値の絶対値が小さくなることと矛盾はない。

棋譜の生成条件により、評価値とそれに属する局面の割合が異なることが確かめられた。

tanuki- 2022-01-18 棋譜生成時の評価関数

tanuki- 2022-01-18 棋譜生成時の評価関数

実験内容

  • 棋譜生成時の評価関数の違いにより、レーティングに変化があるか測定する。

棋譜生成

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠5
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgate の 2020 年~ 2021 年の棋譜のうち、レーティング 3900 以上同士の対局の 32 手目までから 1 局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし
生成局面数 10 億局面 × 2 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

機械学習

機械学習ルーチン やねうら王機械学習ルーチン
学習モデル halfkp_vm_256x2-32-32
学習手法 SGD ミニバッチ法
USI_Hash 1024
Threads 16
loop 100
batchsize 1000000
lambda 0.5
eta 1.0
newbob_decay 0.5
nn_batch_size 1000
eval_save_interval 100000000
loss_output_interval 1000000
mirror_percentage 50
eval_limit 32000
weight_by_progress 無効
次元下げ なし
学習データ内で重複した局面の除外 しない
初期ネットワークパラメーター tanuki-wcsc29
勝敗項の教師信号 0.80

レーティング測定

対局相手 tanuki-wcsc29.halfkp_vm_256x2-32-32.suisho-wcsoc2020.depth=9.GeneratorRandomMove=false.startpos
思考時間 持ち時間 900 秒 + 1 手 5 秒加算
対局数 5000
同時対局数 64
ハッシュサイズ 768
開始局面 たややん互換局面集

実験結果

棋譜生成

水匠2の場合

998290486 / 1000000000

elapsed time = 48:00:00

current date time = 2022-01-01 23:38:10

finish date time = 2022-01-01 23:43:04

speed = 5796.33 (data/sec)

max speed = 5819.16 (data/sec)

Number of plays per record=118

水匠5の場合

971608612 / 1000000000

elapsed time = 32:00:00

current date time = 2022-01-17 02:17:57

finish date time = 2022-01-17 03:13:56

speed = 8451.37 (data/sec)

max speed = 8474.66 (data/sec)

Number of plays per record=120

機械学習

レーティング測定

対局数=5000 同時対局数=64 ハッシュサイズ=768 開始手数=24 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表示更新間隔(ms)=3600000

思考エンジン1 name=YaneuraOu NNUE 7.00 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\suisho5\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100 DrawValue=-2 BookEvalBlackLimit=0 BookEvalWhiteLimit=-140

思考エンジン2 name=YaneuraOu NNUE 7.00 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine2\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29.halfkp_vm_256x2-32-32.suisho-wcsoc2020.depth=9.GeneratorRandomMove=false.startpos\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100 DrawValue=-2 BookEvalBlackLimit=0 BookEvalWhiteLimit=-140

対局数5000 先手勝ち2216(54.1%) 後手勝ち1877(45.9%) 引き分け907

engine1

勝ち2031(49.6% R-2.2 +-9.6) 先手勝ち1096(26.8%) 後手勝ち935(22.8%)

宣言勝ち32 先手宣言勝ち12 後手宣言勝ち20 先手引き分け443 後手引き分け464

engine2

勝ち2062(50.4%) 先手勝ち1120(27.4%) 後手勝ち942(23.0%)

宣言勝ち211 先手宣言勝ち113 後手宣言勝ち98 先手引き分け464 後手引き分け443

2031,907,2062

まとめ

棋譜生成時の評価関数の違いにより、レーティングに変化があるか測定した。評価関数として、水匠2と水匠5を比較した。

学習ロスと検証ロスは、水匠 5 のほうが低かった。

指し手一致率は、水匠 5 のほうが低かった。

平手局面の評価値は、水匠 5 のほうが高かった。

評価値の絶対値は、水匠 5 のほうが高かった。

レーティングは、有意差が無かった。

学習ロスト検証ロスについては、水匠 5 のほうが評価値の絶対値が高いことが原因の可能性がある。これについては、学習データに付与されている評価値を調べるのが良いと思われる。

指し手一致率については、本データのみからでは原因を特定するのは難しいと思われる。

平手局面の評価値については、水匠 5 のほうが評価値の絶対値が高いことが原因の可能性がある。これについても、学習ーで他の評価値を調べるのが良いと思われる。

評価値の絶対値についても同様である。

レーティングについては、水匠 5 の開発者、杉村氏が FV_SCALE=24 での使用を推奨している。最適値でなかったために水匠 2 に比べて伸びなかった可能性がある。 FV_SCALE=24 で棋譜を生成し、比較したい。

tanuki- 2022-01-13 棋譜生成時の引き分けの評価値

tanuki- 2022-01-13 棋譜生成時の引き分けの評価値

実験内容

  • 棋譜生成時の引き分けの評価値の違いにより、レーティングに変化があるか測定する。

棋譜生成

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠2
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgate の 2020 年~ 2021 年の棋譜のうち、レーティング 3900 以上同士の対局の 32 手目までから 1 局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし
生成局面数 10 億局面 × 2 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

機械学習

機械学習ルーチン やねうら王機械学習ルーチン
学習モデル halfkp_vm_256x2-32-32
学習手法 SGD ミニバッチ法
USI_Hash 1024
Threads 16
loop 100
batchsize 1000000
lambda 0.5
eta 1.0
newbob_decay 0.5
nn_batch_size 1000
eval_save_interval 100000000
loss_output_interval 1000000
mirror_percentage 50
eval_limit 32000
weight_by_progress 無効
次元下げ なし
学習データ内で重複した局面の除外 しない
初期ネットワークパラメーター tanuki-wcsc29
勝敗項の教師信号 0.80

レーティング測定

対局相手 tanuki-wcsc29.halfkp_vm_256x2-32-32.suisho-wcsoc2020.depth=9.GeneratorRandomMove=false.startpos
思考時間 持ち時間 900 秒 + 1 手 5 秒加算
対局数 5000
同時対局数 64
ハッシュサイズ 768
開始局面 たややん互換局面集

実験結果

棋譜生成

引き分けの評価値を -2 に設定した場合

998290486 / 1000000000

elapsed time = 48:00:00

current date time = 2022-01-01 23:38:10

finish date time = 2022-01-01 23:43:04

speed = 5796.33 (data/sec)

max speed = 5819.16 (data/sec)

Number of plays per record=118

引き分けの評価値を -100 に設定した場合

991171960 / 1000000000

elapsed time = 49:00:00

current date time = 2022-01-11 08:04:13

finish date time = 2022-01-11 08:30:13

speed = 5655.74 (data/sec)

max speed = 5655.74 (data/sec)

Number of plays per record=118

機械学習

レーティング測定

対局数=5000 同時対局数=64 ハッシュサイズ=768 開始手数=24 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表示更新間隔(ms)=3600000

思考エンジン1 name=YaneuraOu NNUE 7.00 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29.halfkp_vm_256x2-32-32.suisho-wcsoc2020.depth=9.GeneratorRandomMove=false.startpos.DrawValue=-100\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100 DrawValue=-2 BookEvalBlackLimit=0 BookEvalWhiteLimit=-140

思考エンジン2 name=YaneuraOu NNUE 7.00 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine2\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29.halfkp_vm_256x2-32-32.suisho-wcsoc2020.depth=9.GeneratorRandomMove=false.startpos\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100 DrawValue=-2 BookEvalBlackLimit=0 BookEvalWhiteLimit=-140

対局数5000 先手勝ち2171(53.2%) 後手勝ち1907(46.8%) 引き分け922

engine1

勝ち2042(50.1% R0.4 +-9.6) 先手勝ち1104(27.1%) 後手勝ち938(23.0%)

宣言勝ち29 先手宣言勝ち14 後手宣言勝ち15 先手引き分け493 後手引き分け429

engine2

勝ち2036(49.9%) 先手勝ち1067(26.2%) 後手勝ち969(23.8%)

宣言勝ち186 先手宣言勝ち101 後手宣言勝ち85 先手引き分け429 後手引き分け493

2042,922,2036

まとめ

棋譜生成時の引き分けの評価値の違いにより、レーティングに変化があるか測定した。

学習ロスは、引き分けの値を -2 に設定した場合とほとんど変わらなかった。

検証ロスは、引き分けの値を -2 に設定した場合より高くなった。

指し手一致率は、引き分けの値を -2 に設定した場合よりやや高くなった。また、計測のブレが小さかった。

平手局面の評価値は、引き分けの値を -2 に設定した場合と変わらなかった。

評価値の絶対値は、引き分けの値を -2 に設定した場合と変わらなかった。

レーティングは、引き分けの値を -2 に設定した場合と有意な差はなかった。

学習ロスが変わらず、検証ロスが上がっている点については、過学習が起きている可能性を表しているものと思われる。原因は不明である。

最終的な指し手一致率については、計測誤差の可能性がある。計測のブレの小ささの原因は不明である。

平手局面の評価値については、学習が大きく失敗していない事を表しているものと思われる。

評価値の絶対値については、教師データに含まれる評価値に、大きな違いがないことを表しているものと思われる。

レーティングについては、引き分けの評価値の値は、少なくとも -2 と -100 の間では、大きな違いがないことを表している。

引き分けの評価値を -100 に設定する明示的な理由は見つからなかった。今後の棋譜生成においては、 -2 を使用していきたい。

tanuki- 2022-01-03 棋譜生成時の開始局面

tanuki- 2022-01-03 棋譜生成時の開始局面

実験内容

  • 棋譜生成時の開始局面の違いによりレーティングに変化があるか測定する。

棋譜生成

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠2
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgate の 2020 年~ 2021 年の棋譜のうち、レーティング 3900 以上同士の対局の 32 手目までから 1 局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし
生成局面数 10 億局面 × 2 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

機械学習

機械学習ルーチン やねうら王機械学習ルーチン
学習モデル halfkp_vm_256x2-32-32
学習手法 SGD ミニバッチ法
USI_Hash 1024
Threads 16
loop 100
batchsize 1000000
lambda 0.5
eta 1.0
newbob_decay 0.5
nn_batch_size 1000
eval_save_interval 100000000
loss_output_interval 1000000
mirror_percentage 50
eval_limit 32000
weight_by_progress 無効
次元下げ なし
学習データ内で重複した局面の除外 しない
初期ネットワークパラメーター tanuki-wcsc29
勝敗項の教師信号 0.80

レーティング測定

対局相手 tanuki-wcsc29.halfkp_vm_256x2-32-32.suisho-wcsoc2020.depth=9.GeneratorRandomMove=false
思考時間 持ち時間 900 秒 + 1 手 5 秒加算
対局数 5000
同時対局数 64
ハッシュサイズ 768
開始局面 たややん互換局面集

実験結果

機械学習

レーティング測定

16:18:00.955 対局数=5000 同時対局数=64 ハッシュサイズ=768 開始手数=24 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表示更新間隔(ms)=3600000

16:18:00.955 思考エンジン1 name=YaneuraOu NNUE 7.00 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29.halfkp_vm_256x2-32-32.suisho-wcsoc2020.depth=9.GeneratorRandomMove=false.startpos\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100 DrawValue=-2 BookEvalBlackLimit=0 BookEvalWhiteLimit=-140

16:18:00.955 思考エンジン2 name=YaneuraOu NNUE 7.00 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine2\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29.halfkp_vm_256x2-32-32.suisho-wcsoc2020.depth=9.GeneratorRandomMove=false\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100 DrawValue=-2 BookEvalBlackLimit=0 BookEvalWhiteLimit=-140

16:18:00.955 対局数5000 先手勝ち2182(53.3%) 後手勝ち1915(46.7%) 引き分け903

16:18:00.955 engine1

16:18:00.955 勝ち2141(52.3% R12.9 +-9.6) 先手勝ち1140(27.8%) 後手勝ち1001(24.4%)

16:18:00.955 宣言勝ち186 先手宣言勝ち98 後手宣言勝ち88 先手引き分け458 後手引き分け445

16:18:00.955 engine2

16:18:00.955 勝ち1956(47.7%) 先手勝ち1042(25.4%) 後手勝ち914(22.3%)

16:18:00.955 宣言勝ち44 先手宣言勝ち19 後手宣言勝ち25 先手引き分け445 後手引き分け458

16:18:00.955 2141,903,1956

まとめ

棋譜生成時の開始局面の違いによりレーティングに変化があるか測定した。

学習ロスと検証ロスは、レーティング 3900 以上のソフト同士の対局の棋譜を使用したほうが高くなった。

指し手一致率は、レーティング 3900 以上のソフト同士の対局の棋譜を使用したほうがやや高くなった。

平手局面の評価値は、レーティング 3900 以上のソフト同士の対局の棋譜を使用したほうがやや低くなった。

評価値の絶対値は、レーティング 3900 以上のソフト同士の対局の棋譜を使用したほうがやや低くなった。

レーティングは、レーティング 3900 以上のソフト同士の対局の棋譜を使用したほうが有意に高くなった。

学習ロスと検証ロスについては、ロスの計算式より、学習データに含まれる評価値が 0 に近いものが多いためだと考えられる。この原因として、レーティング 3900 以上のソフト同士の対局のほうが、そうでないものに比べ、形勢が傾くまでにかかる手数が長いことが考えられる。これについて詳しく検証したいのであれば、手数と評価値の絶対値の相関を調べればよいと思われる。

指し手一致率についても、評価値が 0 に近い局面の割合が増えたことが原因の可能性がある。ただし、これについても検証が必要である。

平手局面の評価値についても、評価値が 0 に近い局面の割合が増えたことが原因の可能性がある。ただし、これについては学習が大きく失敗していない事が確認できれば良いため、検証の必要はないと思われる。

評価値の絶対値についても、評価値が 0 に近い局面の割合が増えたことが原因の可能性がある。これは、学習の結果、評価値のスケールが下がった可能性と、検証データに評価値が 0 に近い局面の割合が増えたことの、 2 つの可能性が考えられる。

レーティングについては、レーティング 3900 以上のソフト同士の対局の棋譜を使用したほうが良い結果が得られると考えてよいと思われる。

今後は、レーティング 3900 以上のソフト同士の対局の棋譜から開始局面を選びたいと思う。

tanuki- 2021-12-25 棋譜生成時のランダムムーブ

tanuki- 2021-12-25 棋譜生成時のランダムムーブ

実験内容

  • 棋譜生成時のランダムムーブの有無で、レーティングに変化があるか測定する。

棋譜生成

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠2
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgateの2019年~2020年前半の棋譜の32手目までから1局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし
生成局面数 20 億局面 × 1 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

機械学習

機械学習ルーチン やねうら王機械学習ルーチン
学習モデル halfkp_vm_256x2-32-32
学習手法 SGD ミニバッチ法
USI_Hash 1024
Threads 16
loop 100
batchsize 1000000
lambda 0.5
eta 1.0
newbob_decay 0.5
nn_batch_size 1000
eval_save_interval 100000000
loss_output_interval 1000000
mirror_percentage 50
eval_limit 32000
weight_by_progress 無効
次元下げ なし
学習データ内で重複した局面の除外 しない
初期ネットワークパラメーター tanuki-wcsc29
勝敗項の教師信号 0.80

レーティング測定

対局相手 tanuki-denryu2
思考時間 持ち時間 900 秒 + 1 手 5 秒加算
対局数 2000
同時対局数 64
ハッシュサイズ 768
開始局面 たややん互換局面集

実験結果

機械学習

レーティング測定

対局数=5000 同時対局数=64 ハッシュサイズ=768 開始手数=24 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表示更新間隔(ms)=3600000

思考エンジン1 name=YaneuraOu NNUE 7.00beta4 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29.halfkp_vm_256x2-32-32.suisho-wcsoc2020.depth=9.GeneratorRandomMove=false\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100 DrawValue=-2 BookEvalBlackLimit=0 BookEvalWhiteLimit=-140

思考エンジン2 name=YaneuraOu NNUE 7.00beta4 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine2\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29.halfkp_vm_256x2-32-32.suisho-wcsoc2020.depth=9\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100 DrawValue=-2 BookEvalBlackLimit=0 BookEvalWhiteLimit=-140

対局数5000 先手勝ち2144(54.1%) 後手勝ち1818(45.9%) 引き分け1038

engine1

勝ち2117(53.4% R18.9 +-9.6) 先手勝ち1152(29.1%) 後手勝ち965(24.4%)

宣言勝ち63 先手宣言勝ち35 後手宣言勝ち28 先手引き分け542 後手引き分け496

engine2

勝ち1845(46.6%) 先手勝ち992(25.0%) 後手勝ち853(21.5%)

宣言勝ち115 先手宣言勝ち54 後手宣言勝ち61 先手引き分け496 後手引き分け542

2117,1038,1845

まとめ

棋譜生成時のランダムムーブの有無で、レーティングに変化があるか測定した。

学習ロスと検証ロスは、ランダムムーブを行った場合に対して高くなった。

指し手一致率は、ランダムムーブを行った場合に対して高くなった。

平手局面の評価値は、ランダムムーブを行った場合とほぼ等しくなった。

評価値の絶対値は、ランダムムーブを行った場合に対して低くなった。

棋力は tanuki-denryu2 に対して、 R18.9 高くなった。

学習ロスト検証ロスが高くなったのは、学習データに評価値が 0 に近い局面が増えたためだと思われる。ランダムムーブを行った場合、ランダムムーブが悪手だった場合に、一気に形勢が傾き、評価値の絶対値が高くなる可能性がある。今回はランダムムーブを行わなかったため、一気に形勢が傾くことが少なくなり、評価値が 0 に近い局面が増えたのだと考えられる。

指し手一致率が高くなったのは、学習データに評価値が 0 に近い局面が増えたのが原因の可能性がある。序中盤と終盤で、序中盤のほうが指し手一致率が高い傾向があるのだとすれば、序中盤の局面が増えたことにより、指し手一致率が高くなったのだと推測できる。一方、教師データの質が高くなり、評価関数の精度が高まったための可能性も捨てきれない。

平手局面の評価値については、学習で大きな問題が起こっていないことを表しているものと思われる。

評価値の絶対値が低くなったのは、学習データに評価値が 0 に近い局面が増えたためだと思われる。また、検証データにも評価値が 0 に近い局面が増えたため、トータルで低くなっているのだと考えられる。

棋力が高くなったのは、学習データに序中盤の局面が増えたためだと考えられる。教師局面の質が高くなったためと言い換えても良いかもしれない。

今後はランダムムーブは行わずに棋譜生成を行っていきたい。

tanuki- 2021-12-23 スーパーテラショック定跡 (300万局面) 棋力測定

tanuki- 2021-12-23 スーパーテラショック定跡 (300万局面) 棋力測定

実験内容

  • スーパーテラショック定跡 (300万局面) の棋力を測定する。

レーティング測定

対局相手 tanuki-denryu2 定跡
思考時間 持ち時間 900 秒 + 1 手 5 秒加算
対局数 2000
同時対局数 64
ハッシュサイズ 768
開始局面 平手局面

実験結果

レーティング測定

engine1 がスーパーテラショック定跡 (300万局面)、 enign2 が tanuki-denryu2 定跡。

対局数=5000 同時対局数=64 ハッシュサイズ=768 開始手数=0 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表示更新間隔(ms)=3600000

思考エンジン1 name=YaneuraOu NNUE 7.00beta4 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29.halfkp_vm_256x2-32-32.suisho-wcsoc2020\final 定跡手数=256 定跡ファイル名=user_book1.db 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=0 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100 DrawValue=-2 BookEvalBlackLimit=-200 BookEvalWhiteLimit=-200

思考エンジン2 name=YaneuraOu NNUE 7.00beta4 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine2\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29.halfkp_vm_256x2-32-32.suisho-wcsoc2020\final 定跡手数=256 定跡ファイル名=user_book1.db 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=true 定跡の手数を無視する=false SlowMover=100 DrawValue=-2 BookEvalBlackLimit=0 BookEvalWhiteLimit=-140

対局数5000 先手勝ち2185(53.9%) 後手勝ち1870(46.1%) 引き分け945

engine1

勝ち1990(49.1% R-5.2 +-9.6) 先手勝ち1007(24.8%) 後手勝ち983(24.2%)

宣言勝ち125 先手宣言勝ち65 後手宣言勝ち60 先手引き分け339 後手引き分け606

engine2

勝ち2065(50.9%) 先手勝ち1178(29.1%) 後手勝ち887(21.9%)

宣言勝ち130 先手宣言勝ち74 後手宣言勝ち56 先手引き分け606 後手引き分け339

1990,945,2065

まとめ

スーパーテラショック定跡 (300万局面) の棋力を測定した。

比較対象として、 tanuki-denryu2 定跡を用いた。

レーティング測定の結果、スーパーテラショック定跡 (300万局面) と tanuki-denryu2 では、有意な差はなかった。

計算資源や手間を考えると、 tanuki-denryu2 が採用したたややん定跡生成手法 2020 のほうが優秀である可能性がある。