AIブームの現状

松尾豊氏(以下、松尾):次に今AIがどういう状況にあるのかということをお話していきたいと思います。今、人工知能がブームになってきていますが、これは60年前から研究されている分野なんです。今回が3回目のブーム。1回目、2回目、3回目というブームで、それぞれテーマが違っています。

第1次AIブームは1950年代から60年代でした。そのときはどういうことが中心だったかというと、賢いということは例えば数学の問題が解けるとか将棋が強いとかそういうことじゃないか。要するに頭の回転が早いことが賢いということじゃないかと考えたんですね。

例えば(スライドを指して)ここに迷路の問題があります。スタートからゴールに行きます。これを人工知能に解かせたいときにどうするかというと、スタートをSと置きます。ゴールをGと置きます。途中の分岐点にAとかBとかCとか名前を付けていきます。

そうするとこういう問題の表現になるんですけれども、次にこれを探索木に直します。Sから始めて、Sから行けるところはAかDです。Aに行ったら、行けるところはBかCです。BかCと書くと。

というふうに書いていくと探索木のどこかでGが出てきます。一旦Gが出てくると逆向きに辿っていくと答えになっているということで、迷路が解けました。ということなんですけれども。

これをいろんなことに応用する。例えば今東大にいます。そこから新宿に行きたいといったときに、電車はいろいろあります。本郷3丁目でもいいし根津でもいいし東大前でもいいし。

どういうふうに行くかというと、今いる状態から次になにをしたらどういう状態に変わるのかというのをまた書いていけば、そのうちどこかで新宿にいる状態が出てくるわけです。そうするとこれを逆向きに辿れば新宿まで行く経路になっている。

こういういろんなパズルが解けたり、ロボットの運動・行動の計画を立てられたり、いろんなことができるのがわかってきた。ということで「これはすごい」と。

これをやっていくと例えばチェスのプログラムができたり、数学の定理もだんだん展開していきますから、「おぉ、これいろいろできるじゃん。すごい!」ということになって、すごく盛り上がったんです。

第一次ブームの終焉と第二次ブームの到来

ところがやっているうちに「ゲームとかそういうものは上手なんだけど、実際に役に立つものってあんまりできないよね」と。例えば病気の診断をするとか、重要なんだけどぜんぜんできないよね、というのがわかってきた。ということで多くの研究者がガッカリして、世の中がガッカリしてブームが去ったというのが第1次AIブームだったんです。

第2次AIブームは、賢いとは頭の回転が早いことじゃない。むしろ知識をたくさん知ってるということでしょと。物知りだということが賢いということでしょ、ということで、知識を入れるというアプローチが出てきました。

有名なのはイライザという対話のシステムがあって、これは知識を入れるまでいかないんですが、どういうのかと言うと。例えば、「My head hurts」「頭が痛い」とユーザーがタイプすると、「Why do you say your head hurts?(なんで頭が痛いの?)」と聞き返してくるんですね。

それから「My mother hates me(お母さんが自分のことを嫌いみたいなんだ)」と言うと、「Who else hates you?(ほかに誰が嫌いなの?)」って聞き返してくるんですね。

要するに、Xと言うと、「Why X?」と返すとか、「Who else X?」と返すというふうに非常に単純なパターンを書いておくだけで対話が成立しちゃう。こういうシステムができて多くの人が熱中しました。

もうちょっと賢いものとして有名なものにMycin(マイシン)というのがあります。これは病気の血液疾患を診断するプログラムです。

例えばこういうルールがたくさんあるんですが、52番のルールの例でIf sight culture is blood、細菌の培地、細菌がどこにいるか、血液にいてグラム染色の結果がネガティブで細菌の形が棒状だったら、これを緑膿菌として判定しなさい、というルールを書くんですね。

コンピュータに定義を覚えさせる

こういうルールを500個くらい書くと、だいたい血液疾患は診断できるようになるんですね。こういうのができて、「おぉ、すごい」と。こういうのはエキスパートシステムと呼ばれました。当時でも研修医のお医者さんの精度を上回ったと言われています。ですからこういうふうに知識を入れていくと、確かに賢くなった。

精度は研修医まではいくんだけれども、もうちょっと先へ行こうと思うとなにが出てくるか。例えば患者さんが「お腹が痛い」と言いました。「お腹って何だ?」ということをコンピュータに理解させるには、「動物には頭と足と手とお腹があって、人間は動物で……」ということを書いていかないといけないわけですね。

要するに常識的に人が知っていることをコンピュータに教えないといけないんです。これがすごく大変で。意味ネットワークとか言われますけれども。それから、Cyc(サイク)というプロジェクトが出てきて。これは人間が知っている一般常識をどんどんコンピュータに入れていこうというプロジェクトで、1984年から始まりました。

どういうことを書くかというと、例えば「ビル・クリントンはアメリカの大統領の1人です」とか「すべての木は植物です」とか「パリはフランスの首都です」とか。こういうのをひたすら書いていきます。ところが、これが何年やっても終わらないんです。20年書き続けても終わらない(笑)。すごく大変だということがわかってきた。

それ以外にも、例えば機械翻訳、自動翻訳ってなかなかできないんですが、これはなぜかというと、「He saw a woman in the garden with a telescope」という文があります。これはどう訳すかというと、普通は「彼は庭にいる女性を望遠鏡で見た」と訳すんです。

ところが文法的にはwith a telescopeはwomanにかかってもいいので、女の人が庭で望遠鏡を持っててもいいんです。それからin the gardenがheにかかってもいいので、男の人が庭で見ててもいいんです。

だけどなんとなく女の人が望遠鏡を持って庭にいるのは変だなという気がしますよね。どちらかと言うと、男が庭にいる女性を望遠鏡で覗くっていうシーンのほうがありそうなのでそう訳しちゃうわけです。

これを正しく訳そうと思うと、男の人が望遠鏡で覗いている確率は何パーセントで、女性が覗いている確率は何パーセントなのか。庭にいるのは男性の確率が何パーセント、女性の確率が何パーセントあるのか。

これは言い出すとキリがなくて、外国人が庭にいる確率は何パーセントなのか、お相撲さんが庭にいる確率は何パーセントなのか。ありとあらゆる確率を知っておかないと訳せないわけです。こういうのはほとんど不可能だということがわかってきました。

フレーム問題と第二次ブーム

ほかにもフレーム問題といって、ロボットを上手に動かそうとすると、どうしてもロボットが変な動きをしてしまう。一例だけ言うと、ロボットに「バッテリーを取ってきなさい」という命令をすると、ロボットはバッテリーが載っているワゴンを引いてきた。ところがこの上には爆弾も乗っていたので、爆弾も一緒に引いてきて爆発しちゃった。というのがロボット1号。

ロボット2号は、ワゴンを引いてきたら、その上に載っているものも一緒に引いてきちゃうんだから、自分が行動すると一緒に何が起こるのかを計算してから行動しなさいよと言った。

バッテリーのところまで行ってワゴンを引こうとして、「ワゴンを引くと爆弾も一緒に引っ張ってきちゃうのか?」だけじゃなくて、ワゴンを引くと、天井の色が変わるのか? 天井が落ちてこないか? 床が抜けないか? ドアが開いて強盗が入って来ないか? いろんなことを計算し始めてその場で爆発しちゃった、というのがロボット2号。

ロボット3号は、「天井とか落ちてこないよ」と。「壁の色も変わらないよ」と。「今からやるのに関連している知識だけ使って考えなさい」と。それ以外は考えなくていいからってやったんですけど。

そうするとロボット3号はまずバッテリーを取りに行こうとする前に、バッテリーを取りに行くということと壁の色は関係あるのか? 地球の重力は関係あるのか? いろんなことを計算し始めて動き出さなかったというのがロボット3号なんですね。

これがフレーム問題の例として言われるんですが、こういうことを人間はなぜかすごく上手にやっちゃうわけですね。結局第2次AIブームというのは知識を入れれば確かに賢くなったけれど、ところがそんなに簡単ではなかった。

人間はなぜかわからないけれどもすごく上手に知識を扱っているし、上手に行動できる。単に知識を書けばいいというものではなかったということがわかってきたのが第2次AIブームのころ。そのあとまた冬の時代が来たんですね。

将棋AIに学ぶ第3次ブーム

今度の第3次AIブームは、機械学習、ディープラーニングが中心です。それはどういうふうにやるかというと、学習させるわけです。

例えば将棋で学習させた場合どうするかというと、プロ棋士の人がどう指しているのかを過去の棋譜データから学習させるということをやります。プロ棋士の人がこういう局面でこういう手を指した、というデータがたくさん与えられると、この関係性を学習していって「こういう局面だとこういう手を指せばいいんだ」ということを自動的に出せるようになるという仕組みなんですね。

普通、将棋は40個駒がありますから、ある局面を表すのに40個の変数で表すことが普通です。ところが最近の強い将棋のプログラムは、変数の数が数百万以上あるんです。

なんで数百万以上あるかというと、3駒の相対的な位置関係を全部変数にするんです。例えば飛車と金と歩があって、この3つでなにかの影響を及ぼしている場合もありますから、3駒の相対的な位置関係というのを変数にしていく。そうすると全部で数百万になる。こうやったほうが強くなるんです。

ところがこの3駒の相対的な位置関係を使えばいいって気づいたのは人間なんですね。研究者の人が数年前にそれに気づいて強くなったということで、機械学習といっても実は変数を作っているのは人間なんです。上手に変数が作れると精度が上がるということなんですね。