Hatena::ブログ(Diary)

ひよこ将棋、はじめました。


  ひよこ将棋関連の実行ファイルは → ここ

2011-12-23

ボンクラーズは実は弱いのでは?

19:50 | ボンクラーズは実は弱いのでは?を含むブックマーク ボンクラーズは実は弱いのでは?のブックマークコメント

以下は、あくまで私の勝手な想像でして、これを裏付けるものは何一つありませんので、「またひよこが勝手なこと言っているな」と思いながら以下をお読みください。


将棋倶楽部24にて、ボンクラーズが(瞬間的に)R3335まで到達し、ponanzaの瞬間最高レーティング(R3211)を大幅に上回りました。


将棋倶楽部24に投入されているボンクラーズは、クラスター化されておらず、1PCらしいです。

ボンクラーズはもともとはボナンザクラスター化したもの(「ボナンザクラスターズ」の略)だそうですが、その後、何をどう変更してあるのかは情報が公開されていないのでよくわかりません。


fv.bin(Bonanzaの評価関数パラメーターが収められているファイル)そのままですとコンピューター将棋選手権のライブラリ制限に引っかかるため、評価関数自体は何らかの変更を加えてあるらしいのですが*1、それによってボナンザからどれくらい強くなっているのかについても情報が公開されていないのでこれについてもよくわかりません。

クラスター化の方法ですが、公開されている情報*2を信用するならYBWCを使っていない並列化だそうで、これで成果が上がっているなら、これ自体が一つのブレイクスルーなのですが、これでどれくらいの成果が上がっているのかも実のところよくわかりません。

また、並列化のときに、スレーブをプロセス単位で動かしているそうです。*3 つまり、スレーブ側のPCは、4コアならば、4スレーブ(1スレーブ = 1プロセス・1スレッド)という構成になるのだと思いますが、常識的に考えれば、こんなことをするよりは、1PCを1スレーブとして、1プロセス4スレッドにしたほうが良いはずです。4プロセスですとそれぞれが置換表を共有できないのでその分だけ弱くなるはずです。

ところが、そこまで弱くなっていないのは(本当に弱くなっていないのかは私は知りませんが)、並列化の方法がきっとうまい方法でなされていて、置換表を共有できていないことによるロスが限りなく小さいからではないかと思うのですが、この部分も情報が公開されていないのでよくわかりません。

「1スレーブ = 1プロセス1スレッド」の典拠は、ボンクラーズの昨年の世界コンピューター将棋選手権でのアピール文書であるため、いまでもそのままなのかどうかはわかりません。

あと、今年のボンクラーズのアピール文書には「SSE bitboard、差分評価計算」とありますが、これらの変更はBonanza6に取り込まれたので、この点においてBonanza6との差はないはずです。

bonasseを忠実に真似てますんで動作はほぼbonasseといっしょです。まあいくつか改良はしましたけど。単体npsはbonasse v1.2より2〜3割上がってるはずです。また評価関数もいろいろいじってまして、fv.binは使ってません(というか使えない)。

http://aleag.cocolog-nifty.com/blog/2011/05/index.html


bonasse≒Bonanza6と比べて20〜30%高速化 + いくつか改良 + 評価関数をいろいろいじっている -(マイナスすることの) 1プロセス1スレッド構成 ということで、プラスマイナスで言えばほとんどゼロに近いか、よくて、せいぜい20%程度の高速化に相当する程度なんじゃないかというのが私の思うところです。

すなわちボンクラーズ1PCの場合、Bonanza6より圧倒的に強いということはありえないように思います。


しかし、それならば、Bonanza6に8割近く勝ち越すponanza*4が、将棋倶楽部24ボンクラーズより低いRになる説明がつきません。

ここで、原因を考えるに、ponanzaは手動で対戦させていたために、思考時間をフルに使えていなかったのではないかというのが挙げられるかと思います。


一方、ボンクラーズのほうは、思考時間いっぱいまで使います。1手30秒ならばそのギリギリまで使うそうです。自明な一手でも時間いっぱいまで使います。自明であろうと、その先を探索して、可能な限り置換表に情報を書きだしておいたほうが、その次の自分の手番で有利に働くからでしょう。

きっと「1手30秒というのが対局条件なのだから、この条件を守りつつ、最も強くするためにはギリギリまで時間を使うのがベストだ」という判断なのだと思います。

ponanzaの将棋倶楽部24での対局は、作者のisseiさんが相当レベルの将棋指しなので、自明な一手で相手を待たせては相手に申し訳ないと思ったのか、姑息だと思ったのかは私は知りませんが、ある意味、潔く思考を短く切り上げているように思いました。

もしかしたら、そういう思考時間の使い方の差が、ponanza R3211、ボンクラーズR3335という差を生み出したのかなぁと思ったりもします。


棋力的には1PCでの比較の場合ですと、ponanzaとボンクラーズではR100もの差はないと思うのですが、人間の能力の限界付近ではわずかな差が雌雄を決するということはありえるのかなとも思います。

例えば、100メートルを12秒で走る陸上選手は世界にたくさんいると思いますが、これがさらに10%速くとなると、ごくわずかになり、さらに10%速くとなるとゼロに近くなるというのと同じ原理です。

Bonanza6やponanzaはもう人類が到達できるかできないかギリギリの領域に存在して、そこから10%か20%の高速化をすると、これに勝ち越せる人類は、いなくなってしまってもおかしくはないです。


ともかく、ボンクラーズをいつまでも将棋倶楽部24でのさばらせておくのも癪に障るので(?)、ひよこ将棋も来年は将棋倶楽部24デビューを果たし、直接対決において、ボンクラーズは1PCではさほど強くないことを証明しようと思っています。いや、逆にボンクラーズは1PCでもめっぽう強いことを証明する結果になるかも知れませんが。

ボンクラーズが(Bonanza6などに比べて)本当に強いのか弱いのかについては、ボンクラーズと同じく、思考エンジンのクラスター並列化に取り組む一人の開発者である私から見て大変興味深いところので、その部分をはっきりさせるために挑戦してみようと思っています。楽しみにお待ちください。(ひよこが将棋倶楽部24に参戦するまでボンクラーズがいてくれるのかはわかりませんが…)


・以下の文章は、追記しました。(2011/12/24 8:00)


某スレで議論の対象になっているようですのでここで名言しておきますが、私が将棋倶楽部24に参戦させるときには、私はBonanzaのfv.binは使いません。また、最終的なひよこ将棋でもfv.binを使うつもりはないです。

くどいようですが、fv.binを週刊ひよこ将棋で使ったのは、評価関数の形をいろいろ実験するためで、その実験すべきいろいろな評価関数の形のうち、fv.binから部分的に値を抽出すれば済むところに関しては、わざわざ棋譜からの学習をさせるのは時間の無駄なのでfv.binから抽出したまでです。実験以外の目的でfv.binを使うつもりは毛頭ありません。

hirohiro 2011/12/24 10:29 姿勢が素晴らしい、男気を感じます。
陰ながら応援してます。ボンクラなんかに負けないでください。

A級A級 2011/12/24 11:25 ひよこ様
漢ですねぇ!某法人もこういうふうであってくれるといいのですが。

ひよこさんの実験的・実証的姿勢は大変興味深く、注目しています。応援しております。

24もありますが、ソフトどうしだとまたいろいろ言われて久米さんの頭痛の種を増やしたりしますので、floodgateの方がいいような気がします。当方も24の方は最近は相手が固定化してマンネリ気味な面もありますので、強い相手がいるならfloodgateの方に行くのも全然アリです。ひよこさん側の準備できましたらお申しつけください。
あと、この場を借りてなんですが、他のコン将開発者の方も、「強いバージョンできたから試したい!」というのがありましたら表明してくだされば、こちらもマシンの事情の許すかぎり参戦しますので。

ちなみに今のボンクラーズは、たとえば4コアPC3台なら、1台は4スレッドで使い、4スレッド/スレーブノード x 3ノード、というふうになります。

hiyokoshogihiyokoshogi 2011/12/24 11:41 おお!伊藤さん!なんというありがたいお言葉!!ひよこ将棋の評価関数のほうを新しいものに差し替えたら(学習させる + 試行錯誤に半年ぐらいかかる気もしますが)、是非、対戦したいです!

> ちなみに今のボンクラーズは、たとえば4コアPC3台なら、1台は4スレッドで使い、4スレッド/スレーブノード x 3ノード、というふうになります。

あら。やはり、1スレーブノードあたり4スレッドという構成なんですね。ですよね…。

その部分の情報がなかったもので、1PCでスレーブが複数あってスレーブ間でMPIで通信してそんなに強いはずがない!と悶々としておりました。これで頭がすっきりしましたので、いい初夢が見れそうです。

よーし、俄然やる気が出てきました!頑張ります!