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

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

アピール文書(第二案)

GA将!!!!!!とは

  • 私(森岡)がフルスクラッチで作成したコンピュータ将棋ソフトです。
  • 読み方は"がしょう"です。
  • Ver.1ではGA(遺伝的アルゴリズム)を使っていたので、この様な名前になりました。
  • 名前の最後の"!"の数はメジャーバージョンです。現在はVer.6なので6個です。
  • 元々は"!"を増やすつもりはなかったのですが、2回目の選手権参加の際になんとなく増やして以降、年々順調に増えていっています*1
  • 既存の棋譜DBを用いずに、自己対戦の結果から評価関数のパラメータ学習を行うのが最大の特徴です(詳しくは後述)。

コンセプト

  • 最優先目標は「評価関数の精度向上」です。
  • その為の手段として「自己対戦による評価関数パラメータの学習」を行います。
  • それ以外の部分に関しては、不要なものは実装せず、必要な物も極力シンプル手抜きなロジックにしています。

評価関数

  • 以下の評価項目を用いた線形の評価関数を使用しています。
    1. 駒割
    2. 筋ごとの駒の位置評価
    3. 段ごとの駒の位置評価
    4. 駒の位置評価
    5. 二つの駒の相対位置関係
    6. 二つの駒の絶対位置関係
    7. 三つの駒の相対位置関係(3x3のタイルに収まる関係のみ)
  • パラメータ数は約220万個なので、最近のプログラムにしては少ない方だと思います。
  • 後述の通り、自己対戦の経験を元に自動的にパラメータを学習させています。
  • 手作業でのパラメータ調整(いわゆる「ドーピング」)はしていません。と言うか、作者にはそこまでの棋力はありません。

探索ルーチン

  • 基本方針は「シンプル&手抜き」です。
  • 基本構成はαβ全幅(反復深化)+静止探索6手です。
  • PVSとかMTD(f)とかAspiration Searchとか、そんな賢いアルゴリズムは使っていません。あくまで、ただのαβです。
  • ムーブオーダリングは置換表の手(1手のみ)を先頭にし、それ以降はHistory Heuristicの改良版でソートしています。
  • 枝刈りはせず、LMRで大雑把に短縮しています。他には、王手・ReCaptureのみ少し延長しています。
  • 全幅探索部の内部ノードでは詰将棋ルーチンを呼ばず、ルートノード(現局面)でのみ呼んでいます。
  • 探索速度はCore i7 940(2.93GHz)で1スレッドあたり200kNPS前後です。(上位のプログラムより1桁前後遅いです。)

定跡

  • 人間の知識は極力使わない方針なので、定跡は一切使用していません。
  • だってほら、何となく「人工知能」っポクてかっこいいかな、と思ったもので。

学習アルゴリズム

  • GA将!!!!!!では強化学習の一手法であるREINFORCEをαβ探索と組み合わせたアルゴリズム(PGLeaf)を用いて、評価関数パラメータの学習を行なっています。
  • 具体的には、GA将!!!!!!自身を相手に対局を数十万局行い、勝った場合の手は正例(正しい手)・負けた場合の手は負例(間違った手)と判断し、パラメータを調整します。
  • Bonanza Methodとは違い、棋譜DB等の棋士の知識を一切用いずに学習を行なっています。
  • 2013/03/19時点では単独の評価関数の学習のみを行なっていますが、将来的には合議を行う前提で複数種類の評価関数を同時に学習させる事も検討しています。

学習アルゴリズムの具体例

  • 例えば初手7六歩を指して勝った場合は、7六歩の評価値を上げ、他の手の評価値を下げる(7六歩が良い手と判断する)。
    • 具体的には、「7六にいる歩の価値」「角の一筋横、二段上に歩がいる場合の価値」等を大きくする。
  • 逆に、初手9八香で負けた場合は、9八香の評価値を下げ、その他の手の評価値を上げる(9八香は悪い手と判断する)。
    • この時、有望そうな指し手(例えば7六歩や2六歩等)ほど大きく評価値を上昇させる。

強化学習(PGLeaf)を用いる事によるメリット

  • Bonanza Method等の教師あり学習と異なり、棋譜DBを必要としない。
  • そのため、棋譜DBの質に学習結果が左右される事が無くなる。
  • 学習に用いる棋譜を自己対戦で作成するので、必要であればいくらでも棋譜の数を増やせる(ただし、時間/PCの処理能力による制限はある)。

その他

  • 第20回選手権で念願の二次予選進出を果たして以降、はっきり言うと伸び悩んでました。
  • 現在の評価関数は「WCSC20バージョンよりやや強い」程度ですが、選手権までにもう一回り強化出来ないかと検討中です。
  • 現在の探索ルーチンはシングルスレッド動作なので、選手権用PCのCore i7 3770Kが泣いています。合議か並列探索を実装…出来たらいいなぁ。

*1:ちなみにアニメ「けいおん!!」とは無関係です。