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

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

ちょっとだけ進展

というか、問題点が見えてきました。

まず、以下の条件で学習させました。

  • 先手は1手読み。方策はε-greedyでε*1は0.01。
  • 後手は5二飛と8二飛を繰り返し、王手されたら投了。
  • 先手と後手の評価関数は別のインスタンスとする*2
  • 報酬は勝ったら1、負けたら-1、一手指して決着がつかなかったら-0.01。

んで、700局ほど学習後の典型的な終了局面は以下の通り。(^付きは先手の駒、v付きは後手の駒。)

21:04:54 @ null::main() > +---+---+---+---+---+---+---+---+---+
21:04:54 @ null::main() > |v香|v桂|v銀|v金|v王|v金|v銀|v桂|v香|
21:04:54 @ null::main() > +---+---+---+---+---+---+---+---+---+
21:04:54 @ null::main() > |___|___|___|___|v飛|___|___|v角|___|
21:04:54 @ null::main() > +---+---+---+---+---+---+---+---+---+
21:04:54 @ null::main() > |v歩|v歩|v歩|v歩|v歩|v歩|^馬|v歩|v歩|
21:04:54 @ null::main() > +---+---+---+---+---+---+---+---+---+
21:04:54 @ null::main() > |___|___|___|___|___|___|___|___|___|
21:04:54 @ null::main() > +---+---+---+---+---+---+---+---+---+
21:04:54 @ null::main() > |___|___|___|___|___|___|___|___|___|
21:04:54 @ null::main() > +---+---+---+---+---+---+---+---+---+
21:04:54 @ null::main() > |___|^歩|^歩|___|___|___|___|^歩|___|
21:04:54 @ null::main() > +---+---+---+---+---+---+---+---+---+
21:04:54 @ null::main() > |^歩|___|___|^歩|^歩|^歩|^歩|___|^歩|
21:04:54 @ null::main() > +---+---+---+---+---+---+---+---+---+
21:04:54 @ null::main() > |___|___|___|___|___|___|___|^飛|___|
21:04:54 @ null::main() > +---+---+---+---+---+---+---+---+---+
21:04:54 @ null::main() > |^香|^桂|^銀|^金|^王|^金|^銀|^桂|^香|
21:04:54 @ null::main() > +---+---+---+---+---+---+---+---+---+
21:04:54 @ null::main() > 歩,桂,香,銀,金,角,飛
21:04:54 @ null::main() >  1, 0, 0, 0, 0, 0, 0,
21:04:54 @ null::main() >  0, 0, 0, 0, 0, 0, 0,
21:04:54 @ null::main() > 手番 : 後手
21:04:54 @ null::main() > 手数 : 7

こういう終了図が何百局も続きます。

結局、勝つ為に必要なのは3三に馬がいる事なのか2六に歩がいる事なのか、それとも他の特徴なのかが理解出来ていない、というのが問題点。

んで、そうなる原因は、探査(色々な行動を試して、良い結果になるか悪い結果になるかを調べる)のが上手く行ってないのだと予測。

という訳でεをもうちょっと大きくしてリトライしてみます。

*1:ランダムに行動する確率

*2:パラメータは独立している。