2009年07月24日
カテゴリー: イベント
「Bonanza」の作者、保木さんにインタビュー!(後編)
先週に引き続き、
コンピュータ将棋プログラム「Bonanza」の作者、
保木邦仁さんへのインタビューの模様を、
出張取材担当のNがお送りします。
さて保木さんはついにオリジナルの
最強将棋プログラムを作り上げました。
今までの他のどのプログラムにも見られない、
極めてユニークな作り方で完成させたのです。

保木さんは非常にシンプルな考え方、
「局面評価については専門の制御理論を応用する、
それ以外は従来のコンピュータチェスのやり方で良い」
という一貫した方針でプログラムを作り上げたため、
完成したシステムも非常にシンプルで、
当時にしては画期的な「ノートパソコン+ちっちゃな赤いUSB扇風機」
という構成で、世界コンピュータ将棋選手権を制することができたのです。
フリーウェアとして公開された当時も、
低スペックのパソコンで軽快に動作するということで
かなり評判になりました。
実は、このシンプルさの真の狙いは、
「なるべくたくさんの手を読む」という
コンピュータ将棋プログラムの方向性と
直結していたのです。
それまでのコンピュータ将棋では、
パソコンの演算速度の限界から、
「可能な手を全て調べる」ことをあきらめ、
なるべく関係のなさそうな手はあらかじめ捨てて
良さそうな手だけを深く読み進めるようにしていました。
この方法を「選択探索」と言います。
将棋の強い人は、自分の頭の中で
自然とこの選択を行っているそうです。
「この手は有り得ないから全く度外視」
「この手は良さそうだからずっと先まで読んでみよう」
という選択の基準は、もちろんその人の将棋の強さに
比例しています。強い人ほど、一瞬で可能性のある手を
2~3手くらいに絞りこみ、その2~3手について
ずっと先まで深く読んでいくのだそうです。
ですから将棋の強いプログラマは、自分の経験を生かして
「選択探索」の方法に工夫を凝らすことができます。
それに対して、
「可能な手を全て調べる」方式を「全幅探索」といって、
終盤になると可能な手の数が減っていくチェスでは
既に採り入れられていました。
人間の世界チャンピオンを破ったコンピュータチェス
プロジェクト「ディープ・ブルー」は
IBM社の威信をかけて作られたそのハードウェアの
パワーに物を言わせて全幅探索方式を用いていました。
全幅探索方式は人間にとって意外な手も切り捨てずに
読み進めて結論を出そうとするので、
先に損をして相手を追い詰めるような手も指せるのです。
でも当然の事ながらCPUに負荷がかかるので、
システム全体がシンプルでないと将棋で実現するのは
大変です。
さてさて保木さんは前回でも触れたように
将棋もチェスもそれほど強くありません。
「その辺を歩っている人よりは強い」(笑)
程度だそうです。
当然の事ながら手を絞るための判断基準に関しては
自信がありません。
でもその事こそが、「全幅探索」実現への
原動力になったとも言えるでしょう。
「自分はわからないし、その分コンピュータに
頑張ってもらいましょう」
という姿勢が、Bonanzaのオリジナリティに
つながっているように思われます。
そしてそのシンプルな考え方こそが、
「全幅探索」と「自動学習法」の実現に
結びついたに違いありません。
さて、コンピュータ将棋界に旋風を巻き起こした
保木さんは、Bonanzaのソースプログラム
(設計書にあたるもの)を今年2009年の1月に
公開してしまいました。
つまりBonanzaはオープンソースプログラムに
なったのです。
でもよく考えてみると、
いちばん強いプログラムの中身が公開されてしまうと、
その強さの秘訣を他のプログラムに真似されてしまう
危険が生じます。
ということは、当然大会で勝てなくなる可能性も
生じる、ということですよね。
ではなぜ保木さんはBonanzaをオープンソースに
する気になったのでしょうか?

N.「なぜBonanzaのソースを公開することになったのですか?」
保.「学術の世界では、作ったものを自分の中で取っておいても
しようがないんですよ。」
N.「発表してなんぼ、という世界ですよね。」
保.「意見をもらわないとダメなんですよね。」
N.「でも今までは他のコンピュータ将棋プログラマの方も
個々の手法などについては論文等で発表されてましたよね。
今回はBonanzaの『ソースプログラムを公開した』、
ということがとっても画期的だと思うのですが。」
保.「そうですね。でも私は実は『オープンソース』っていう
概念が全くわからないのですけど(笑)、
僕がしたかったのは・・・やっぱり『発表する』という
ことだったんです。」
N.「『発表する』ということは、
アルゴリズムだけを公開するのではなく
『ソースを公開する』ということなんですね。
それって、とってもエンジニア的発想だと思いました。
『ソースに全てが書いてあるのだ』という。」
保.「はい、そうなんですね、はい。」
N.「やっぱり保木さん、コンピュータ少年だったんですよ!」
保.「はははは、はは。」
N.「(笑)いやあ、やっぱりそうだったんですねえ・・・」
保.「でもソースだけでいいとは思わないです。
こうなんていうか、アイディアがあって、
アルゴリズムがある・・・
で、そのアルゴリズムのひとつの実装例として
ソースを示すことができた・・・。
実装できないアルゴリズムって使えないわけですよ。
どんなに美しいアルゴリズムでも。」
N.「つまりアルゴリズムをまず発表し、
それを本当に実装した成果として
ソースを発表したんですね。」
保.「そう、アルゴリズムがきちんとコンピュータに乗って、
本当に動くんだ、実装できるのだ、という。」
N.「アルゴリズムと実装を両方とも公開することで、
はじめて発表したことになるのですね。」
保.「はい、そうですね。」
Bonanzaがオープンソースになったのは、
自然の成り行きだったのですね。
でもここでひとつの疑問が浮かび上がります。
N.「なるほど、でもよく考えて見ると
他のコンピュータ将棋のソースプログラムは
公開されませんよね?」
保.「アルゴリズムを発表して実装例までを示す、
ということができるほどまとまっているものが
将棋プログラムにはあんまりないんですね。」
N.「あ、そういえばBonanzaはとてもシンプルだから
実装例を示しやすかったんですね。」
保.「はい、ちゃんと実装例として示すことができて、
かつオリジナルのアルゴリズムである、
ということです。」
N.「実際には動くソースというのはたいてい
動かすための苦労の跡がにじみ出ていますものね。
個人で作ったプログラムのソースを公開するのは
本当に大変だと思います。」
保.「Bonanzaはすごいシンプルだと思いますね。」
企業のプロジェクトチームがプログラムを作り始める時は、
ソースプログラムの書き方に厳密なルールを設定しますが、
個人で作ろうとすると実際にきちんと動かすために
数々の特殊条件を乗り越えていく過程で、
とても美しいソースであるとは言えなくなっていくのです。
「よし、オープンソースにするぞ!」と言い出してから
ソースの修正にえらい時間がかかってぼやくプログラマは
実はたくさんいるらしいのです。
N.「ところで、Bonanzaを公開する時に、
『えーっ、公開すんのかよお』
っていう声はなかったんでしょうか?」
保.「あ、言われましたねえ。
『公開して大丈夫なの?』って」
N.「例えばどんなこと?」
保.「公開するとコピーが出回るぞ、って。」
N.「コピーが出回ることは・・・」
保.「僕としては出回ってもらいたいくらいなんですけど、
大会(世界コンピュータ将棋選手権)が機能しなくなる
って言われました。」
N.「大会が機能しなくなるって言うのは、
Bonanza一色になるっていうことですよね。
それに対して保木さんの答えは?」
保.「いや、別にいいと思いますねえ(笑)。」
N.「全部がBonanzaになっても、みんなが強くなるだけ?」
保.「はい、全然問題ないと思います。」
保木さんのこの余裕はどこから来るのでしょうか。
一度世界チャンピオンになって頂点を極めた
自分のプログラムを、あえて負けるかもしれない状況に
自らの手で追い込んでいくかのようです。
勝敗を超越した何かが見えているのでしょうか。
実際にはBonanzaのソースが公開され、
誰でも保木さんのオリジナルの「自動学習法」の
部分を取り入れることができるようになりました。
その結果何が起きたか。
そう、Bonanzaは「Bonanzaチルドレン」に敗れたのです。
2009年の世界コンピュータ将棋選手権で、
Bonanzaは5位に終わりました。
今回の上位入賞チームのほとんどは、
保木さんのオリジナル部分の影響を受けています。
N.「今回の大会では『Bonanzaチルドレン』が
保木さんを倒しましたね。」
保.「いやあ、嬉しい限りです。」
N.「オープンソース的な観点、というのが
あるのかどうかわかりませんが、
研究成果を共有することによって
全体のレベルが向上した今回の出来事って
本当に素晴らしいことだと思います。
ひとつうかがいたいのが、
負けるのいやじゃないですか?」

保.「うーん・・・」
N.「普通将棋の好きな人って、負けるの嫌いですよね。
お仲間のコンピュータ将棋プログラマの方なんか
いかがですか?」
保.「あ、やっぱり勝ちたいみたいですね。」
N.「もちろん、保木さんも勝ちたいって気持ちは。」
保.「ええ、僕もあります。
でもあんまり僕は重要視してないかもしれない。」
N.「他の人に比べると」
保.「勝つ喜びよりも勝つ手法が発見できた喜びの方が
ずっと大きいですね。」
ジーンと来ました。感動です。さすが保木さん。
すっかり感動に浸っていたのですが、
保.「でも優勝賞金がすごい大きかったら
僕も勝とうとするかもしれない(笑)。」
N.「じゃあ、竜王戦(将棋界最高賞金のタイトル戦)に
出場できるとしたら? 優勝賞金3,200万円が
かかっていますよ(笑)。」
保.「いやあ、かなり頑張りますよ(笑)。」
N.「えーと、Bonanzaは既に公開されてしまってますねえ。
うーん、画期的なアルゴリズムを発見して
より強力なBonanzaになったら、公開しますか(笑)。」
保.「隠しますねえ(笑)。」
保木さん、やっぱり普通の人でした(笑)。
ある意味ホッとしました(笑)。
N.「今後さらに強くする手法にはどんなものが
あるのでしょうか?」

(研究用PCはごく普通のノートPC! 机の上には将棋の駒も。)
保.「いろいろ試してますが・・・
クラスタリング(複数のコンピュータを
接続して一台のコンピュータのように
扱う)とか・・・
あと、ひとつ面白いのは、
『単純合議システム』ですね。」
N.「複数のBonanzaに相談させるんですね。」
保.「いやあ、あれで強くなるのは驚きでした。」
今年の世界コンピュータ将棋選手権で、
3台のPC上で6個のBonanzaプログラムを動かし、
それらの多数決で手を選ぶシステム、その名も
「文殊」というシステムが登場し、
なんとBonanzaを上回り3位に入賞したのです!
(直接対決では本家Bonanzaが貫禄を見せました)
この「文殊」のプロジェクトに対しても
保木さんは積極的にBonanzaを提供されたそうです。
「みんなに使ってもらいたい」という保木さんの願いが
伝わって来ますね。
文殊チームがBonanzaの成績を上回ったことを、
保木さんは心の底から喜んでいらっしゃるようでした。
N.「長い間いろいろお答え下さり、
ありがとうございました。
最後にこれから思考ゲームのプログラミングに
チャレンジしようとしている学生に
アドバイスをお願いします。」
保.「そうですねえ、まずは
『絶対負けない○×ゲームのJavaアプレット』
を作ってみましょう。
それからそれを面白いと感じたら、今度は
『ルールどおり正しく打てるオセロゲーム』
にチャレンジするといいと思います。」
N.「なるほど、そしてオセロでも面白いと思ったら、
あとはどんどん自分で深く研究していけますね。」
保.「そうですね。」

(製品版のBonanzaもあります。自然科学と将棋の素敵な出会い!)

(オープンソースだから、ソースプログラムを撮影しても大丈夫!)
保木さん、本当にありがとうございました。
ご自身の成果を広く共有しようとするその熱意に
すっかり感動してしまいました。
今度是非日本電子にいらしていただき、
直接学生に保木さんのエンジニア魂を
見せてやってください!
(近日中に特別講演をしていただく予定です。
詳細は決まり次第、こちらでお知らせします!)