将棋AIの続き

以前ディープラーニングの習作に将棋のAIを選んで適当に作った話をしていた。いわゆるチュートリアル的な完成度の高い練習問題じゃなく,正解があるようなないような位の実践的な課題として選んでみた。ネット上で参考になりそうなblogも3つ4つある程度で丁度いい。参考にするものが皆無だとチュートリアルからの脱却にはハードルが高い。

うちで考えたNN構造は駒の種類(8種+成り駒6種)を先手後手でそれぞれ。手駒は7種類を先手後手でそれぞれ。9x9のマスを42層作ることに試行錯誤の後に落ち着いた。手駒層でちょっと工夫したのは駒数が増えたときに入力値を増やしていったところと,9x9にベタで入れるのは無駄な気がして盤上の空きマスに駒数を配置した。イメージで的には打ち手可能エリアと数ってことだ。

こうして行った入力層を薄くする努力はさほど有効でないことは中間層の大きさで演算量が大きく変わることを身に染みて理解した。そしてCNNの10層はFull-Connectの2層よりも軽快であった。

 

 

ざっくり,動かした結果自分の手で対戦するのが最も明快な評価であった。かなり面白いと思ったのは以下の点。

0.即指し&再現性100%。まぁ当然ではあるがw

1.駒の動かし方は概ね学習してる(初心者レベルはクリア)

2.序盤と終盤は学習データから除外したのに,初手は角道を開けるなど駒連携を考えた序盤

3.付き合った「歩」などの当たりの駒は即取る。(実際は悪手も多い)

4.王手は回避する。陣形崩壊前に早逃げ等も見られた。(悪手となることも多い)

 

酷いなぁと感じたのは以下の点。

1.遠見の「角」に気づかない。飛車・香と比べ学習しづらいのかも。王手回避ミスすら出る。

2.成り駒は動かせるのに,駒成りの手が指せない。そもそも別の層のデータなので別の駒と認識しているのかな。そして,学習機会は確かに少ない。人間だと嬉しい指し手として覚えるのは早いが。

3.そして恐ろしく弱い。不正な手を指さないように補正をしてfloodgateに放流したが連敗である。負けないとレーティングが付かないと言われるのと同様に一度も勝たないとレーティングが付かない。(どのプレーヤーか分かる人は分かると思う。)

 

世界コンピュータ将棋選手権の影響でfloodgateがインフレをしている中へぼいプレーヤーを投入した件はここでお詫びする。一勝くらいしたかった・・・