アピール文書(第二案)
GA将!!!!!!とは
コンセプト
- 最優先目標は「評価関数の精度向上」です。
- その為の手段として「自己対戦による評価関数パラメータの学習」を行います。
- それ以外の部分に関しては、不要なものは実装せず、必要な物も極力
シンプル手抜きなロジックにしています。
評価関数
- 以下の評価項目を用いた線形の評価関数を使用しています。
- 駒割
- 筋ごとの駒の位置評価
- 段ごとの駒の位置評価
- 駒の位置評価
- 二つの駒の相対位置関係
- 二つの駒の絶対位置関係
- 三つの駒の相対位置関係(3x3のタイルに収まる関係のみ)
- パラメータ数は約220万個なので、最近のプログラムにしては少ない方だと思います。
- 後述の通り、自己対戦の経験を元に自動的にパラメータを学習させています。
- 手作業でのパラメータ調整(いわゆる「ドーピング」)はしていません。と言うか、作者にはそこまでの棋力はありません。
探索ルーチン
- 基本方針は「シンプル&手抜き」です。
- 基本構成はαβ全幅(反復深化)+静止探索6手です。
- PVSとかMTD(f)とかAspiration Searchとか、そんな賢いアルゴリズムは使っていません。あくまで、ただのαβです。
- ムーブオーダリングは置換表の手(1手のみ)を先頭にし、それ以降はHistory Heuristicの改良版でソートしています。
- 枝刈りはせず、LMRで大雑把に短縮しています。他には、王手・ReCaptureのみ少し延長しています。
- 全幅探索部の内部ノードでは詰将棋ルーチンを呼ばず、ルートノード(現局面)でのみ呼んでいます。
- 探索速度はCore i7 940(2.93GHz)で1スレッドあたり200kNPS前後です。(上位のプログラムより1桁前後遅いです。)
定跡
- 人間の知識は極力使わない方針なので、定跡は一切使用していません。
- だってほら、何となく「人工知能」っポクてかっこいいかな、と思ったもので。
学習アルゴリズム
学習アルゴリズムの具体例
- 例えば初手7六歩を指して勝った場合は、7六歩の評価値を上げ、他の手の評価値を下げる(7六歩が良い手と判断する)。
- 具体的には、「7六にいる歩の価値」「角の一筋横、二段上に歩がいる場合の価値」等を大きくする。
- 逆に、初手9八香で負けた場合は、9八香の評価値を下げ、その他の手の評価値を上げる(9八香は悪い手と判断する)。
- この時、有望そうな指し手(例えば7六歩や2六歩等)ほど大きく評価値を上昇させる。
強化学習(PGLeaf)を用いる事によるメリット
その他
- 第20回選手権で念願の二次予選進出を果たして以降、はっきり言うと伸び悩んでました。
- 現在の評価関数は「WCSC20バージョンよりやや強い」程度ですが、選手権までにもう一回り強化出来ないかと検討中です。
- 現在の探索ルーチンはシングルスレッド動作なので、選手権用PCのCore i7 3770Kが泣いています。合議か並列探索を実装…出来たらいいなぁ。