TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

接待dlshogi

接待水匠にインスパイアされて接待dlshogiを作ってみた。

仕組み

MultiPVを使うのではなく、モンテカルロ木探索(PUCT)で、勝率の期待値が接待係数に近づくように探索を行う。

接待係数(USIオプションSettai)は、1から99の整数で、50の場合に互角になるように指して、0に近いと負けるように指す。100に近いと最善手に近づく。

利点

MultiPVは探索した中で上位の手から選ぶが、この方法では接待係数に近づくように探索するので、接待の精度が高い。
また、方策の確率が高い手を優先するため、あからさまな悪手は指しにくい。

その他
  • 温度パラメータ(Softmax_Temperature)は、デフォルト500で、なるだけ方策の影響を小さくしている。
  • モデルの.iniファイルがある場合、温度パラメータはデフォルト値を上書きしないようにしている。
  • 詰み探索は、デフォルト5手にして、短手数の詰みについては、わざと見逃して負けるようなことはしないようにする。

テスト

電竜戦エキシビジョンバージョンのモデルを使って、GPSFishとLesserkaiを相手に対局させた。

GPSFish

GPSFishとの対局では、接待係数51で、良い感じに負けた。
f:id:TadaoYamaoka:20211011225500p:plain

Lesserkai

Lesserkaiとの対局では、接待係数30で、良い感じに負けた。
f:id:TadaoYamaoka:20211011225135p:plain

ダウンロード

以下のURLからダウンロードできる。
https://gist.github.com/TadaoYamaoka/b9953b05df61b32bcea75eee18c94d4c/raw/a9c3c14985981ebe26d7d2173c442b09f0b77c23/settai_dlshogi.zip

TensorRT版とONNX版の実行可能ファイルが含まれる。
モデルは、別途Releaseから入手する。

ソースコード

feature/settaiブランチにプッシュした。

まとめ

接待で、モンテカルロ木探索の特性を活かせるかもと思いついたので、思いつきでを作ってみた。
コードの修正はほとんどないので、ほとんど手間はかかっていない。

自分で対局してみましたが、接待係数50だと、最後に負けました・・・orz