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% に近づいたのは、まったくロスが下がらず、元の評価関数が出力されたためだと思われる。レーティングが向上する実験条件を使い、再度比較する必要があると思われる。