ニューラルネットワークで囲碁の終局を判定する.終局したかどうかではなくて,終局状態でどこが自分の地かどうかを判定する.
これだけなら,わざわざニューラルネットワークを使わずに,手続き的にプログラミングしたほうがいい.しかし,これが出来ないとニューラルネットワークで大局を判断なんて無理なので,最初のステップとして.
まだ,途上段階だが,経過を.
教師信号は前回の方法で,GnuGOを用いて終局からさらに局面を進めて得る.
入力信号の例(Xが黒石,Oが白石):
+---------------------------------------+ | . . . O . O X . X O O . . . . . O . . | | O O . X O O X X . X O O X . O O O . O | | X O O O . O O X X X O . O O . O X O O | | X X O O O X X X . X O . O . O X X O . | | X O O O . O O X . X X O . O X X O O O | | X X X O O O O O X X O O O X . X X O O | | O X X X O X X X X O O X X X . X O X O | | . X O O O O X X O O X O O X . . O X X | | O X X O O X X O O . X O X X . . O X . | | . X X X X . X X O O O O O O X X X . X | | . X O O X . . O X O X O O O X O X X . | | X X X O X X . X X X X X X O X O O X O | | O X O O X X X O X X . X O O O O O O X | | O O O O O O O O X O X X X X O O X X X | | . . O . O O X O X O O O X X X O O X . | | . . . O X X X O X X O O X X O O X . X | | . . O O O X X X X . X O O O O X X X . | | . O . O X X O O . X . X O O X X X . . | | O . O X X . . . . X . X O O O X . . . | +---------------------------------------+
出力の目標値が以下のような感じ.黒地のみ表示している.黒字以外は白地である.
+---------------------------------------+ | . . . . . . X X X . . . . . . . . . . | | . . . . . . X X X X . . . . . . . . . | | X . . . . . . X X X . . . . . . X . . | | X X . . . X X X X X . . . . . X X . . | | X . . . . . . X X X X . . . X X . . . | | X X X . . . . . X X . . . X X X X . . | | X X X X . X X X X . . X X X X X X X . | | X X . . . . X X . . . . . X X X X X X | | X X X . . X X . . . . . X X X X X X X | | X X X X X X X X . . . . . . X X X X X | | X X . . X X X X X . X . . . X . X X X | | X X X . X X X X X X X X X . X . . X X | | . X . . X X X . X X X X . . . . . . X | | . . . . . . . . X . X X X X . . X X X | | . . . . . . X . X . . . X X X . . X X | | . . . . X X X . X X . . X X . . X X X | | . . . . . X X X X X X . . . . X X X X | | . . . . X X X X X X X X . . X X X X X | | . . . X X X X X X X X X . . . X X X X | +---------------------------------------+
こういうサンプルを500集めて学習させた結果の出力.
+---------------------------------------+ | . . . . . . X X X X . . . . . . . . . | | . . . . . . X X X X . . . . . . . . . | | X . . . . . . X . X . . . . . . X . . | | X X . . . X X X X X . . . . . X X . . | | X . . . . . . X X X . . X . . X . X . | | X X X . . . . . X X . . . X X X X . . | | X X X X . X X . X . . . . X X X X X X | | X X . X . . X X . . . . X . X X X X X | | X X X X . X X . . . . . . X X X X X X | | X X X X X X X X . . . . . . X X X X X | | X X . . X X X X X . X . . . X . X X X | | X X X X X X X X X X X X X . X . . X X | | . X . X X X X X X X X X . . . . . . X | | . . . X . . . . X . X X X X . . X X X | | . . X . . . X . X . . . X X X . . X X | | . . . . X X X X X X . . . X . . X X X | | . . . . . X X X X X X . . . . X X X X | | X . . . X X X X X X X X . . X X X X X | | . . . X X X X X X X X X . . . X X X X | +---------------------------------------+
統計値を確認する必要あるが傾向はいい感じだ.計算が非常に重いので収束させきれていないが,それでも良さ気に見える.
ただ,ポツンの一石だけの地のような,ルール上絶対ありえない点が存在しているのが気になる. どうしても消せないならもう一レイヤ重ねるしかないか?学習させなくても手入力で対応できる処理だ.
しかし,学習用のデータに含めなかったものに対しては,上が目標で下が結果だが,あんまりうまくいっていないように見える.
+---------------------------------------+ | . . . . . . . . . . X X X X X X X X X | | . . . . . . . . . . . X . X . . X X X | | . . X X . X . . . . . X . . . X X X X | | . X X X X X . . X . . X X . . . X X X | | X X X X . . . X X X X X . . . . . X . | | X X X X . X X X X X . X . . . . . X . | | X X X X X X X X X X . . . . . . . . . | | X X X X X X X . X X . . . . . . . . . | | X X X X . X X . X . . . . . . . . . . | | X X X . . . . . . . . . . . . . . . . | | X X X . X . . . . . . . . . . . . . . | | X X X X X X . X X X X . . . . . . . . | | X X X X X . . X X X X X X X . . . . . | | X X X X X X X X X X X X X X X . . . . | | X X X X X X X X X X X X X X . . . . . | | X X X X X X X X X X X X X X X . . . . | | X X X X X X X X X X . X . X . . . . . | | X X X X X X X X X X . . . . . . . . . | | X X X X X X X X X . . . . . . . . . . | +---------------------------------------+ +---------------------------------------+ | X . . . X . X . . . . X X X X X X X X | | . X X . . . . . . . X X X X . X X X X | | . . X X . . . . . . X X X X X X X X X | | . X X X X X . . X X . X X . . . X X X | | X X X X . . X X X X . X . . . . . X X | | X X X X . X X X X X X X X X . X . X X | | X . X X . X X X . X X X . . . . . X . | | . . X X . X X X X X X . X . . . . . . | | . X X . . . . . . X X . . . . X . . . | | . . X X . . . . . . . . . . . . X X . | | X X X X X . X . . . . . X . . . . . . | | . . . X X . . X X X X X . . X X . X X | | X . . X X . . X X X X X X X X . . X X | | . . . X X . X X X X X . X X . . . . X | | . . . . . X . X X X X X X X . . . . . | | . . . X X X X X . . X X . X X . . . X | | X X X X X X X X . . . X . . . . . . . | | X X X X X X X X . . . . . . . . . . . | | X X X X X X X X X . . . . . . . . . . | +---------------------------------------+
過学習の傾向にあるのかもしらない.学習用データのサンプル数を増やしてみる.計算重すぎて終わらない. やっぱし,PyBrainを使うのはいまいちかもな.ある程度,やり方のめどがついたらもっと高速なフレームワークを採用したい.