オセロの学習 - 二乗平均誤差
参考文献
http://fujitake.dip.jp/sealsoft/thell/bibliography.html
次に、ロジステロという評価関数を学習するオセロについて考えると、
ロジステロは、局面のパターンをあらかじめもっています。
次に、評価関数をその局面からの何目差で勝つか?を予測する関数と定義しますと、
棋譜から分かる「正確な何目差で勝つかの数値」を教師にすると、
目的関数(二乗平均誤差) = 1/N・Σ( e(真の値)-e(自分の予測) )^2 と定義されます
二乗してるのは誤差をはかるために絶対値をとるためです。
問題は、この誤差を下げることと考えます。
やはり評価関数は、
E(w)=Σw・x
と表せるので、
P=1/N・Σ( e(真の値)-e(自分の予測) )^2
とすると
∂p/∂w = (∂p/∂E) ・ (∂e/∂w)なので、
(∂p/∂E)= ∂p/∂E ・( e真^2 - 2・e真・e自分 + e自分^2 )より、
=2・(e自分 - e真 )になります。
(e真は変数じゃないで数値なので、微分すると0になります)
∂e/∂w(i)=x(i)なので、
∂p/∂w(i) = 2・(e自分 - e真 )・x(i)となります
最急降下法から、
Pを最小化するにはwを次のように更新すれば良い。
Δw(i) = - α・Σ(e自分 - e真 )・x(i)
これの意味することは、正確な評価値と自前の評価値の差分を集計して、
もし集計後、正確な値の方が大きいなら、棋譜の局面に存在しているパターンの重みを増加する。
もし集計後、正確な値の方が小さいなら、棋譜の局面に存在しているパターンの重みを減少する。
要するに、パターンの重みを増やせば、そのパターンが存在する局面の評価値は増加するし、
パターンの重みを減らせば、そのパターンが存在する局面の評価値は減少する
ので、誤差が最小になるまで繰り返せば、自前の評価関数は、正確な評価値と一致するように最適化される