回帰分析を勉強中
重回帰分析の目的は,いくつかの変数に基づいて,別の変数を予測することである。
http://aoki2.si.gunma-u.ac.jp/lecture/Regression/mreg/index.html
回帰分析をちょっと試してみました。
エクセルでも分析ツールから試せます。
y(i)=Σwx(ij)
な連立方程式を誤差が少なくなるように満たすwを割り出してくれるようです。
xが互いに独立であるという仮定の下ですが。
この場合は線形結合ですね。
オセロの評価関数は回帰分析で学習するのが一般的みたいなんですよね。
終盤になれば完全読みできますから。
真の評価値(石の数)=Σwx
というのを局面の数だけ連立方程式として解けば、真の評価をより近似する、Wの組合せが求まる訳です。
Wは、パターンの数だけある重み。
オセロの場合、「○●●●●●○○」みたいな3進数で表現されるパターン
これを縦とか横とか斜めとかで全組合せで持っておいて(3^8なのでたいしたことない)
それぞれのパターンに重みをかけて足した結果が真の評価値に近似する重みが求まるように学習する。
エクセルは最大16個の重回帰分析しかできないので、
パターンが多い場合は、バックプロパゲーションとかで学習する(工学社のオセロ本にも書いてあります)
ロジステロが元祖って訳でもないみたい。
で、将棋でもやってみようとおもいまして
2秒探索した評価値を、ルートで評価関数が近似できるように
説明変数は、駒割、飛び齣の脅威、王の脅威、進行度、手数といった感じで回帰分析やってみましたが
全然近似できなかった
ただ
回帰統計 重相関 R 0.759659108 重決定 R2 0.577081961
75%相関と思っている
P-値 3.25E-61 4.89E-06 0.57006785 0.001368445 3.30E-05
P-値的には、「王の脅威」が余計という判断に(^^;
もっとも10局ぐらいでしかやってないので、なんともいえないかも。
この手のことは、おそらく歴史上、研究済みと思いますが、やはりチェス型ゲームでは上手く行かないんでしょうね。
なんでオセロだと上手く行くんでしょうね? 取り合い探索がいるかどうかの差?
ロジスティック回帰分析
ロジスティック回帰分析入門
http://koko15.hus.osaka-u.ac.jp/~torii/logistic-a/index.htm
ボナンザメソッドはロジスティック回帰分析の一種と言えるようですね(情報処理学会の論文にも棚瀬さんが書いていた)
上記の回帰分析は、連続値が対象ですが、
ボナンザメソッドでは
eval=Σwx
から
J=ΣT(Σwx-Σwx(pro))
と評価関数の差分をロジスティック関数に入れて、ロジスティック回帰分析のようになっている。
真の評価値は本来、詰みが見えないと求まらないですが、
兄弟で評価関数の差分をとると、
オーダリングで棋譜の手より良い手は、0.5以上1以下となり、悪い手は0.5以下0以上になる。
これを集計すれば、オーダリングで棋譜の手より良いと判断した間違った手の数が求まる。
これが0になれば、理論的には棋譜と完全一致する。
要するに、真の評価値が解らないでも、y=Σwxのyが0になる連立方程式が解ければ言い訳です。
Spearと10戦で9勝1敗(ただし思考1秒)
たったの10戦ですけど、これはけっこう強くなってるかもしれません
ただし1秒思考なので、1秒以上考えると全然弱いかもしれない(^^;
historyReductionしかやってなかったのですが、
RankCutっぽいのをやってみました。
以前もやってみたことがあったのですが、その時は条件の指定が甘かったようで
SEEの駒損とかの情報もからめてやってみたら良かったみたい。
読む手の順番で枝刈するRankCut
http://www.yss-aya.com/bbs_log/bbs2006.html#bbs252
RankCutはたしか山田将棋さんもやってみて上手くいったと自戦記に書かれていた
今夜はこいつをfloodgateに投入しましょう。
今のバージョンは探索延長をやり過ぎて反復深化が浅くなってるようで、上位ソフトに全然勝てませんね
mattari_yuchanにもけっこう負けてしまいました。
現在進行で負けてます(^^; 速く新バージョン投入せねば