コンピュータ将棋とgoogleと自動音声認識の機械学習に関して。

 本題に入る前に宣伝から入る。電気通信大学の学園祭期間中に「5五将棋大会」なるものが開かれるそうである。詳しくはhttp://minerva.cs.uec.ac.jp/~uec55/を見てください(この宣伝を書くためだけに、このエントリのアップロードの予定を繰り上げた。本当は年明けあたりにアップロードするつもりだった)。

 さて先日、ボナンザとコンピュータ将棋に関する話題が著名なブログに採り上げられたということで、コンピュータ将棋協会のブログの書き手が素早くエントリを書いた。私が特に重要だと思った部分はここである。

棋譜データを解析した結果をコンピュータの思考に反映させる、という手法は、ボナンザが始めたものではなく、ゲームプログラミングでは古典的なテーマです。人工知能分野一般の用語を使うと、これは機械学習の一応用、ということになります。

http://www.computer-shogi.org/blog/watanabe_vs_bonanza_404_machine_learning_not_found/

 コンピュータ将棋が人間の棋譜を読んで自動学習するということに関して、「ボナンザが初」とその著名なブログで書かれてしまった。それに対する専門家からの返答である。「ボナンザが初ではない」ということを明言している。

 ゲームプログラミングでも古典的なテーマであったことは、実は私も知らなかったのだが、「人工知能一般」の古典的なテーマであったことは知っている。引用元では、コンピュータ将棋の自動学習を機械学習の一種と位置づけている。ここで少しボナンザを例にとってコンピュータ将棋の機械学習について簡単に説明をする。

 コンピュータ将棋は、複数の指し手の候補に対して機械が自動的に「評価」を下すことによって、本当に指す手が決まる。「評価」の最も高い手を機械に指させるのである。当然のことである。ところで、この「評価」というのはコンピュータの内部では数値で表されている。この「評価値」をどのように計算するのかがコンピュータ将棋の全てである。そして、おそらくここまでは誰でも分かっていることだと思う。

 この「評価値」を求めるために、コンピュータ将棋(およびその他の様々なボードゲーム)では、「先読み」と「局面評価」をおこなっている。「先読み」というのは、人間でいうところの「あーきて、こーきて、こうくるから、こうさして、そうするとこうなる」のようなものとほぼ同じと思ってよい(多少違うが)。一方の「局面評価」は先読みした結果の「そうするとこうなる」の局面が「どれくらい好ましい局面であるのか」を示す指標である。そして、ボナンザが自動学習をしたのは「局面評価」の「評価基準」である。

 一般に何かの評価値を計算するためには評価基準が必要である。フィギュアスケートも(私は詳しくないが)ジャンプに関する点数が細かく決められていたり、スピンに関する点数が細かく決められていたりする。人間ですら数値的な評価をするためには採点基準が必要なのだから、コンピュータが評価をするためには相当かっちりとした評価基準が必要だろうということは想像できると思う。

 では、かっちりとした評価基準というのは具体的にどのようなものなのか。まず最も原始的なものとして、「歩1枚につき○○点」「金1枚につき○○点」といった駒の枚数に対する得点が挙げられる(これを「駒割」と呼ぶ)。そのほかにも「玉の周囲八方に金がいたら○○点」などという評価基準も考えられる。基本的に評価基準は「△△という条件が成立したら○○点」というかたちで機械には与えられる。プログラミングをかじったことのある人なら、

 if(条件){score+=点数;}

 ということを言っているということが分かると思う。この「条件」と「点数」の組み合わせで「評価基準」はできている。ところで、ここまではまだ「機械学習」の話はしていない。

 機械学習というのはこの「点数」の部分を機械に自動的に学習させることをいうことが多い(もちろん例外はあるし、方法論の例外を作ることがどんな研究でも重要である)。ボナンザは「条件」の部分は作者である保木氏本人が手動で与え、「点数」のみを自動学習させている(はずである。間違っていたら誰か訂正をお願いします)。そしてこの「点数」を人間の棋譜から学習させている(どのように学習をしているのかということについては数学的に難しいので書かない)。

 「機械学習」と書くとなにやらものすごいことのようにも聞こえるが、要するに、これまで人間のやっていたパラメータ(点数)調整を機械に任せたに過ぎない(ただし、「機械学習」という概念が生み出されたこと自体はかなり革新的なことである)。何度も書くが、「機械学習」そのものはかなり昔から存在する概念である。

 蛇足であるが、URLの"machine learning"というのは「機械学習」という意味である。また、ボナンザの「条件」は保木氏によれば10000以上だそうである(私も試してみたが、適当に作ると簡単に10000は超える)。

 実は、ここまでが本日の日記の予備知識である。ここからが本題である。

 コンピュータ将棋協会のブログは、この機械学習に使われたデータの量(棋譜の数)について、次のような見解を示している。

6万局のデータそれ自身の実質的な情報量はせいぜい6メガバイト程度であり、確かに電脳にとって稀少な量ですが、機械学習、もしくはデータマイニングの観点からは、もう充分に飽和に近づいている量である、とも推測できます。

 簡単にいえば「今のデータ量で充分かも」ということである。私もそう思う。乱暴な計算をしてしまえば、60000局÷10000パラメータ=6なので、一つのパラメータにつき6局あることになり、1局は約100手からなるので一つのパラメータにつき600局面のデータが存在する(これは本当に乱暴すぎる計算で、データ量の充分さを評価する尺度としてはかなりお粗末なのだが、とりあえずの目安である)。様々な経験から言って、6万局というのは充分だろうなあと思う。このあたりの議論を私が適当に進めているのは、語りたいことがその先にあるからである。

 語りたいことがあるなどと書きつつ、ここで唐突に自動音声認識の話を始める。コンピュータ将棋の本格的な機械学習の歴史はおそらく始まったばかりなのだろうと思う。一方、私の専門である自動音声認識は、もう二十年以上も機械学習をおこなっている。機械学習を使っているという点では、コンピュータ将棋よりも自動音声認識の方が先輩である。

 自動音声認識の分野でも初めは問題の分析から入った。将棋とはかなり異なるが、まずは「声にはどんな性質があるのか」といったことを調べることから入った。60年くらい前のことである。その後、声の性質が分かってくると、かなり早い段階から「機械学習」が使われるようになる。

 自動音声認識というのはパラメータのかたまりである。詳しい説明は省くが、その声がどのような文字に対応するのかを判別するために、単純なif文などではなく、「混合ガウス分布」「隠れマルコフモデル」といった複雑なモデルを用いており、そこには膨大なパラメータが存在する。そのパラメータを全て手作業で調節しているわけにはいかないので、機械に自動学習させる必要性がかなり早期からあった。

 20年ほど前にすでに現在使われている自動音声認識の技術はかなり出そろっており、そこから10年ほどかけてひたすら「機械学習」のための「データ集め」に力が注がれた。そして、約10年ほど前に、ほぼ現状に近い性能の自動音声認識器ができた。

 ここに重要な問題がある。「では、その後の10年は何をしていたのか」ということである。私に言わせれば、何もできていない(例外はある。後日改めて書くが、革新的な概念を発表している日本人がいる。ただし、その功績が肯定的に認められているとは言いがたい)。2007年10月19日に情報処理学会主催の音声言語情報処理研究会という学会が開かれたのであるが、そこでは「もはや自動音声認識性能はこれ以上向上しない」という趣旨の発言がなされたほどである。自動音声認識技術の性能は、まだ、人間に遠く及ばないにもかかわらずである。もちろん、技術革新をしようとしている人はいるとは思うのだが、「技術革新をしようとしている人が少ない」「成果が出ていない」という二つの理由により、技術革新の話は一つの例外を除いて聞こえてこない。

 実は、ここからが私の主張なのだけれど、自動音声認識技術が発展しなくなった一つの原因は中途半端に成功してしまったことにあると思う。自動音声認識技術は、「データ集め」をした結果、中途半端に成功した。そこからちまちまとそのデータをどのように利用するかという研究はされていたし、ほかにどのようなデータが必要かという議論もされていたが、「根本的なところを振り返る」ということが(雰囲気的に)しづらくなった。何かしらの危機感がこの分野にあれば、「ちょっと根本的なところから考えてみましょう」という雰囲気になるとは思うのだけれど、技術的な危機感がないので「根本的なところから考える奴はうざい」という雰囲気が主流になっている。代わりに、「自動音声認識はなぜ使ってもらえないのか」という議論が2007年10月19日の研究会ではなされていた。ヒューマンインタフェースの観点からすれば、それも根本的で重要な議論であるとは思うのだけれど、その議論をするくらいだったら、自動音声認識技術そのものに関しても根本的なところからの議論に積極的になってほしいところである。

 「機械学習」による「中途半端な成功」によって自動音声認識の分野では「根本的な議論」がしづらくなってしまっている、というのが私の現状認識である。

 そして、コンピュータ将棋の話に戻る。コンピュータ将棋は、今、重要な岐路に立たされているのではないかと感じる。自動音声認識の分野が10年前に通過した「機械学習による中途半端な成功」がなされたところだからである(渡辺竜王に負けておいて「大成功」とは言えないだろう)。もしこれから先、コンピュータ将棋の分野でも「根本的な議論」がなされなくなったら悲しいことである。

 著名なブログに書かれていた以下の文章は、「データを集めればそれでよい」という主張をしている。この主張は現在の自動音声認識の重鎮たちの主張と似ている。

「プログラムを強くするにはどうしたらよいか」ということを発見したに等しいのだ。

 そのためには、過去の棋譜をどんどんプログラムに食わせればいい。プログラムは、食えば食うだけ強くなる。

http://blog.livedoor.jp/dankogai/archives/50942633.html

 もし、同様の主張がコンピュータ将棋の分野でまかり通るようになってしまったら危険である。そして、その危険な状況に陥るおそれは少なくないと思う。自動音声認識の研究者も初めから「データを集めればいい」と思っていたわけではないだろう。だいたい次のような思考経路を辿っていったはずである。「どのようなデータを集めればよいだろうか」→「そのデータからどのような種類のパラメータを抽出すればよいだろうか」→「まだ性能は充分でないのは抽出するパラメータの種類が悪いからだ」→「どうやっても性能が上がらない」→「もう手をつけるべき部分がなくなった」→「やっぱり人間には勝てないね」。その誤りは、「大規模データを使わねば研究ができない」という固定観念にある。

 コンピュータ将棋もこれから、(専門用語で書くが)「特徴量の検討」「強化学習の導入」「学習理論の検討」などを一通りおこなうことになると思う。そのときに(余計なお世話だろうが)根本的な部分にいつでも立ち戻れるような学会の態勢にしておいてほしいと思う。

 最後に、googleについて簡単に触れる。今や「大規模データベース」といえばgoogleであるが、グーグルはそもそも会社の理念からして「世界中の知識を収集して使いやすくすること」が目的であるので、上記のような危険性はほとんどない。現在も目的に従って着実に世界中の知識を収集している。「音声認識・将棋」と「グーグル」では、データベースに関する立ち位置がまるで異なるので、データベースに関してはアナロジーを適用することはできない。

 一つだけつけ加えておく。私は「機械学習そのもの」は否定していない。ただ、「機械学習」は終着駅ではなく、むしろ「その先」があるということを忘れてほしくないだけである。