実験結果だどーん。
ひようら王(ひよこ将棋)とひまうら王自体は探索速度に1.6倍ぐらいの差がある。レーティングにしてR50~100ぐらいの差である。当然、ひまうら王のほうが遅いので、評価関数がきちんと学習されていない状態だと弱いということになる。このため、ひまうら王が弱くなる方向で学習してしまった場合、戦績はぼろぼろになる。何度か実験を繰り返したが、ひようら王にダブルスコアで負けることなどザラであり、学習が進むと100戦やって一勝すら出来ないという事態になった。学習してはいけない何かを学習していることは間違いない。
棋譜を読み込ませて、棋譜の指し手は使ってはいないけども、棋譜の指し手との指し手一致率は表示させるようにした。棋譜の指し手は高い確率で正解手なので、こうすることにより、棋譜の指し手に近づいているかどうかはわかるようになる。評価関数が棋譜の指し手に近づかない手法は間違っている可能性が高い。
いくら玉を囲おうと、いくら銀を前に進めようと、棋譜の指し手に近づかない、あるいは、ひようら王に勝ち越せないうちは、何を学習したことにもならない。私はそう思っている。
いくつか実験を繰り返すうちにわかったことは、まず、BishopLearningは詰みを見つけてからの指し手を正解手として扱うので、この正解手(詰みのスコア)に対して、他の指し手(非詰みのスコア)の差を学習しなければならないということだ。
Bonanzaメソッドでは、棋譜の指し手で探索したときの末端の局面の評価値から、あまりに評価値のかけ離れた指し手は切り捨ててしまっているが(αβ探索の探索ウインドウを狭くすることでこれを実現してある)、BishopLearningでは、ここを切り捨ててはならない。これをまず修正した。
次に、深い探索での評価値の(値の)差を、浅い探索(深さ1)の局面に出現している評価因子に反映させる。浅い探索の結果が、深い探索の結果に一致させるためである。NDFとかPonanzaもこれに近いことをしている。深い探索というのは、普通、8手ぐらいは読むのであるが、8手も読むと相当に時間がかかり学習がなかなか進まない。とりあえず6手にして、入力棋譜との指し手一致率が上昇するのかどうかをまず見ようと思った。
話を少し戻すが、NDFやPonanzaの手法を見る限り、あるレベルの(R3000ぐらいの)将棋ソフトがいったん完成してしまえば、そのソフトを用いて、局面を自動生成し、深い探索の結果に浅い探索の結果が一致するように学習させていけば、あとは棋譜なしで強く出来るようである。
ひようら王はR2400。これをなんとか少しでも強くできることを示せれば、あとは自己学習のループにより、ある領域までは強くなるはずである。そのためには棋譜との指し手一致率が上がらなければ話にならない。
まあしかし、この指し手一致率がともかく、上がらねぇんだよ!
10回ぐらいイテレーションを回して、指し手一致率が上がらなければ失敗。だいたいそういう基準で実験を進めている。そうするとソースコードをちょっといじって、その手法が正しいかどうかの判定をするまでに要する時間が節約できる。自己対戦をさせずに結果が得られるという意味で、このへん、他の教師なし学習に取り組んでいる人たちとは一線を画する(?)かも知れない。自己対戦でいくら勝率が上がろうと、アプローチの手法が正しいかどうかは判断がつきにくいが、棋譜との指し手一致率が上がっているなら、そのへんは安心である。
あと、ひまうら王はどう学習させても序盤で端歩を突きたがるということである。この理由は指し手生成のときに歩の指し手生成からやっているので末端の評価がゼロであれば端歩を突いてしまうことに起因する。序盤でかつ探索深さが浅いと端歩を突く手が最善に見えて、そこから学習してしまうので端歩を突く指し手が加点されてしまうのだ。端歩だけならばまだ良いのだが、NDF方式で相対KPP(ミラーも込み)をやっていると右端の歩を突くのが良い手であるなら左端の歩も突いてしまうのだ。右と左で都合4手が無駄になる。これだけでも大きなハンデである。そのうち解消するのかも知れないが、なかなか根が深い。
ひようら王(ひよこ将棋)のときも端歩を突く傾向はあるにはあったが、指し手生成の順番的に、片側の歩しか突かない。せいぜい無駄になるとして2手である。そこからすると大きなハンデである。
それから、学習局面から探索を開始して、駒得になる局面にいたるまでの手順は正解手である可能性が高いということである。そんなわけで駒がぶつかってからの将棋は、駒得のみを考慮しながら探索してもそこそこ正解手が混じっているということがわかる。開始局面から駒得になった局面のみを学習対象としたほうがいいのかも知れないが、いまこのへんの条件を色々調整中である。
あと、序盤の指し手は無学習の評価関数では間違っている可能性が高いので序盤の指し手からは学習させないようにした。具体的には開始局面から手数が50手以内の指し手は学習させないようにした。
とまあ、色々と工夫をしていくうちに、棋譜との指し手一致率がすこーしずつではあるが上がっていくような手法が見つかった。まだiteration回数が少なくてよくわからないが。もしかするとうまく学習出来ているのかも知れない。何をどう学習しているのかはよくわからない。得体の知れない、何かだとだけ言っておく。
もう少し色々試してみるので、次の報告までもう2,3日待て。
>得体の知れない、何かだとだけ言っておく。
オラ、わくわくするだ、、、。
ちなみに、計算機能つき暖房器、順調に動いておられる様で安心しました。
ランタン一つでザックザックと将棋道を掘ってるのですねぇ。
頑張ってください。