GA将?開発日記~原点回帰~

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

VS ssp(5五将棋モード・ハンディキャップマッチ)で最高勝率を更新!

 Reflection-Play(反省会モード)を実装して76万局経過後のパラメータ。787勝108敗で勝率87.9%。あっさり最高記録を更新してしまいました。

 この調子だと、そのうち勝率が90%超えそうなんで、ハンデの与え方を変えないといけないかも。GA将の方は全幅3手+静止探索に限定するとかでも良いかな?

「反省会モード(仮称)」のアルゴリズムについて

 昨夜思い付いたアイデアで、ひょっとしたら使えるかも? という感じのがあるので、メモがてら書いてみます。

 まず、前提として「自己対局での強化学習を行う」事とします。

 学習開始直後は、初期局面から自己対局&パラメータ修正を繰り返しつつ、「優勢だと判断していたのに、結果的に負けてしまった」局面をバッファに溜めて行きます。

 その後、バッファにある程度の局面が溜まったら自己対局のモードを切り替えて、「一定割合で初期局面から対局開始、それ以外はバッファからランダムに取得した局面から対局開始」とします。

 こうすると何が嬉しいかと言うと、「過去に形勢判断を誤った局面」を集中的に学習可能になるので、評価関数の精度が向上すると考えています。

 あと、「劣勢だと正しく判断出来る様になったら、バッファから削除する」という処理も必要かもしれません。

 UEC杯まで後1ヶ月有りませんが、今日明日にでも実装してみて、強くなったら実戦で使う事にします。

グッバイItanium!

pc.watch.impress.co.jp

 EPICの設計思想は割と好きだったんですが、ついに生産終了ですか。

 TransmetaCrusoe/Efficeonも大成功とは言えなかったみたいですし、汎用プロセッサでVLIWってのはちと厳しい感じなんでしょうかね。

 私がコンピュータ将棋専用のASICを作れる程の大金持ちだったら、VLIW+SMTで小さめなコアを多数並べて設計してみたいですねぇ。実際にそれで性能が出るかは不明ですが、「自作CPU」っていうロマンは捨てきれません。

千日手回避漏れの話(5五将棋モード)

 連続対局用サーバを自作したらGA将の千日手回避漏れが検出出来る様になったんですが、チラホラと回避漏れが有ります。

 んで、原因の局面を調べてみたんですが、意外と難しそうです。

 まず、GA将?の探索ルーチンにはAspiration Searchと置換表を実装してあります。

 でもって「ある局面*1で3三金と指すと、次に相手が2四馬と指すと千日手になり、GA将?の負けが確定する」という局面が有りました。

 十分な時間探索出来れば「3三金で負けが確定する」と読めるんですが、現在の連続対局のレギュレーションではGA将?の思考時間は0.17秒になっているので、そこまで読み切れません。

 具体的にどうなるかと言うと、

  1. まず、置換表にある「3三金、1五馬…」というPVを参照して、合議サーバに返す。
  2. イテレーションが回ると置換表の評価値を参照せずにきちんと読む様になる。
  3. Fail-Lowする。(この時は最善手が信用出来ないので、クライアントから合議サーバには指し手は返さない。)
  4. 何度もFail-Lowして、そのまま時間切れ。(この時点での合議サーバに返した最善手は3三金。)

という感じです。

 根本的に解決するなら、初回の置換表参照時に「3三金を指した後に相手の指し手を全て生成して、その中に千日手になる指し手が有ればPVを参照しない」という処理が必要なんですが、もっと他に良い方法は無いもんでしょうかねぇ…

*1:GA将?の先手番

対ssp(5五将棋モード・ハンディキャップマッチ)のベースライン更新

 連続対局用サーバを実装したんで、前にプチ将棋を使って対ssp(ハンディキャップマッチ)の勝率75.6%を記録したパラメータでテスト対局。結果、勝率82.0%になりました。

 千日手や打ち歩詰めの判定を考慮しても勝率が上がり過ぎているのですが、多分USIモードでは標準エラー出力にログを出さない様に修正した*1のが原因だと思われます。

 という訳で、こっからレーティング+50を目指そうとすると勝率86%が目安なんですが、出来るかなぁ…

 最後のお願いが割と良い感じで推移してるんで、そこまで行ってくれるのを期待しときます。

 

*1:連続対局用サーバの実装の手抜きの為

5五将棋用の連続対局サーバを自作

 プチ将棋だと「千日手が先手の負けにならない」「打ち歩詰めが負けにならない」という問題があるので、5五将棋モードで連続対局させる為のサーバを自作。

 現時点ではUSIしか対応していませんが、将来的には他のプロトコルにも対応させて、海外製のソフトとも対局出来る様にしたいですね。

 んで、途中経過をCSVフィアルで出力する様にしたんで、Pythonでチョロっと処理をしてグラフ作成~FTPでGA将のウェブサイトにアップロードする処理も実装。

  http://gasyou.is-mine.net/ura2/

 上記ページから見れます。ちなみに、勝率グラフの緑の破線は過去最高勝率のラインなんで、ちょっとだけ自分に嬉しい仕様。