wcsc32での実装について
wcsc32 第32回世界コンピュータ将棋選手権
基本的な動作
dlshogi(※1)と水匠5(※2)の両エンジンによる楽観合議(※3)が
このソフトの最大の特徴。
Ayane(※4)を使用して両エンジンを呼び出し、
評価値を比較して指し手を決める。
手数によるエンジンの切り替え
( )は、対戦結果を見て都度手動で調整したとき値。
初手から10手目(あるいは20手目)まで水匠5
→定跡(※5~7)を使うことが目的。
80手目(あるいは100手目)までdlshogiと水匠5の楽観合議
→評価値が高い読みを選択する。
詰みを読んだときはその読みを選択し、
両エンジンが詰みを読んだときは短手数の方を選択する。
→この楽観合議が、このソフトのメインの強み。
80手目(あるいは100手目)以降は水匠5
→終盤はdlshogiよりも水匠5の寄せと詰み能力を採用。
手数による思考時間
初手から10手目(あるいは20手目)まで2秒
→できるだけ持ち時間を減らさない目的。
60手目(あるいは40手目)まで5秒(あるいは8秒)
→有利になるように、だが終盤にも時間を残したいので。
60手目(あるいは40手目)以降は、両エンジンの返事が遅かった時間
→各エンジンの最大限の能力を発揮してもらいたいので。
先読みが当たっていたときの思考時間
自分の手番が来てからの思考時間。
実際の思考時間は、上記に相手の思考した時間も加える。
初手から10手目(あるいは20手目)まで1秒
→できるだけ持ち時間を減らさない目的。
10手目(あるいは20手目)以降は5秒
→持ち時間がないときでもこの時間を確保する実装のため、
5秒以上長いと時間切れ負けの可能性があるので。
水匠5に追加で搭載した定跡について
1次予選
振り飛車で戦いたい対戦相手の場合はハニワ定跡(※5)
それ以外のときは100テラショック定跡(※6)
2次予選
1次予選時の定跡に加え、先手番のときはRy-book(※7)
水匠5のデフォルトからの変更点
オプション設定
思考を打ち切る時間的余裕: 1.2秒
→通信タイムラグを考慮して。
メモリの割当: 4GB
スレッド数 1次予選: 6
2次予選: 8
dlshogiのデフォルトからの変更点
学習モデル
選手権までに学習させる時間に余裕がなかったため
時間的なコストパフォーマンスを優先し、下記のモデルとブロック数を選択。
棋力は書籍「強い将棋ソフトの創りかた」(※8)のモデルと比較し
少し劣るレベル(勝率30~40%)で留まった。
モデル: Wide ResNet
活性化関数: Swish
ブロック数: 5
オプティマイザー: RAdam
学習率: 0.004から徐々に下げていき
102エポック目から0.0004固定
教師データ: 書籍「強い将棋ソフトの創りかた」の教師データ
学習回数: 144エポック(2周)
オプション設定
思考を打ち切る時間的余裕: 1.2秒
→通信タイムラグを考慮して。
メモリの割当: 8GB
スレッド数 1次予選: 4
2次予選: 2
DNN_Batch_Size: 32
→この環境で最もnpsが出たので。
Eval_Coef: 285
→水匠5と評価値を合わせるため。
(※1)dlshogi - 山岡忠夫
Release 第2回世界将棋AI電竜戦バージョン
TadaoYamaoka/DeepLearningShogi · GitHub
https://github.com/TadaoYamaoka/DeepLearningShogi/releases/tag/denryu2021
(※2)水匠5 - たややん
Release やねうら王 V7.00 実行ファイル一式 · yaneurao/YaneuraOu · GitHub
https://github.com/yaneurao/YaneuraOu/releases/tag/v7.00
(※3)GougiShogi: 合議将棋 - tttak
GitHub - tttak/GougiShogi: 合議将棋
https://github.com/tttak/GougiShogi
→プログラムは利用していないがアイデアを参考にした。
(※4)Ayane - やねうらお
GitHub - yaneurao/Ayane: python Adaptor to YaneuraOu
https://github.com/yaneurao/Ayane
(※5)ハニワ定跡 - 32hiko
GitHub - 32hiko/HoneyWaffleWCSC27: HoneyWaffle 第27回WCSC版
https://github.com/32hiko/HoneyWaffleWCSC27
(※6)100テラショック定跡 - やねうらお
Release 100テラショック定跡(WCSC29時点 , 700T)
yaneurao/YaneuraOu · GitHub
https://github.com/yaneurao/YaneuraOu/releases/tag/BOOK-700T-Shock
(※7)Ry-book - くらっきぃ
Ry-book - くらっきぃ(Twitter @MysteriousBook)
https://twitter.com/MysteriousBook/status/1521124533515685888?s=20&t=lZMsQeAoJp69aFT2Y0QlQA
(※8)強い将棋ソフトの創りかた
(書籍) 強い将棋ソフトの創りかた | マイナビブックス
著作者名:山岡忠夫、 加納邦彦
https://book.mynavi.jp/ec/products/detail/id=126887