接待水匠にインスパイアされて接待dlshogiを作ってみた。
何番煎じだというネタですが、接待将棋プログラムが一応動くようになりました!https://t.co/BLvfTF2rOe
— たややん@水匠(将棋AI) (@tayayan_ts) 2021年10月2日
MultiPVで思考し、手番から見た評価値が100以上の指し手のうち、最も100に近いものを選択する単純な仕組み。
皆様とも指したいですね…誰か犠牲者、もとい対局相手になっていただけませんか!
仕組み
MultiPVを使うのではなく、モンテカルロ木探索(PUCT)で、勝率の期待値が接待係数に近づくように探索を行う。
接待係数(USIオプションSettai)は、1から99の整数で、50の場合に互角になるように指して、0に近いと負けるように指す。100に近いと最善手に近づく。
利点
MultiPVは探索した中で上位の手から選ぶが、この方法では接待係数に近づくように探索するので、接待の精度が高い。
また、方策の確率が高い手を優先するため、あからさまな悪手は指しにくい。
その他
- 温度パラメータ(Softmax_Temperature)は、デフォルト500で、なるだけ方策の影響を小さくしている。
- モデルの.iniファイルがある場合、温度パラメータはデフォルト値を上書きしないようにしている。
- 詰み探索は、デフォルト5手にして、短手数の詰みについては、わざと見逃して負けるようなことはしないようにする。
テスト
電竜戦エキシビジョンバージョンのモデルを使って、GPSFishとLesserkaiを相手に対局させた。
GPSFish
GPSFishとの対局では、接待係数51で、良い感じに負けた。
Lesserkai
Lesserkaiとの対局では、接待係数30で、良い感じに負けた。
ダウンロード
以下のURLからダウンロードできる。
https://gist.github.com/TadaoYamaoka/b9953b05df61b32bcea75eee18c94d4c/raw/a9c3c14985981ebe26d7d2173c442b09f0b77c23/settai_dlshogi.zip
TensorRT版とONNX版の実行可能ファイルが含まれる。
モデルは、別途Releaseから入手する。
ソースコード
feature/settaiブランチにプッシュした。
まとめ
接待で、モンテカルロ木探索の特性を活かせるかもと思いついたので、思いつきでを作ってみた。
コードの修正はほとんどないので、ほとんど手間はかかっていない。
自分で対局してみましたが、接待係数50だと、最後に負けました・・・orz