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

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

SVMを用いたヘテロジニアス合議

 今構想中の多数決合議ではヘテロな(それぞれ異なる評価項目・パラメータを持つ)複数の評価関数を用いて、多数決で指し手を決めるって方式で検討中です。

 ただ、合議サーバは多数決型だけではなく楽観型もありますので、もう少し違った方式も出来るのではないかと思います。

 んで、ここからが本題。SVM*1を使って合議サーバを作れないかなというのがこのエントリーの主旨。

 まず、SVMへの入力は「各クライアントの指し手」と「局面の特徴量*2」とし、出力は「何番目のクライアントの指し手を採用するか」とします。

 で、GA将の自己対戦なりfloodgateなりの棋譜を大量に用意し、「局面P1でクライアントC1の指し手を採用したら勝った(正例)」「局面P2でクライアントC1の指し手を採用したら負けた(負例)」って感じでデータを集め、その結果からSVMの学習が出来なかな、と。

 要するに、それぞれの評価関数ごとの得意・不得意な局面を予測出来る様に学習し、対局中の現局面で「一番得意そうなクライアント」の手を選択するってのを実現したいです。

 …んで、ここまで書いてなんですが、こりゃ合議じゃないですね。特定クライアントの手を採用するなら、最初にクライアント(=評価関数)を1つ選択し、そのクライアントだけが探索すれば済む話なんで。

 あ、でも「中盤の一段落した局面で、クライアントC2とC7の指し手が一致したからそれを採用しよう」とかって判断も出来るはずなんで、それなら全クライアントが探索する意味もあるし、やっぱり合議の一種と考えても良いのかな?

 まぁ、クライアント単体での学習が上手く行ってないんで、今から合議の事を考えても無意味ですが、一応検討中と言う事で。

*1:サポートベクターマシン

*2:例えば盤上の駒の配置だとか、持ち駒の種類・数