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

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

自己対戦学習でも合議を有効活用出来ないか

 ゲーム情報学研究発表会*1の「合議アルゴリズムプレイヤの棋譜を用いた将棋の評価関数の学習」を読んでたらふと思ったんですが、自己対戦学習で合議を使って手を選択するってのはどうかなぁ、と。

 まず、現状の評価項目は下記の通り。

  1. 駒割の評価
  2. 筋・段個別の絶対位置評価
  3. 駒の絶対位置評価
  4. 二駒の相対位置関係*
  5. 飛び利きを遮る駒の評価
  6. 駒の自由度の評価*
  7. 王将の移動可能範囲の評価*

 んで、*を付けた3項目の有効・無効の組み合わせで8通りの評価関数を作り*2、それらを合議クライアントとして使用します。

 問題は学習時で、今は8種の評価関数それぞれが完全に独立して自己対戦・学習を行い、その結果出来たパラメータセットを用いて合議します。ま、要するにバギング*3みたいなものです。

 こっからが本題で、自己対戦時に8種の評価関数で合議を行い、その結果を元に自己対戦棋譜を生成し、パラメータ修正をするってのはどうかなというのが今回のアイデア

 メリットとして、例えば「終盤が得意だけど序盤が苦手なクライアント(評価関数)」と「序盤が得意で終盤苦手なクライアント(評価関数)」がいたとして、それぞれが合議で選ばれた別のクライアントの指し手を見て「序盤(終盤)ではこういう手が有効なんだ」と気付く事が出来ないかな、と考えています。

 もちろんデメリットもあって、全クライアントが同じ棋譜から学習する事になるので、合議に必要なクライアントの多様性が失われる可能性もあります。

 ただ、現状では合議無しの学習が上手く行っていないので、合議を組み込んだ強化学習でちょっとでも強くなってくれれば、って感じです。

 実装のイメージは頭ん中で大体出来てるんで、今週末にでも実装してみようと思います。・・・大きな読み抜けが無ければ、ですが。

*1:http://www.ipsj.or.jp/sig-reports/GI/GI27.html

*2:それ以外の評価項目は常に有効

*3:複数種類の訓練データを元に複数の学習器を生成する手法