Bonanzaのソースが公開された!


■ Bonanzaのソースが公開された


ついにBonanzaのソースが公開された。パラメータを学習させる部分は無いが、思考部はまるごと公開されている。


19回コンピュータ将棋選手権使用可能ライブラリ
http://www.computer-shogi.org/library/


■ Bonanzaのソースの内容は?


1時間ほどかけてざっとソースを読んでみたが、ソースはCで書かれており(C++ではなく)、C++のtemplateを駆使したGPS将棋のソースとは対照的。GPS将棋のソースに比べれば格段に読みやすく、かつ、素人くさい。率直かつ正直に言わせてもらえれば、GPS将棋のソースのほうが何倍も参考になる。


ただ、Bonanzaのソースの


・どんな評価因子を採用しているのか
・ビット演算のテクニック


は注目に値すると思う。あとは、GPS将棋に比べてソースが簡素なので将棋プログラムの思考部の書き方を一通り確認するのに使うだとか。ただ、ビット演算を駆使してあったりするので、それぞれのビットの意味を読み解くのは結構大変。教育的なソースではないのでそのへんは注意が必要である。


もし、教育的なソースを探しているなら、Bonanzaのソースではなく、まずは、うさぴょんのソースを読んだほうがいいと思う。教育用途としては、うさぴょんのように弱い将棋ソフトではなくBonanzaクラスの強さの将棋ソフトを平易に読めるように書き直してかつコメントを丁寧につけて、(出来ればVisual C++コンパイル出来て)誰でも手軽に読んだり改造できたりするソースのほうが望ましいのだが…誰かそういう作業をやらないか…。


■ コンピュータ将棋の大会への影響


いままで、コンピュータ将棋ソフトを一から書いている人は、勝とうが負けようがあまり気にはしていなかった(?)と思うのだけど、Bonanzaをベースにして出場しようという人は自分で一から書くというモチベーションがそんなに高いわけではないだろうし、Bonanzaを改造してその元となったBonanzaより弱いなら自分が改造して改悪されただけという、プログラマとしての自分の存在意義を否定するような結果になるので、それを参加料を払ってまでやるのかというと普通はやらないんじゃないかと思う。


ということは、Bonanzaベースで出場してくるソフトは、すべてBonanzaより強いと考えたほうが良く、Bonanzaベースで大会に出場してくる人が増えると本家Bonanzaですら大会の最終日に残れなくなる可能性がある。


コンピュータ将棋の歴史を振り返ってみるに、大きなブレイクスルーはdf-pnとBonanzaMethod(Bonanzaの保木さんが開発した棋譜からの学習メソッド)ぐらいだと思う。それ以外は細かな改良を積み重ねてここまで到達した。もはや、トッププロを倒すのに次のブレイクスルーは必要ではなく(あったらあったに超したことはないが)、細かな地道な改良を繰り返すのみという状況である。


私としては、Bonanzaをベースに、細かな改良(例えばBonanzaのソースをGPS将棋のテクニックを使って書き直して、高速化してnps(読める量)を増やすだとか)を行なっただけの人が、最初にトッププロに勝つソフトを作る人になって欲しくはない。それは、いままで試行錯誤を繰り返しての開発を10数年続けてきた人に余りにも失礼じゃないかと思う。


でもそういう可能性も大いにあり得るし、コンピュータ将棋開発者は腹をくくらなければならない。これは大波乱の幕開けなのである。


■ 追記


はてブで面白い意見があったので取り上げてみます。

icloud オープンソースで開発して、世界中の知恵を集める・・・っていうのには向いてないのかな。 2009/01/28

私の「名人に勝つために、もはや大きなブレイクスルーは不要」論からすれば、Bonanzaをこの際、オープンソースにして複数の叡智によって改良するというのは、現実的であり、かつ即効性があると思います。


ただ、コンピュータ将棋はプログラムを改良したつもりがL2 cacheに入り切らなくなって格段に速度が落ちてただとか、細かな改良が全体に影響することが多々あります。また、共通部分をくくりだして数バイト縮めたはずが分岐予測が外れまくってて結局遅いコードになっていただとか、プロファイルしてみないとわからないことも多々あり、二つのコードの優劣を比較するのは結構難しいです。


あと、特徴因子の取り方などは、それによって本当に強くなったのかを評価する方法が他のソフトと対戦させて判定するぐらいしかないのでとても大雑把で大きな誤差の付きまといます。学習に使った棋譜との一致度で判定するならもう少しsensitiveではあるんですけど、それでも1万もあるパラメータのうちの一つが与える影響は微々たるもので…。


まあ、それでもGPS将棋を作っているぐらいの人たちが10人ぐらいで寄ってたかって、本気で袋だたき(?)にするなら、まだまだ伸びしろはあると思います。