usa_test_2cとの直接対決

うさ親さんにお願いして(?)、usa_test_2c(うさぴょん相当?)をfloodgateに投入してもらっていたわけですが、なかなか直接対決に至りませんでした。

http://wdoor.c.u-tokyo.ac.jp/shogi/view/2011/11/05/wdoor+floodgate-900-0+hiyoko_carlo_v0.19_1c+usa_test_2c+20111105233005.csa

usa_test_2cのほうは、置換表が実メモリに収まらずメモリスワップを起こしてしまうようなレガシーなマシン(Windows95/98?)だそうです。

こちらは1コアとは言え、Core i7マシンでメモリは16GB載せております。これで勝ったとしても本当に勝ったことになるのかは微妙ですが、サーバー機なので実際にひよこカルロ将棋に割り当てているのは6GBだというのと、サーバー機なのでバックグラウンドで何かタスクが走っていることもありますというのと、省電力化のためにTurbo Boostは切ってありますということは書いておきます。(それでもこちらのほうがマシンスペック的にずいぶん上だと思いますが…)

序盤でいきなりひよこカルロ将棋が下手な受けかたをして、76玉型になってしまいました。

この形はモンテカルロシミュレーションのテストのためLesserkaiと対戦させていたときにも何度か見かけた形でして、まずいなーとは思っていたのですが、危なっかしいく見えるものの一発で潰されるような手順はないようなので野放しにしていた局面です。

まさかこの形がusa_test_2cとの勝負でいきなりでてくるとは何とも皮肉なものです。観戦していた私は目を覆いたくなりました。

しかし、この将棋は乱戦の末、ひよこカルロ将棋がこのまま玉が8,9段目には戻ることなく勝ってしまうのですが、なんとも不思議な将棋でした。

そのあとusa_test_2cとはもう一度当たりまして、こちらもひよこカルロ将棋側は角頭の歩を突いたりして、本当にどうしようもない序盤ですが、またもや勝たせてもらえたようです。

http://wdoor.c.u-tokyo.ac.jp/shogi/view/2011/11/06/wdoor+floodgate-900-0+hiyoko_carlo_v0.19_1c+usa_test_2c+20111106013006.csa

うさぴょん側はマシンスペックに難有りのようなので私は勝った気は全然しませんが、うさ親さんにはUSI対応の「うさぴょん2」の誕生を期待しております。

そしてかの有名な「うさぴょん」との対局はいい記念となりました。本当にありがとうございました。

floodgateのひよこカルロ将棋v0.19

まだ100戦終わっていませんが、次図のような状況です。

BlunderXX-r3851_4c,chie_v0.8には半分ぐらいしか勝てていません。ひよこカルロ将棋側としては序盤があれだけひどくて勝たせてもらえていること自体が奇跡なのですが、それでも両ソフトとは同じぐらいのレーティングなのに半分ぐらいしか勝てないということはひよこカルロ将棋についているレーティング(R1930前後)が高すぎるんじゃないのかという疑念を拭えません。

ここから考えられる結論としては、
1) 序盤の駒組が優れているソフトにはひよこカルロ将棋は勝率が著しく悪い
2) Blunderは本当はもっとRが高いのに、稲庭れさぴょんからRを吸い取られて低く見えているだけ
3) BlunderはC++で書きなおしてまだバグなどが残っていて本調子ではない(C#版より明らかにRが低いので)
のいずれかだと思います。

2) or 3)ならひよこ的には良いのですが、1)なら、これはもうマルチコア対応やクラスター化なんかでは勝率の向上にはほとんど効果がない可能性があって、マルチコア化はともかく、頑張ってクラスター対応させても効果がないという悲しい結末が待っていそうです。

いまのひよこカルロ将棋の棋譜を見る限り、そもそもマルチコア対応で1手や2手分探索深さが増えたとしてそれでgps_normalへの勝率が上がるとは到底思えないのですが、いやしかし、npsが倍になるごとにR50ずつぐらいは何故かあがるというのがコンピューター将棋の世界の常識であり、そのへんは人智を超えた、人間の想像を超えたことが起きかねません。

しかし駒得だけの評価関数でnpsが倍になるごとにどれくらいRが上がるのかという実験結果自体がなくて、本当にそんな単純な評価関数にもこの話が通用するのかどうかというのはよくわかりません。

「上がるのか上がらないのかハッキリしてくれ」と言われそうですが、それは私にもよくわかりません。

まずはマルチコア対応です。それによって効果があったならクラスター化をしようと思っています。マルチコア対応で強くならなければ次の方法を考えるまでのことです。

ちなみに私は棋譜からの学習にはしばらく手を出さないと思います。あれは泥沼なので私の手に負えるものではないです。私はもっと別の方法を模索したいと思います。

3手/5手詰め判定

並列化の前に短手数の詰将棋ルーチンを書いておこうと思い、3手/5手詰めルーチンをいま書いているのですが、高速化するにはこれが大変複雑でちょっとやそっとでは書けそうにありません。

そもそも書いたら書いたでまたしばらくはバグっていて、そのデバッグがまた大変で、おまけに、ひよこカルロ将棋はたいてい詰むか詰まざるやで負かされているのではなく、序盤で大差をつけられて切らされて負けているわけで、詰将棋なんか関係ないようにも思えます。

現在は探索中の各ノードで1手詰め判定をしているのですが、この1手詰め判定すらひよこカルロ将棋には無駄ではないかという疑念を私はいだいており、本当のところ無駄なのか無駄でないのか私にはよくわかりません。

1手詰め判定ルーチンをコメントアウトして自己対戦させてみれば良いのですが、そうは言っても序盤がひどすぎて自己対戦の勝率からは何も結論を出すべきではないような気もして、sspと100戦ほどやってみたいのですが、どうせなら通常探索中に
1) 詰将棋ルーチンなし
2) 1手詰め
3) 3手詰め
4) 5手詰め
のそれぞれで差がつくのかつかないのかを比較してみたいと思い、いまに至ります。

ちなみに保木さんの選択(Bonanza)は3)です。Bonanzaは評価関数がしっかりしていて、npsがそんなに出ておらず、それゆえ詰将棋判定にかかる時間は相対的には小さいということが言えて、ゆえに3)がベストなのでしょうか。

もし評価関数がさらに重くて(近年のコンピューター将棋は評価関数は重くなってnpsが落としてでも強くするという傾向が顕著です)、枝刈り性能が抜群によいなら、3)よりは4)がベストになるのかも知れません。

しかし4)を置換表なしにやってしまうとやっぱり重いような気もするのでそんなことはせずにもう1,2回iterationが回ることを期待したほうがいいのかも知れません。要するによくわかりません。

まずは実験できる状態まで持っていかないと。先は長そうです。

ひよこカルロ将棋v0.19のfloodgate戦を終えて

floodgateは試合数が少ないと高めのレーティングがつくので、100戦もするうちに徐々に落ちてくるんじゃないかという懸念もあったのですが、106戦しまして、二週間レーティングにてR1920でした。R1900以上あったのでほっとしました。

Lesserkaiにすら勝てなかった「ひよこ将棋v0.01」(おそらくR1200程度)からR1900に到達するまでにおおよそ2週間程度。「毎日R50ずつ上がっている」というのは、どうやら私の妄想ではなかったようです。

今後、毎日R50ずつ上げるのは不可能でしょうけども、いましばらくどこまで自分の力で上げられるのかは確認しておきたいので、自分なりの方法でやってみるつもりです。

皆様におかれましては、冷ややかな目と生暖かい目でひよこの奮闘ぶりをお護りください。

うさぴょんとの直接対決について

floodgateでのひよこカルロ将棋v0.19とusa_test_2c(うさぴょん)との直接対決も終わり、うさ親さんからはこんなコメントが。

というわけで、とりあえず、『うさぴょん<ひよこ将棋』は完全に成立していると思います。

うさぴょん側から見て、直接対決は1勝3敗で終わりましたが、どの棋譜も『宝物』ですw

課題は色々あれど、USI対応にするのかどうかはとにかく(苦笑)、『うさぴょん2』を作らないと『ひよこ』には勝てません。

『うさぴょん2』はみんなが待ち望んでいると思います!!

私はUSI対応のときに将棋所の作者が公開していたサンプルであるLesserkaiのソースコードを見て、あまりの短さに愕然としました。「ああ、こんな短いプログラムでコンピューター将棋が作れるんだという」新鮮な驚きと賞賛の拍手を送らざるを得ませんでした。

Lesserkaiのプログラムは10分ほどソースコードを眺めているだけで大半を理解できました。このソースコードは教育的にも価値が高く、もっと読まれるべきだと思いました。

うさ親さんが『うさぴょん2』を作れば、きっとシンプルで、プログラムが短く、そして強いコンピューター将棋が出来るのではないかと思います。

そんな『うさぴょん2』をみんなが待ち望んでいます。
是非ともこれを機にチャレンジしてみてください。

ひよこカルロ将棋は、ひよこカルロ将棋neoとなって、『うさぴょん2』との対決できる日をお待ちしております。(あまり待たせると「ひよこ将棋」から「鶏将棋」になっているかも知れませんよ?)