Python
DeepLearning
データ分析
ディープラーニング

【将棋AI】「将棋AIで学ぶディープラーニング」を読む♪~対戦してみる

将棋AIで学ぶディープラーニング
第六夜は、将棋所をダウンロードして昨夜のtrain_policyで学習したパラメータを使って対戦するところまで記述します。

説明したいこと

(1)将棋所のダウンロード
(2)とにかく対戦してみる
(3)対戦する

(1)将棋所のダウンロード

【参考】
ホーム>ダウンロード
ホーム>将棋所の使い方
参考からShogidokoro.zipをダウンロードします。
やり方は将棋所の使い方のDownloadを見てください。
普通にダウンロードして、解凍すれば以下のフォルダーが出てきます。
shogidokoro.jpg
ここでShogidokoro.exeをダブルクリックすると以下のようなアプリが起動します。
shougidokoro_kido.jpg
上記ではエンジン管理を選ぶところですが、ここから作成した自前のエンジンを登録していきます。
ちなみに、当初はLesserkai1.4.2というアプリが登録できます。
登録すると自分自身とも対戦できるので対局を選んで対戦させるのもなれるという意味でいいと思います。

(2)とにかく対戦してみる

実は昨夜のTrain_policy.pyで学習したパラメータを使って対戦しようとしてもすぐにはできません。そこで将棋所に登録するための作業がありますが、ここでは山岡さんが作成したアプリの構成をダウンロードしてそれを利用することとします。
※内容の説明は次回以降で実施する予定です
まずは、ディレクトリ構成は以下のようにしましょう。

PJのディレクトリ
| setup.py
| ...
| kiflist_train_1000.txt
| kiflist_test_100.txt
├── model
|     model_policy
|── pydlshogi
|   |common.py
|   |features.py
|   |read_kifu.py
|   └── network   
|   |      policy.py
|   └── usi   
|   |      usi.py
|   |      usi_policy_player_.py
|   └── player   
|          base_player.py
|          policy_player.py
└── utils            
|      filter_csa.py
|      ...
└── bat            
      policy_player.bat

もちろん、以下のサイトからそれぞれダウンロードして保存してください。
TadaoYamaoka/python-dlshogi
ここで一つだけ注意です。
policy_player.pyの以下のディレクトリはたぶん異なるので自分の環境に合わせて変更してください。

policy_player.py
class PolicyPlayer(BasePlayer):
    def __init__(self):
        super().__init__()
        #self.modelfile = r'H:\src\python-dlshogi\model\model_policy'
        self.modelfile = r'C:\Users\tosio\fastText\path\to\corpus\AB\KerasExample\dlshogi\model\model_policy'

        self.model = None

(3)対戦する

ここまでの流れの通り、ファイル名等を同じ名称でやってくるとエンジン登録から対戦までできると思います。
一応、エンジン登録のやり方は上記のエンジン管理を選んで
engineReg.jpg
で登録されます。

いよいよ対戦です。ウワンと対戦してみようと思います。

taisen.jpg
あれ??負けてしまいました。
muauanvspolicy.jpg
まだまだ方策ネットワークだけなんだけど、。。
そして、この方策ネットワークは以下のように比較的強くLesserkai 1.4.2となかなかいい勝負をして、以下のように勝つこともあります。
※この先が楽しみ
policy_win.jpg

まとめ

・将棋所をダウンロードしてインストールする
・自分のエンジンを将棋所で使えるように環境整備する
・実際戦ってみると方策ネットワークが意外に強い
・将棋AIの指し手が思っていたより早い

・この辺り将棋AIを動かす環境及びアプリ作成が難易度高いので先送りにした