探索PVがおかしいから終盤が学習できないかもしれない
前々からmisakiの読み筋PVは、合法手じゃない場合があると言われていて、
FloodgateでPVがおかしくても、勝ち負けには関係ないし放置してたんですが、
終盤の学習がオカシイのはそもそもPVがオカシイからという可能性があるんじゃないかと思います。
その点序盤は取り合い探索が不要なので、PVが無いので、PCがおかしくなることもない。
と考えると、辻褄が合います。
misakiのPVはれさぴょんを参考に三角行列でやってるですが、
まずPVが合法手かどうかをチェックすると、それは大丈夫でした。
で、探索した評価値と、PVを下って行った局面での評価値を比較すると
46手目 手番:後手 進行度=0/0 ▼v歩 9 8 7 6 5 4 3 2 1 ---------------------------+ v香v桂v銀v金 ・ ・ ・v桂v香|一a ・ ・v王 ・ ・ ・v飛 ・ ・|二b v歩 ・v歩v金 ・v銀 ・ ・ ・|三c ・v歩 ・v歩 ・v歩 ・ 歩v歩|四d ・ ・ 歩 ・v歩 ・v歩 ・v角|五e ・ 歩 銀 ・ ・ ・ ・ ・ 飛|六f 歩 ・ ・ 金 銀 歩 歩 ・ 歩|七g ・ 角 玉 ・ ・ ・ ・ ・ ・|八h 香 桂 ・ 金 ・ ・ ・ 桂 香|九i ---------------------------+ △ 歩二 棋譜の手=△55歩 △55歩▼55歩△24歩 EVpro=-12 EVpro2=88
評価値が一致してない局面が出てきます。
静止探索のロジックとPV生成に問題がある可能性が出てきました。
こういう基礎的な部分の不具合とすると、かなり間抜けなことに……
おかしなPVで、静止探索という近似評価値を使って学習してJ'が下がっても、
学習に使ってない棋譜によるクローズテストでJ'が下がるわけがないし、
強くなるはずもない。
正しいPVが作れるようにすれば終盤も学習できる可能性が出てきました。
まったく原因が分からないよりは少しは前進しました
山田@CSAさんはRが2277もあるのか
http://www.computer-shogi.org/blog/computer-shogi_open_11/#comments
山田@CSAさんは24でR2277もあるんですね。
Floodgateではmisakiより上に行っています(^^;
私の将棋倶楽部24のレーティングは現在、2277です。 私の場合かなりvolatileな数字ではありますが(笑)、ここ何年かは2000を切ったことはないと思います。
http://syo-gi24.sblo.jp/article/3950880.html
2277だと24で4段と5段の間ぐらいみたいですね。町道場だと+2段で、6段〜7段相当?
評価値の違い問題
探索の返値と、PVを下った先で評価関数の値が違う問題ですが、
勘違いしてました。
静止探索では、stand_pat=評価関数ではなく、
stand_pat=評価関数+SEE/2
ということで脅威的に軽く足してるので、PV末端で評価関数を呼んで一致するわけがない(^^;
ということで合わせて比較してみたところ200局ぐらいまで一致していて
でも一致しない局面が出てきました。
121手目 手番:先手 進行度=15/15 ▼v銀 9 8 7 6 5 4 3 2 1 ---------------------------+ v香v桂 ・ ・ ・ ・v金v桂v王|一a ・ ・ ・ ・ ・v金 ・v銀v香|二b v歩 ・ ・ ・ ・ ・ ・ ・ ・|三c ・ ・ ・ ・ ・ 歩 ・v金 ・|四d ・ ・v歩 ・ 全 桂v歩v銀 歩|五e ・ 歩 ・ ・ ・ ・ ・ 玉 ・|六f 歩 ・ ・ ・ 歩 ・ ・ ・ 香|七g ・ ・ ・ 龍 ・v歩v馬 ・ ・|八h 香 ・ ・ ・ 角 ・ ・ ・ 桂|九i ---------------------------+ △ 歩九 金 飛 棋譜の手=▼25歩打 ▼25歩打△25銀▼25銀 EVpro=29997 EVpro2=386
詰みがからむ局面です。
学習用は1手詰めを読んでないので、詰みが発生するのは
王手されて受けが無くなった場合です。
29997ということはおそらく3深さで詰みになっていると思う。
問題はこの差がどう学習に影響するのか?
次の1手を教えると学習する将棋ブログパーツ
yowaさんのテトらせおよび、テトさせに次の1手教えるブログパーツのアイデアが面白いので
(テトリス自体をWEBで遊べるようにすると権利問題が発生するから?)
これを将棋に転用しても面白いと思う。
基本的にまっさらな思考エンジンをActionScriptなりで作り、
次の1手を提示し、ユーザーが次の1手を指すと、それを正解手としてボナメソ学習する
それなりに強くするなるためにはかなりの数を教えないといけませんが、
地道に鍛錬をつめば「あなたの考え方を反映した将棋感覚」を憶えると思います。
このアイデアを実現するにはもう一つ技術が必要で、
魅力的な次の1手を作り出すことが必要です。
基本的に棋譜を流用してもいいんでしょうけど、
自己対戦で対戦しながら「この局面は面白い」と判断できたら
ユーザー「次の1手を聞く」という
進歩本で「面白い詰め将棋とはどういう詰め将棋か?」を理論的に追求した論文があるんですが、
あれを本将棋に応用してみる。
このへんのブログパーツ的には、オセロもできるし、あと麻雀の次の1手も面白いかもしれない
(麻雀のボナメソ学習はなかなか強くするのが難しくて、次の年のGPWではSVMを使う方式になってましたが……)
そういえば、プロ野球マンガで、今NTV系でアニメ放送中のONEOUTSは、
プロ野球版のカイジみたいな気がしますが、かなり面白いです。
http://park5.wakwak.com/~tanaka02b/comic/comic06.htm
↑
先読みの天才
yowaさんはししゃもという人工無能を作られていて、
http://yowaken.dip.jp/tdiary/20050418.html#p02
単語に区切った文章を元に、マルコフ連鎖を使って文章を作ります。 それも一つだけでなく、10個とか20個とかたくさん作ります。 より返事っぽい文章を選び出す
これってマルコフ連鎖モンテカルロ法になるんじゃないかと思います。
モンテカルロですが、いづれ囲碁も作るつもりで時々ネットをまわって勉強してるんですが、
単純ランダムのモンテカルロとマルコフ連鎖を考慮したMCMCに分かれるみたいで、
囲碁のモンテカルロみたいにPlayoutをもっともらしくする工夫(例えばパターンの導入)
というのは、結局のところ、囲碁の着手の連続をマルコフ過程と仮定していることじゃないかと思います。
学習で詰みからみの手を捨てて学習
GA将さんのコメントで
私は「軽い探索で詰みが発見出来たなら、実際の対局でも読めば分かる。だからあえて学習しない。」 って選択肢もありかな−、とか考えています。 ボナンザメソッドと強化学習では色々違うかもしれませんが…
が参考になった。読まないと解らない手は捨てるは考えていたので、
SEEでかなり駒損する手(-400)が棋譜の手は学習せず捨ててるんですが
逆に、読めば解る手を捨てるという考えがありませんでした。
読めば詰むと解る局面は読めば解るし、裏を返せば読まないと解らないと言えるかも。
あくまで、一般常識を学習させたいだけなので、
その局面がシミュレートできるようにしたいわけではないし。
詰みからみの局面を捨てると
まず初期状態でJ'がかなり下がります(学習対象が減るので学習も速くなる)
実験で400局なのでアレですが、J'自体は終盤も下がるようになってます。
今まで位置評価だけだと全然終盤が下がらなかったのに。
26ステップ 400局 合計43131手 J=526624.000000 J'=12.209872 0時間16分33秒 Objective Func=40.817720 target=12.209872 penalty=28.607847 12.8/24829|12.2/5216|13.2/4740| 9.9/8346| 歩 香 桂 銀 金 角 飛 と 杏 圭 全 馬 龍 100, 260, 286, 442, 570, 682, 836, 524, 414, 527, 547, 914,1066, ------------------- -468 -411 -342 -276 -215 +190 +32 +248 +32 1 -473 -407 -59 -275 +18 +104 -179 X +217 2 -474 -209 -95 -231 +172 +201 +32 +32 +32 3 -472 -95 -106 +27 +72 +27 +250 +249 +140 4 -73 -128 -31 -103 -28 +24 -169 -114 -217 5 -9 +5 +3 +3 +5 +4 +3 -3 -9 6 -3 +0 +3 +4 +5 +0 +2 -6 -7 7 -8 X +2 -2 +4 -5 -6 -5 -3 8 -10 -4 +5 -3 -2 -9 -5 -2 -4 9
位置評価は初期値でマニュアルである程度増減させてるので0からこうなってるわけではないけど、
重要なのは、1ステップでJ'が下がるかどうかなので、
下がれば良し
位置評価だけで下がってくれれば、かなりいいかもしれない。
あとはクローズテストで未知の棋譜でもちゃんとJ'が終盤も含めて低めの値が出れば
将棋の一般常識を獲得できたことなるのだが……
あーなんとかなってくれー(最後は神頼み)