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

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

tanuki- 2021-07-16 L2正規化パラメーター調整

tanuki- 2021-07-16 L2正規化パラメーター調整

実験内容

  • L2 正規化パラメーターを調整しながら機械学習を行い、自己対局によりレーティングを測定する。

棋譜生成

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 tanuki-denryu-tsec-1 eval
1手あたりの思考 思考ノード数 50,000 ノードをベースとし、自動調整する
開始局面 foodgate上の棋譜の24手目までから1局面ランダムに選択し、その局面を開始局面とした
生成局面数 1 億局面× 3 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

レーティング測定

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

実験結果

機械学習

l2_regularization_parameter=1.0 のみグラフの形状が明らかに異なっていたため、別のグラフにしている。

自己対局

対局数=2000 同時対局数=64 ハッシュサイズ=768 開始手数=24 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表

示更新間隔(ms)=3600000

思考エンジン1 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパ

ス=D:\hnoda\shogi\eval\tanuki-denryu-tsec-1.iteration=1.GeneratorAdjustNodesLimit=false.l2_regularization_parameter=1.0\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数

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

る=false 定跡の手数を無視する=false 評価値のスケール(%)=100

思考エンジン2 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\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 評価値のスケール(%)=100

対局数2000 先手勝ち799(53.2%) 後手勝ち702(46.8%) 引き分け499

engine1

勝ち728(48.5% R-7.8 +-15.2) 先手勝ち387(25.8%) 後手勝ち341(22.7%)

宣言勝ち49 先手宣言勝ち26 後手宣言勝ち23 先手引き分け248 後手引き分け251

engine2

勝ち773(51.5%) 先手勝ち412(27.4%) 後手勝ち361(24.1%)

宣言勝ち60 先手宣言勝ち29 後手宣言勝ち31 先手引き分け251 後手引き分け248

728,499,773

対局数=2000 同時対局数=64 ハッシュサイズ=768 開始手数=24 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表

示更新間隔(ms)=3600000

思考エンジン1 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパ

ス=D:\hnoda\shogi\eval\tanuki-denryu-tsec-1.iteration=1.GeneratorAdjustNodesLimit=false.l2_regularization_parameter=0.1\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数

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

る=false 定跡の手数を無視する=false 評価値のスケール(%)=100

思考エンジン2 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\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 評価値のスケール(%)=100

対局数2000 先手勝ち875(53.2%) 後手勝ち769(46.8%) 引き分け356

engine1

勝ち621(37.8% R-70.8 +-15.6) 先手勝ち324(19.7%) 後手勝ち297(18.1%)

宣言勝ち45 先手宣言勝ち23 後手宣言勝ち22 先手引き分け153 後手引き分け203

engine2

勝ち1023(62.2%) 先手勝ち551(33.5%) 後手勝ち472(28.7%)

宣言勝ち22 先手宣言勝ち10 後手宣言勝ち12 先手引き分け203 後手引き分け153

621,356,1023

対局数=2000 同時対局数=64 ハッシュサイズ=768 開始手数=24 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表

示更新間隔(ms)=3600000

思考エンジン1 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパ

ス=D:\hnoda\shogi\eval\tanuki-denryu-tsec-1.iteration=1.GeneratorAdjustNodesLimit=false.l2_regularization_parameter=0.01\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード

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

する=false 定跡の手数を無視する=false 評価値のスケール(%)=100

思考エンジン2 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\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 評価値のスケール(%)=100

対局数2000 先手勝ち872(54.1%) 後手勝ち740(45.9%) 引き分け388

engine1

勝ち637(39.5% R-59.3 +-15.5) 先手勝ち342(21.2%) 後手勝ち295(18.3%)

宣言勝ち59 先手宣言勝ち29 後手宣言勝ち30 先手引き分け173 後手引き分け215

engine2

勝ち975(60.5%) 先手勝ち530(32.9%) 後手勝ち445(27.6%)

宣言勝ち29 先手宣言勝ち14 後手宣言勝ち15 先手引き分け215 後手引き分け173

637,388,975

対局数=2000 同時対局数=64 ハッシュサイズ=768 開始手数=24 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表

示更新間隔(ms)=3600000

思考エンジン1 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパ

ス=D:\hnoda\shogi\eval\tanuki-denryu-tsec-1.iteration=1.GeneratorAdjustNodesLimit=false.l2_regularization_parameter=0.001\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード

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

する=false 定跡の手数を無視する=false 評価値のスケール(%)=100

思考エンジン2 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\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 評価値のスケール(%)=100

対局数2000 先手勝ち895(54.6%) 後手勝ち744(45.4%) 引き分け361

engine1

勝ち694(42.3% R-43.8 +-15.4) 先手勝ち389(23.7%) 後手勝ち305(18.6%)

宣言勝ち82 先手宣言勝ち42 後手宣言勝ち40 先手引き分け187 後手引き分け174

engine2

勝ち945(57.7%) 先手勝ち506(30.9%) 後手勝ち439(26.8%)

宣言勝ち30 先手宣言勝ち10 後手宣言勝ち20 先手引き分け174 後手引き分け187

694,361,945

対局数=2000 同時対局数=64 ハッシュサイズ=768 開始手数=24 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表

示更新間隔(ms)=3600000

思考エンジン1 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパ

ス=D:\hnoda\shogi\eval\tanuki-denryu-tsec-1.iteration=1.GeneratorAdjustNodesLimit=false.l2_regularization_parameter=0.0001\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノー

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

慮する=false 定跡の手数を無視する=false 評価値のスケール(%)=100

思考エンジン2 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\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 評価値のスケール(%)=100

対局数2000 先手勝ち884(53.0%) 後手勝ち785(47.0%) 引き分け331

engine1

勝ち682(40.9% R-53.4 +-15.4) 先手勝ち355(21.3%) 後手勝ち327(19.6%)

宣言勝ち76 先手宣言勝ち34 後手宣言勝ち42 先手引き分け146 後手引き分け185

engine2

勝ち987(59.1%) 先手勝ち529(31.7%) 後手勝ち458(27.4%)

宣言勝ち24 先手宣言勝ち13 後手宣言勝ち11 先手引き分け185 後手引き分け146

682,331,987

対局数=2000 同時対局数=64 ハッシュサイズ=768 開始手数=24 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表

示更新間隔(ms)=3600000

思考エンジン1 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパ

ス=D:\hnoda\shogi\eval\tanuki-denryu-tsec-1.iteration=1.GeneratorAdjustNodesLimit=false.l2_regularization_parameter=0.00001\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノー

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

慮する=false 定跡の手数を無視する=false 評価値のスケール(%)=100

思考エンジン2 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\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 評価値のスケール(%)=100

対局数2000 先手勝ち880(52.9%) 後手勝ち785(47.1%) 引き分け335

engine1

勝ち657(39.5% R-61.6 +-15.5) 先手勝ち347(20.8%) 後手勝ち310(18.6%)

宣言勝ち87 先手宣言勝ち46 後手宣言勝ち41 先手引き分け154 後手引き分け181

engine2

勝ち1008(60.5%) 先手勝ち533(32.0%) 後手勝ち475(28.5%)

宣言勝ち27 先手宣言勝ち9 後手宣言勝ち18 先手引き分け181 後手引き分け154

657,335,1008

対局数=2000 同時対局数=64 ハッシュサイズ=768 開始手数=24 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表

示更新間隔(ms)=3600000

思考エンジン1 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパ

ス=D:\hnoda\shogi\eval\tanuki-denryu-tsec-1.iteration=1.GeneratorAdjustNodesLimit=false.l2_regularization_parameter=0.000001\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノ

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

考慮する=false 定跡の手数を無視する=false 評価値のスケール(%)=100

思考エンジン2 name=YaneuraOu NNUE 6.03 64ZEN2 EVAL_LEARN author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-06-29\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 評価値のスケール(%)=100

対局数2000 先手勝ち874(52.9%) 後手勝ち777(47.1%) 引き分け349

engine1

勝ち693(42.0% R-46.3 +-15.4) 先手勝ち362(21.9%) 後手勝ち331(20.0%)

宣言勝ち86 先手宣言勝ち41 後手宣言勝ち45 先手引き分け159 後手引き分け190

engine2

勝ち958(58.0%) 先手勝ち512(31.0%) 後手勝ち446(27.0%)

宣言勝ち31 先手宣言勝ち16 後手宣言勝ち15 先手引き分け190 後手引き分け159

693,349,958

まとめ

L2 正規化パラメーターを調整しながら機械学習を行い、自己対局によりレーティングを測定した。

測定の結果、いずれも元の評価関数に負け越した。 L2 正規化パラメーターを 1.0 とした場合のみ、勝率が 50% に近づいた。

元の評価関数に負け越したデータを元に判断するのは不適切だと考えられる。また、 L2 正規化パラメーターを 1.0 とした場合に勝率が 50% に近づいたのは、まったくロスが下がらず、元の評価関数が出力されたためだと思われる。レーティングが向上する実験条件を使い、再度比較する必要があると思われる。