Self-Learning in Othello

26 Aug

久しぶりに、オセロのコードを書きました。アイディアはしばらく練ってたんだけど・・・なかなかまとまらず。

あぁみんなFFOテストをやって、探索速度の向上に努めているぞ?Oxelon(by U)の速度がやばいらしい。枝狩りが、世界的に優秀なレベル??Thell(by F)も毎日どんどん速くなっているらしい。あれれれれ?

でも、それより強化学習(教師無し学習)のほうが面白そうなので先にそっちを。

とりあえず、Neothec3もOxelonもThellもvsOthaも・・・そして世界中の多くの強いオセロプログラムはある程度の強さで打たれた棋譜から学習するといういわゆる”Supervised Learning”方式なわけだが、このSupervised方式に改善の余地があることは、この前のオセロ大会で示された。
「学習に利用する棋譜を訂正すると強くなる」
これはすなわち、棋譜の間違いによって、学習に悪影響が及んでいることを意味する。つまり、現在の線形和による評価関数の形のままでもまだ評価精度を向上する余地があるということなわけである。そして、これを改善するには棋譜訂正を行うなり棋譜を生成するなり、とりあえず精度のよい棋譜を得ることが重要なわけである。
しかし、得られる棋譜の精度には限界があるのは明らかで、それを打破するにはSupervised方式を変えるしかない。

また、Uの調査によれば、探索空間中にはまったく評価値の存在しないパターンが全体の5%も存在するらしい。

たぶん、この状況でかなりちゃんと打てているのにはこんな理由があるだろう。それは・・・「常識的な打ち方をした棋譜を用いて学習したソフト同士が、戦うので、結局は重みがないような特殊な場合には陥らない」。

ということは。だ。「世界中のソフトが得意としないけど、じつはよさげなオセロの打ち方というものが存在する余地があるのではないか?」と考えるのが自然な気がする。

そのためには・・・教師無し学習しかない!と思ったわけです。
教師無し学習とはすなわち・・・事前知識を利用しない。

Supervised:
オセロのルールを教わる。ある程度強い人たちの打ち方を教わる。
そして、それらを自分なりに考えて、その強い人たちよりもっと上手に打つようにがんばる。

教師無し学習:
オセロのルールを教わる。必死にいろいろ試してみて、上手に打てるようになるべくがんばる。

まぁ、用は、前提知識を与えないことで、独自の方法を探してもらいたいということです。

TD(n)っぽいような、Q-Learningっぽいようななんかそんな感じのアルゴリズムで学習させてみます。が・・・やっぱり学習時間かかるね。ま、ちょっとずつ改善させていこうと思います。

Leave a Reply

Your email address will not be published.