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

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

tanuki- 2021-10-23 勝敗項の教師信号 再実験

tanuki- 2021-10-23 勝敗項の教師信号 再実験

実験内容

  • 学習時の勝敗項の教師信号を変えながら学習させ、勝率を測定する

棋譜生成

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

機械学習

機械学習ルーチン やねうら王機械学習ルーチン
学習モデル halfkp_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 有効
次元下げ K・P・HalfRelativeKP・左右対称
学習データ内で重複した局面の除外 する
初期ネットワークパラメーター tanuki-wcsc29
勝敗項の教師信号 0.9 ~ 0.999999

レーティング測定

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

実験結果

機械学習

レーティング測定

対局数=2000 同時対局数=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 6.50 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine1\source\YaneuraOu-by-gcc.exe 評

価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29-2019-05-06.winning_percentage_for_win=0.900000\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加

える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採

択率を考慮する=false 定跡の手数を無視する=false SlowMover=100

思考エンジン2 name=YaneuraOu NNUE 6.50 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine2\source\YaneuraOu-by-gcc.exe 評

価関数フォルダパス=D:\hnoda\tanuki-denryu-tsec-1\eval 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100

対局数2000 先手勝ち858(52.4%) 後手勝ち780(47.6%) 引き分け362

engine1

勝ち816(49.8% R-1.0 +-15.2) 先手勝ち420(25.6%) 後手勝ち396(24.2%)

宣言勝ち19 先手宣言勝ち9 後手宣言勝ち10 先手引き分け167 後手引き分け195

engine2

勝ち822(50.2%) 先手勝ち438(26.7%) 後手勝ち384(23.4%)

宣言勝ち23 先手宣言勝ち10 後手宣言勝ち13 先手引き分け195 後手引き分け167

816,362,822

対局数=2000 同時対局数=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 6.50 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine1\source\YaneuraOu-by-gcc.exe 評

価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29-2019-05-06.winning_percentage_for_win=0.990000\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加

える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採

択率を考慮する=false 定跡の手数を無視する=false SlowMover=100

思考エンジン2 name=YaneuraOu NNUE 6.50 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine2\source\YaneuraOu-by-gcc.exe 評

価関数フォルダパス=D:\hnoda\tanuki-denryu-tsec-1\eval 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100

対局数2000 先手勝ち863(53.0%) 後手勝ち765(47.0%) 引き分け372

engine1

勝ち818(50.2% R1.4 +-15.2) 先手勝ち429(26.4%) 後手勝ち389(23.9%)

宣言勝ち58 先手宣言勝ち28 後手宣言勝ち30 先手引き分け177 後手引き分け195

engine2

勝ち810(49.8%) 先手勝ち434(26.7%) 後手勝ち376(23.1%)

宣言勝ち19 先手宣言勝ち8 後手宣言勝ち11 先手引き分け195 後手引き分け177

818,372,810

対局数=2000 同時対局数=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 6.50 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine1\source\YaneuraOu-by-gcc.exe 評

価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29-2019-05-06.winning_percentage_for_win=0.999000\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加

える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採

択率を考慮する=false 定跡の手数を無視する=false SlowMover=100

思考エンジン2 name=YaneuraOu NNUE 6.50 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine2\source\YaneuraOu-by-gcc.exe 評

価関数フォルダパス=D:\hnoda\tanuki-denryu-tsec-1\eval 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100

対局数2000 先手勝ち872(52.7%) 後手勝ち782(47.3%) 引き分け346

engine1

勝ち796(48.1% R-10.8 +-15.2) 先手勝ち415(25.1%) 後手勝ち381(23.0%)

宣言勝ち49 先手宣言勝ち25 後手宣言勝ち24 先手引き分け163 後手引き分け183

engine2

勝ち858(51.9%) 先手勝ち457(27.6%) 後手勝ち401(24.2%)

宣言勝ち20 先手宣言勝ち11 後手宣言勝ち9 先手引き分け183 後手引き分け163

796,346,858

対局数=2000 同時対局数=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 6.50 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine1\source\YaneuraOu-by-gcc.exe 評

価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29-2019-05-06.winning_percentage_for_win=0.999900\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加

える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採

択率を考慮する=false 定跡の手数を無視する=false SlowMover=100

思考エンジン2 name=YaneuraOu NNUE 6.50 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine2\source\YaneuraOu-by-gcc.exe 評

価関数フォルダパス=D:\hnoda\tanuki-denryu-tsec-1\eval 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100

対局数2000 先手勝ち852(52.1%) 後手勝ち782(47.9%) 引き分け366

engine1

勝ち834(51.0% R5.9 +-15.2) 先手勝ち433(26.5%) 後手勝ち401(24.5%)

宣言勝ち52 先手宣言勝ち26 後手宣言勝ち26 先手引き分け180 後手引き分け186

engine2

勝ち800(49.0%) 先手勝ち419(25.6%) 後手勝ち381(23.3%)

宣言勝ち38 先手宣言勝ち20 後手宣言勝ち18 先手引き分け186 後手引き分け180

834,366,800

対局数=2000 同時対局数=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 6.50 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine1\source\YaneuraOu-by-gcc.exe 評

価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29-2019-05-06.winning_percentage_for_win=0.999990\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加

える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採

択率を考慮する=false 定跡の手数を無視する=false SlowMover=100

思考エンジン2 name=YaneuraOu NNUE 6.50 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine2\source\YaneuraOu-by-gcc.exe 評

価関数フォルダパス=D:\hnoda\tanuki-denryu-tsec-1\eval 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100

対局数2000 先手勝ち881(52.7%) 後手勝ち790(47.3%) 引き分け329

engine1

勝ち823(49.3% R-4.3 +-15.2) 先手勝ち424(25.4%) 後手勝ち399(23.9%)

宣言勝ち51 先手宣言勝ち20 後手宣言勝ち31 先手引き分け145 後手引き分け184

engine2

勝ち848(50.7%) 先手勝ち457(27.3%) 後手勝ち391(23.4%)

宣言勝ち40 先手宣言勝ち25 後手宣言勝ち15 先手引き分け184 後手引き分け145

823,329,848

対局数=2000 同時対局数=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 6.50 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine1\source\YaneuraOu-by-gcc.exe 評

価関数フォルダパス=D:\hnoda\shogi\eval\tanuki-wcsc29-2019-05-06.winning_percentage_for_win=0.999999\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加

える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採

択率を考慮する=false 定跡の手数を無視する=false SlowMover=100

思考エンジン2 name=YaneuraOu NNUE 6.50 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine2\source\YaneuraOu-by-gcc.exe 評

価関数フォルダパス=D:\hnoda\tanuki-denryu-tsec-1\eval 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=900000 秒読み時間(ms)=0 加算時間(ms)=5000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100

対局数2000 先手勝ち888(54.6%) 後手勝ち739(45.4%) 引き分け373

engine1

勝ち752(46.2% R-21.4 +-15.3) 先手勝ち415(25.5%) 後手勝ち337(20.7%)

宣言勝ち33 先手宣言勝ち19 後手宣言勝ち14 先手引き分け188 後手引き分け185

engine2

勝ち875(53.8%) 先手勝ち473(29.1%) 後手勝ち402(24.7%)

宣言勝ち31 先手宣言勝ち14 後手宣言勝ち17 先手引き分け185 後手引き分け188

752,373,875

合計勝率 先手勝率 後手勝率
0.9 49.8 25.6 24.2
0.99 50.2 26.4 23.9
0.999 48.1 25.1 23
0.9999 51 26.5 24.5
0.99999 49.3 25.4 23.9
0.999999 46.2 25.5 20.7

まとめ

学習時の勝敗項の教師信号を変えながら学習させ、勝率を測定しなおした。

train loss と test loss は、教師信号が大きいほど小さくなる傾向があった。

指し手一致度は、教師信号が大きいほど高くなる傾向があった。

平手局面の評価値は、大きな違いはなかった

評価値の絶対値は、教師信号が大きいほど小さくなる傾向があった。

勝率は、教師信号の大きさに依存しない傾向があった。ただし、 0.999999 だけ悪くなった。

train loss と test loss について、教師信号が大きいほど交差エントロピーの式の値が小さくなるため、妥当な結果だと考えられる。

指し手一致度については、教師信号が小さいと、終盤での評価値が不正確となり、下がってしまうのではないかと考えられる。これについては、進行度別の指し手一致度を計測すれば確かめられると思われる。

平手局面については、教師信号の大きさは平手局面の評価値には影響しないと考えられる。

評価値の絶対値は、教師信号の大きさに相関があると考えられる。

勝率については、 教師信号の大きさには関係がないことが分かった。ただし、 0.999999 だけ異なっているのは謎である。

教師信号の値は、特に変更しなくても良さそうである。