「ボナンザVS勝負脳」を読む。

 bonanzaというコンピュータ将棋のソフトが半年前に人間のトッププロ棋士と対局した。このことは、この記事をわざわざ読みに来る人は知っていることと思う。そして、その対局に関する新書が出た。それが「ボナンザVS勝負脳」である。私は将棋が強いわけでもなければコンピュータ将棋に詳しいわけでもない。ただ、専門分野が情報工学なので、この本を多少専門的な観点から読むことができるはずである。以下、数項目に渡って、解説や感想を書こうと思う。

26ページ「制御理論というのは、そもそも工学の分野で使われるものである」

 著者の保木氏は唐突に「制御理論」というキーワードを出した。制御理論を知らない人はこう思うはずである。「ここは飛ばして読もう」。

 制御というととっつきづらいイメージがあるかもしれないが、「コントロール」と言い換えると少しはアレルギー反応を抑えることができるかもしれない(制御というのはコントロールの訳語である)。ラジコンをコントローラーで動かすのも立派な「制御」である。この場合、ラジコンカーをコントロールしているのは人間であるので、「人間による制御」と呼ぶことができる。もしコンピュータが自動的にラジコンカーを動かしていたら「自動制御」ということになる。動かす対象をラジコンカーではなくエレベータなどにすると、「エレベータの自動制御」となる。

 そこから話が飛躍するように感じられるかもしれないが、保木さんは「将棋の盤面」を「動かす対象」として捉えている。これまでラジコンカーやエレベータなど、動きの分かりやすいものを例にとっていたので、「なぜ将棋の盤面が動かす対象になるのか」と思うかもしれない。ここで「コントロール対象」をもう一度よく考えてみると、「指示によって状態が変わるもの」と捉えることができる。ラジコンカーはコントローラーの指示によって速さや曲がり具合が変わる。エレベータは自動的な指示によってどの階で停まるのかが変わる。将棋の盤面も同様に、「指し手」によって「状況」が変わる。つまり、盤面も「コントロール対象」と捉えることができる。

 このコントロール対象である盤面を、普通の将棋では二人の人間が指し手によってコントロールしている。この人間の部分がコンピュータに置き換わると、「機械の自動制御」となる。コンピュータ将棋というのは、「機械による自動制御」であると捉えることができる。

 機械による自動制御をするためには、何が必要なのか。ラジコンカーに喩えるならば、必要なのは「ラジコンカーがどういう動きをしていて、周りがどういう状況のときに、どういう指示を出すべきかという約束事」である。コンピュータは「きちっと決められた約束事」がないと動かない。今までの将棋ソフトというのは、その約束事をプログラムを作る人たちが一つ一つ書いていた。そんな約束事を保木氏は、機械に自動的に作らせた。この「約束事の自動生成」を専門用語で「学習」と呼ぶ。「約束事」を「自動生成」させたことがbonanzaの新しさ(強さではない)の一つの要素である。なお保木氏は「静的評価関数の自動調整」という言葉を使っている。

41ページ「ボナンザは1秒間に約400万局面を読む」

 一瞬、この「400万」という数字はすごいように思えるかもしれない。そして、確かにすごいことではある。私はプログラミングが下手なので、そんなにたくさんの局面を読ませることはできない。ただ、400万局面がどれほどのものなのかということが、ぱっと分かる人は少ないのではないだろうかと思う。私も、電卓で計算をしないと分からない。

 400万をぱっと分かる数字に置き換えるために、「何手先を読むか」という数値に置き換えることを考えよう。

 もし、「400万局面」という数字ではなく「80局面」だとしたら(80「万」ではない)、計算はすぐにできる。将棋は一つの局面に対して平均「80通り」の指し手が考えられるから、「80局面」というのは要するに「一手先しか読めない」という意味になる。

 では、「二手先」を読むには何局面を読む必要があるのか。一手先が「80通り」でそのもう一手先にはそれぞれに「80通り」の指し手があるので、答えは80×80で「6400局面」である。二手先を読むのにコンピュータは「6400」局面を読まなければならない。以降、読みたい手数の分だけ80をかけ算しなければならない。

 もし馬鹿正直に80をかけ算していったとすると、一秒間にbonanzaが読める手数は「3手」である。4手目を読むためには、約10秒かかる。本当の話である。

 ここで威力を発揮するのが「枝刈り」という計算方法である。127ページから枝刈りの手法について説明がされているが、これが何のためにあるかといえば、「一手先が80通り」というのを近似的に変えてしまうためにある。実際には80局面を読んでいないのに「一手先を数通り」読むだけで80局面を読んだのと同じ効果を発揮することのできる方法が「枝刈り」である。実際に80という数字がどれくらい変わるかというのは、保木氏が学会に発表した資料に書かれている。保木氏の作成した資料によれば理論上は2通りから3通りの間であり、実際には余計な計算も含まれるために3通りから5通りの間であるとのことである(http://www.geocities.jp/bonanza_shogi/gpw2006.pdf ←PDFの「力任せの探索は簡単・高性能!」というページ)。これを信じて計算をすると、「400万局面」は「9手」から「14手」という換算になる。ただし、これは1秒間の数値であるので、仮に1分間考えたとすると、「12手」から「18手」となる。意外とすごくない。

 これは(私は将棋に詳しくないのだが)、プロ棋士と大差ないのではないのだろうか。要するに、コンピュータはさほど速くは読めていない。

91ページ「覚えている棋譜のデータから外れたときは、ボナンザはどう考えるのですか」

 保木氏と対談しているときの渡辺竜王からの質問である。対局前、対局後と相当コンピュータ将棋を(多分)勉強しているはずの渡辺竜王がこの質問をするのであるから、かなりの人がボナンザの思考法について勘違いをしていることと思う。

 ボナンザは「六万局」の棋譜から「学習」をした。

 というフレーズは相当人々の耳に残ることと思う。そして「どのように学習をしたのか」ということについては、耳に残らないことと思う。もっぱら、「六万局」のみが頭に残る。その結果、世間一般で使われる「学習」という言葉の定義をもとに「六万局」の使い方が勝手に想像されてしまうことになる。

 おそらく、「ボナンザは六万局を全く暗記していない」と書いたらかなりの人が驚くことだろうと思う。ボナンザが暗記しているのは序盤の定跡だけであって、定跡から外れたあとはボナンザは自力で指し手を考える(ゆえにボナンザ囲いのような変な囲い方が生まれた)。繰り返すが、ボナンザは六万局を全く暗記していない。多くの人は、六万局のその局面と似たような局面を指すようにプログラムされているのではないか、と考えていることと思う。それは全くの誤りである。ボナンザは六万局をまるで憶えていない。

 では、なぜ「六万局を使った」と言われているのか。答えは、「暗記はしていなくても使ってはいるから」である。何のために使ったのか。それは、「局面の評価」をするためである。上の方で、ボナンザが一秒間に400万局面を読むことが書かれているが、読んだだけでは将棋は指せない。読んだ結果が「善くなるのか」「悪くなるのか」が分かって初めて指し手を決めることができる。つまり、局面の評価が必要なのである。では、どのように局面を評価しているのか。それは、119ページから120ページに書かれている。「玉と他の駒二つの位置」「隣接しあった駒二つの位置関係」などである。これらによって読んだあとの局面を「評価」している。ボナンザは評価のために、局面からごく限られた情報のみをとりだして、それをもとに局面を採点しているのである。決して、盤面全体を俯瞰しているわけではない。そして、この「採点表」を作るためだけに「六万局」を使用している。「六万局」は「採点表」に化けたのである。

127ページ「このミニマックス法では、ある条件を仮定している」

 この部分に関しては、解説ではなく、私の感想を述べる。解説するまでもなくかなり丁寧に書かれており、これよりも丁寧に書くことは意味をなさないからである。

 ミニマックス法が仮定している条件が書かれているが、もしボナンザ(およびその他の将棋ソフト)に実装されているミニマックス法に不備があるとすれば、それは読みを途中で中断していることだろうと思う。実装の都合上そうせざるを得ないのは分かるが、詰みまで読み切らなければミニマックス法はどこかで必ず間違う。

 おそらく様々な人がすでに研究をおこなっていることとは思うが、評価関数が誤る確率を考慮した上での指し手を決める必要があるはずである。

170ページ「マグネトロンという電子管を利用して発生させた電磁波(マイクロ波)を対象に向かって照射すると、極性を持つ水分子をつなぐ振動子が振動エネルギーを吸収し振動を始める」

 なぜ電子レンジで食べ物が温まるのかということについて書かれている。簡単に書きすぎていると思うので、補足する。ただし、私の専門分野は化学ではないので、嘘を書いている可能性はある。

 まず、電子レンジで熱せられるのは水分子のみである。そのほかの分子は温まらない。ほとんどの食べ物には水分子が多量に含まれており、水分子が熱せられると食べ物が温かくなるのである。とにかく、電子レンジでは水分子を温めている。

 引用した文の後半に「水分子(略)エネルギーを吸収し」と書かれているので、水分子がエネルギーを吸収して温まるのだということが分かると思う。なんのエネルギーを吸収するのかといえば「マイクロ波」である。このあたり、分からなくなると思うので少し噛み砕いて説明をする。

 水の分子模型を(高校の化学の時間に)見たことがあると思う。真ん中に酸素があって、両脇にVの字型に水素が二つ繋がっている。水の振動を語るとき、この形状が鍵となる。このVの字は実はたえず振動している。しかも、三種類(だったと思う)の振動の仕方をしている。一つはVの字の開き具合が振動している。二つ目は水素と酸素の距離が振動している。最後に、水素と酸素のねじれ具合が振動している(このあたり私の記憶もあやふやである)。とにかく、水分子には何種類かの振動する箇所がある。しかもそれらの振動はそれぞれ一定の周期で振動している。このうち一つの周期がマイクロ波の周期とぴったりと合う。ぴったりと合うと振動が活発になる。振動が活発になったことをここでは「エネルギーの吸収」と呼んでいる。

 イメージとしては、ブランコをこぐところを想像してほしい。慣れるとすぐに大きくブランコを揺らすことができるようになるが、ブランコを揺らすためには「タイミング」をうまくとらなければならない。タイミングがそのブランコの構造とぴったり合えば大きく揺れるし、タイミングが合わなければブランコは揺れない。水分子を振動させるためには、水分子の「タイミング」にあった周期を持つ電磁波を使わなければならず、それがたまたまマイクロ波だった。

 というか、私の説明も分かりづらい。

178ページ「ATPアデノシン3リン酸)をご存じだろうか」

 生物未履修の方はご存じでないことと思う。アデノシン3リン酸はここにも書かれているが、生物がエネルギーを作り出すためになくてはならない物質である。詳しい説明はしないが、分子(アデノシン3リン酸は分子である)は、分解したり結合したりするときに、熱(エネルギー)の放出と吸収がおこなわれる。化学の授業で「何と何がくっつくと何ジュールの熱量が……」などと計算したことがあるはずである。



 最後に、この本を読んだ私の感想を書く。

CSAはコンピュータと将棋の接点に興味を持つ人々によって1987年に設立された任意団体である。

http://www.computer-shogi.org/about_csa.html

 コンピュータ将棋協会が設立されたのは1987年。そして、「本将棋 内藤九段将棋秘伝」というファミコンソフトが発売されたのは1985年。おそろしく早い段階でファミコンソフトが開発されたことが分かる。私もこのソフトを小学生の頃に遊んだが、簡単にころころと負かされた。将棋に慣れた人に言わせれば「弱い」とのことだったが、素人にとってはおそろしく強いソフトだった。

 将棋については主に認知科学的な側面で興味はあったが、ボナンザが登場するまではコンピュータ将棋には全く興味がなかった。ボナンザが登場してから私はコンピュータ将棋のにわかファンになり、一般向けの本を何冊か読んだが、その感想としてあの内藤九段の将棋ソフトは(当時としては)信じられないほどに強いと感じられた。ファミコンは今のパソコンに比べればおそろしく計算速度が遅い。おそらく、あのソフトは三手先を読むのが精一杯だったことだろう(もしかしたら二手かもしれない)。三手先なら、強い小学生ならば読める手数である。それであの強さだったのだ。おそろしいことである。

 私はコンピュータ将棋の本を読んで、あらためて、当時のあのファミコンソフトの開発陣の執念を思い知らされた。