オセロ開発のシェアウェア

http://hp.vector.co.jp/authors/VA015468/platina/index.html

http://www.es-cube.net/reversi/index.html

「いるかのページ」さんのオセロの作り方の解説とソースがシェアウェアで公開されてるんですが、
自己対戦の学習も対応されてるということでベクターで買ってみました(980円)
序盤をランダムにして、そこから終盤まで進めて、終盤読み切れるところまで進むと「どっちが勝ったか判る」ので、
そこから遡って、負けた方の局面は「悪い」、勝った方は「良い」として、
評価関数を学習できるようです。
初期状態では、膨大なパターンの線形結合として評価関数は実現されてるんですが、
自己対戦を繰り返すうちに、終結から遡って評価関数が学習するので、
10万局ぐらい戦わすと充分強くなる用です。


なんか美しくないですか? 自己対戦するだけで自分勝手に強くなるんですよ。
プロの棋譜も不要。


解説ページで、「モンテカルロ法による強化学習」と書かれてましたが、
最後のどっちが勝ったか?の教師で、評価関数を学習しているかららしい。
こういうのも、モンテカルロ法って言うんですかね?(確かに評価関数無しに評価関数を学習してるけど)
たしか激指も、ゲームの勝ち負けから遡って学習してませんでしたっけ?



あと、このオセロプログラムは、MPCを採用してます。
multi prob cut。
以前、GPS将棋チームの論文を参考に取り組んでみた記憶がありますが、
5手の探索は、3手の探索に相関があるという仮定の下に、探索を減らす手法。
ここでは、実際にMPCを使わずに探索した場合に、3手と5手の探索結果にどれだけ誤差があるかをしらべて、
その結果を利用してMPCしている。
このへんもなかなか面白い。


将棋のmpcはこちらあたりも参考になります
http://www-nkn.ics.nitech.ac.jp/paper/H17-B/oso.pdf
(局面によって誤差の幅が違うので、パラメーターどうやって決めるんだよ。って結論に見える)