Muranaga's View

読書、美術鑑賞、ときにビジネスの日々

人工知能もここまで進歩したのか:IBM の Watson

米国の著名なクイズ番組 Jeopardy! に、IBM のコンピュータ Watson が挑戦、人間のクイズ王を破った。その映像を観ていると、自然言語で応答する人工知能(AI = Artificial Intelligence)もここまで進歩したのか、と感慨深い。

Carnegie Mellon 大学(CMU)にいる若い日本人研究者、嶋英樹さん(嶋さんとは、CMU の日本語環境を整備するコンピュータの新旧システム管理者のつながりで知り合った)が、IBMインターンで Watson のコードを書いていたということもあって、彼に教わって Watson の練習マッチの映像を観たのだが、びっくりしてしまった。何だこれは?今の AI でここまで出来るのか!

僕は大学時代に AI、それも自然言語処理に興味を持ち、卒論では英語の構文解析のプログラムを書いた。会社の研究所に入ってからも、オフィスシステムを日本語で操作することをめざして、日本語解析や知識表現のための言語を開発したものである。当時はエキスパートシステムと言って、非常に領域を限定すれば、ルールベースの推論でコンピュータが答えを導き出すシステムが一部成功を収めたこともあって、AI の商用化がブームになった頃であった。第五世代コンピュータ・プロジェクトもこの頃に発足した。百科事典の知識を全部入れよう、と考える研究者もいた(Cyc プロジェクト)。世界中の研究者が AI の基礎研究・応用研究・実用化に取り組んだ。

しかし残念ながら、エキスパートシステムより進んだ形での、実用的な応用システムはなかなか作られなかった。より人間のレベルに近い自然言語処理能力・推論能力をコンピュータに持たせるのは難しかった。そして AI 研究のブームは去っていった。当時は半分冗談交じりに「AI 実現まで 50年くらいかかる。」と言われたものである。

あれから25年。四半世紀を経て、IBM 研究所の DeepQA(質問応答)プロジェクトの成果として、Watson が開発された。2億ページ(100万冊)もの知識を蓄え、人間のクイズ王よりも速く、正しい答えにたどり着く Watson。僕らが夢見ていた自然言語の応答システムが、目の前で動いている!

チェス(IBMDeep Blue が最初に人間のチャンピオンに勝ったのは 1996年2月。当時僕は CMU に滞在しており、計算機科学科でも話題になった)や将棋(「情報処理 2011年2月号」に「あから2010」の特集あり)は、コンピュータが人間を負かすところまで来た。そしてクイズと言うゲームでも。Watson が素晴らしいのは、大量の知識からの検索を行い、自然言語で応答していることだ。25年間、地道に研究され、積み上げられてきた自然言語処理・知識処理の技術が、著名なクイズ番組に出演と言う非常に広告効果のある形で、結実したと言えるだろう。Deep Blue といい、Watson といい、IBM の AI 研究の目標(マイルストーン)設定や、その成果のプロモーションの見事さには感心する。

それにしても Watson の中身、アルゴリズムはどうなっているのだろう?素人なりに想像してみよう。

Watson は、クイズ形式の質問応答を行う知的システムだ。クイズの質問を自然言語解析し、予め構築された大量の知識データベースから答の候補を探し出し、それを音声合成で発話する。もしこういうシステムを作るとしたら、どんなやり方が考えられるだろう?

目的志向・アプリケーション特有のやり方で構成するとしたら、たとえば以下のような構成になるのではなかろうか。まず前もって人間の開発者が質問(クイズ)の類型化・パターン化を行い、そのパターンをもとに検索できる知識データベースの表現形式を決める。質問の自然言語文を解析して、それを予め類型化してあったパターンへ変換、そのパターンから知識データベースを検索する。検索自体は大規模並列処理で動かし高速化を実現、複数の候補の中から何らかの確度で重みづけした中で最も点数の高いものを回答とし、それを音声合成技術で出力する。

もちろん Jeopardy! というクイズゲームに特有の戦略も組み込まれなければならない。また Watson が自身の答にどれだけ「自信を持って」いるのかの指標、そして質問に答えるにあたって間違った場合のリスク評価なども必要だろう。

勝手に想像してみたけど、本当はどのような作りになっているのだろう?僕の想像は、かなりアプリケーションに特化したアプローチだが、DeepQA プロジェクトにおいては、自然言語解析・応答、知識データベースの構造・検索については、かなり汎用的なやり方で開発されていると思われる。どこまでが汎用で、どこからがアプリケーション・領域に固有なのか。

僕が特に興味を感じるのは、知識データベースがどのように構造化され、表現されているのかということである。どのようにして 2億ページもの知識を取り入れたのだろう?機械学習というほどではないかもしれないが、自動的に取り込んで構造化するような仕組みが必要なはずである。すべてを人間の手でやったとは思えない。どうやったのだろうか?ここでも自然言語から知識表現への構造化が機械的に行われたのだろうか?そうだとするとその際に文献の中の自然言語の持つ曖昧性、文脈依存性はどう解決されているのだろう?さまざまな疑問がむくむくと頭に浮かんでくる。

誰か Watson の中身の処理について、わかり易く教えてくれないかなぁ?前述の嶋さんが日本の雑誌に解説記事を寄稿されるようなので、楽しみに待つことにしよう。ちなみに嶋さんが Watson について語っている映像は以下の通り(1分過ぎくらいから):

また英語だと Wikipedia のページからかなりのリソースにアクセスすることができる。中でも以下は面白そうだ。