GA将?開発日記~王理のその先へ~

ネタ勢最強を目指して絶賛開発中。

PGLeaf Vier再実装中

 まず、学習方策と挙動方策を分けて、学習方策の方は重点サンプリングを用いてOff-Policyで学習する様にした。

 挙動方策の報酬は「基本報酬は勝敗に応じて+1/-1/0」「サブ報酬として対局中の予測勝率と実際の勝敗に応じたボーナス」としてみた。

 サブ報酬の方は、予測勝率と勝敗の差が大きいほど大きな値を与える様にしたので、逆転勝ち・負けの場合はサブ報酬が大きくなるはず。

 んで、例によって三目並べモードで実験してみたら、正しく収束する時は数秒で済むけど、そうでない場合は1分かけてもNG。

 困った…

探査自体を強化学習問題として解く論文(多分)

強化学習による探索行動の学習

 強化学習における探査*1を、ε-GreedyやSoftmaxの様な乱数を用いる手法ではなく、過去の経験・知識をもとに実現した論文(だと思う)。

 論文ではグリッドワールドや迷路を題材にし、意図した通りの結果が実験的に得られたと書かれている。

 論文の手法をそのままGA将?に適用するのは難しそうだが、考え方自体は非常に面白いので、なんとかして真似てみようと思う。

*1:論文では「探索」と記載されているが、αβ探索との混同を避ける為、本記事では「探査」で統一する

PGLeaf Vierはひとまず白紙撤回

 Replay Buffer使うとなんか学習が不安定になるし、私は無理してReplay Buffer使いたい訳ではないので、プラン再考中。

 んで、今後どうするかなぁ…

 とりあえず「自己対局時のランダム性が不足しているらしい」というのは分かってるんで、そこを何とかしないといけないんですが、単純に温度上げるとそれはそれで悪影響出てくるし…

 やっぱ、REINFORCEベースじゃなくて、報酬の予測値を学習する関数近似器を導入するのが手っ取り早い?

PGLeaf Vier開発開始

medium.com

 Experience Replayを使いたかったので、上記のサイトを参考に実装。

 現時点での構成は「REINFORCEベースのPGLeaf+Experience Replay+重点サンプリング」ですが、最終的にはもっと色々拡張する予定。

強化学習 (機械学習プロフェッショナルシリーズ)

強化学習 (機械学習プロフェッショナルシリーズ)

 んで、今日買ってきたMLPシリーズの「強化学習」に、関数近似を用いた方策勾配法の初見の手法が載っていたので、次はそれを実装する予定。

 現在は三目並べモードでデータ収集中なんで、それが終わってから(多分2時間後)改良しますかね。

 …あ、その前に不要なコードとかの整頓しとかないと、スパゲッティコードになっちゃう。

Learning Efficient and Effective Exploration Policies with Counterfactual Meta Policy

 https://arxiv.org/pdf/1905.11583.pdf

 とりあえず読んで、応用出来そうならやってみます。

5五将棋用連続対局サーバの機能追加、ほぼ完了

 えー、まず以前の記事の訂正から。

 「Winboard」がShokidoki/Limaの使用しているプロトコル名だと思ってましたが、正式には「xboard」みたいです。もともとUNIX用のXBoardというチェスのGUIがあって、それが使用していたプロトコルが「xboard」。で、XBoardのWindows移植版がWinBoardという名称みたいですね。

 んで、そのxboardのエンジンを連続対局サーバから呼び出すのは、多分出来る様になりました。エンジンが異常な挙動をする*1事は無くなりましたし、GA将と連続対局させてもまぁ妥当な勝率になってます。

 現時点では、Fairy-Stockfish/Shokidoki/Limaをスパーリング相手にしています。エンジンのダウンロードは下記サイトから行いました。(Fairy-Stockfishのみ、少しソース修正して自前でビルド。)

github.com
hgm.nubati.net
sites.google.com

 Limaに関しては、おそらくUEC杯版とほぼ同じバージョンが公開されていると思われますので、まぁこっちは大丈夫でしょう。

 ただ、Shokidokiですが、公開版には定跡が入っていないのか、古い版なのかは分かりませんが、かなり弱いです。第11回UEC杯版とほぼ同じ棋力のGA将?が8割がた勝っちゃってます。

 それと、Shokidoki/Limaはスレッド数を指定しても無視してシングルスレッド探索になっているっポイんですが、これに関しては原因不明。現在調査中です。

 まぁ、スパーリング相手としてはシングルスレッドでも十分強いんで、このままでも良いかな、とは思っていますが。

*1:Illegal Moveを返すとか、反応しなくなるとか

VS Fairy-Stockfish勝率

 Ryzen 5 2400G搭載マシンでGA将と対局させた結果、勝率はこっちから見て15%前後でした。

 という事は、UEC杯で2局指して少なくとも1局勝つ確率は28%前後あった訳で…

 その28%を本番で引いてりゃUEC杯初優勝だったのに……

 まぁ、終わった事なんでそれはこっちに置いといて、来年に向けて開発再開しますかね。