フレーム問題は解決済み -フレーム問題に見る、AI史の闇ー

フレーム問題に見る、AI史の闇

 

AIの歴史について調べていると、必ず出てくるのが人工知能最大の難問と言われる「フレーム問題」です。
AIセミナーなどに行っても、最初に必ず出てくる話が、このフレーム問題です。

フレーム問題の話が出てくるたび、「最大の難問と言われるけど、これって、どこが難問なの?」といつも思っていました。
「普通に考えれば簡単に解ける問題を、無理に難しくしているだけじゃないの?」と。
ところが、時代背景も考慮して、改めてフレーム問題について調べてみると、おぼろげに、その真の意味が見えてきました。
そこで、今回は、フレーム問題について取り上げてみます。

フレーム問題を提唱したのは、計算機科学者のジョン・マッカーシーで、1969年のことです。
フレーム問題の例は、いろいろあるようですが、一番有名なのが、哲学者のダニエル・デネットのロボットの話です。

それでは、さっそく、デネットのロボットの話を、wikipediaから以下に引用します。

 

状況として、洞窟の中にロボットを動かすバッテリーがあり、その上に時限爆弾が仕掛けられている。
このままでは爆弾が爆発してバッテリーが破壊され、ロボットはバッテリー交換ができなくなってしまうので、洞窟の中からバッテリーを取り出してこなくてはならない。
ロボットは、「洞窟からバッテリーを取り出してくること」を指示された。

人工知能ロボット1号機R1は、うまくプログラムされていたため、洞窟に入って無事にバッテリーを取り出すことができた。
しかし、1号機はバッテリーの上に爆弾が載っていることには気づいていたが、バッテリーを運ぶと爆弾も一緒に運び出してしまうことに気づかなかったため、洞窟から出た後に爆弾が爆発してしまった。
これは、1号機が、バッテリーを取り出すという目的については理解していたが、それによって副次的に発生する事項(バッテリーを取り出すと爆弾も同時に運んでしまうこと)について理解していなかったのが原因である。

そこで、目的を遂行するにあたって副次的に発生する事項も考慮する人工知能ロボット2号機R1-D1を開発した。
しかし、このロボットは、洞窟に入ってバッテリーの前に来たところで動作しなくなり、そのまま時限爆弾が作動してロボットは吹っ飛んでしまった。
2号機は、バッテリーの前で「このバッテリーを動かすと上にのった爆弾は爆発しないかどうか」「バッテリーを動かす前に爆弾を移動させないといけないか」「爆弾を動かそうとすると、天井が落ちてきたりしないか」「爆弾に近づくと壁の色が変わったりしないか」などなど、副次的に発生しうるあらゆる事項を考え始めてしまい、無限に思考し続けてしまったのである。これは、副次的に発生しうる事項というのが無限にあり、それら全てを考慮するには無限の計算時間を必要とするからである。

ただ、副次的に発生する事項といっても、「壁の色がかわったりしないか」などというのは、通常、考慮する必要がない。
そこで、目的を遂行するにあたって無関係な事項は考慮しないように改良した人工知能ロボット3号機R2-D1を開発した。
しかし、このロボットは、洞窟に入る前に動作しなくなった。3号機は、洞窟に入る前に、目的と無関係な事項を全て洗い出そうとして、無限に思考し続けてしまったのである。
これは、目的と無関係な事項というのも無限にあるため、それら全てを考慮するには無限の計算時間を必要とするからである。
事程左様に、人間のように判断することができるロボットR2-D2を作るのは難しい。

引用終わり

言いたいことは、何となくわかります。
解説などを読むと、現実世界の問題を解決するには、無限の可能性があり、すべて検討するわけにはいかないので、枠(フレーム)を当てはめて、関係のないこと物事を除外する必要がある。
ところが、どこがフレームの内(関係のあること)で、どこがフレームの外(関係のないこと)かを判断することができないので、結局、いつまでたっても問題が解決しないとのことのようです。

解説の意味は理解できますが、それでも、いくらでも解決方法はあるじゃないかと思っていました。
なんで爆弾をどけるのに、天井が落ちるとか、壁の色がかわるとか考える必要があるのかと。
そもそも、ここで想定しているデータベースは、どんなデータベースだろうかと。
リレーショナル・データベースなら、どんなSQL文を発行すれば、フレーム問題が生じるのか、ちょっと想像できませんでした。

また、爆弾が爆発するまでロボットが停止するなど、いったい、どんな設計をしているのかと。
ロボット制御用のOSなら、組み込み用のリアルタイムOSを使うはずですが、爆発物を扱うようなクリティカルな処理をするなら、最優先の割り込みでタイムアウトを設定するはずなのに、爆発するまで考え事をするとは・・・。

 

しかし、フレーム問題が提唱された時代背景を考えてみると、ようやく、ジョン・マッカーシーの言いたいことが見えてきました。
フレーム問題が提唱されたのは、先ほども書きましたが1969年のことです。
これは、第1次AIブームの終わり頃です。

調べてみると、リレーショナル・データベースが最初に出てきたのは、1974年で、最初のリアルタイムOSが生まれたのは1979年で、ジョン・マッカーシーは、そのようなものは全く想定していなかったようです。

それでは、どのようなものを想定していたのでしょう。
第1次AIブームの主流は、簡単な推論/探索です。迷路を解く人工知能などが有名でした。
迷路で分岐が現れると、順に分岐を探索し、行き止まりになると、元の分岐まで戻り、次の分岐を探索する。
このような手順をスタートから繰り返していけば、いずれ、ゴールに辿り着くのです。これが推論/探索です。

この推論/探索を想定して、先のロボットの話を読み解いてみましょう。
上に爆弾が乗ったバッテリを取ってくるという命題に対して、バッテリを動かせばどうなるか、爆弾を動かせばどうなるか、といった様々な分岐が考えられます。
副次的に発生する事項とは、迷路の分岐を想定しているのです。
そして、分岐した次には、さらなる分岐があるでしょう。
現実世界には、いくらでも違った方法が考えられるので、すべての分岐を探索するには無限の時間がかかります。
これが、ロボット2号機です。

2号機を改良した3号機も同様で、目的と無関係な分岐を探索しないようにしても、現実世界には、目的と無関係なものも無限に存在するので、探索に無限の時間がかかってしまうのです。

ジョン・マッカーシーが指摘したかったのは、このような推論/探索では、迷路のような単純な問題は解決できるかもしれないが、現実世界は複雑で、AIでは簡単に解決できないということのようです。

それでは、なぜ、そんなことを言い出したのか。
当時の時代背景を見てみましょう。

1950~60年代の第1次AIブームは、迷路などの問題をコンピュータで解くことが実証され、やがて、あらゆる問題をAIで解決できると期待され、国や企業から多額の投資を受けていました。
それは、まさにディープラーニングが登場した、現在の第3次AIブームと同じです。
ジョン・マッカーシーは、さしずめ、グーグルに買収され、囲碁の世界チャンピオンに勝ったAlphaGoを開発したディープマインド社のデミス・ハサビスCEOといったところでしょう。
しかし、迷路などの簡単な問題(トイ・プロブレム)は解決できたものの、現実問題では成果が表れず、1970年代に入ると、AI研究への出資が急激に無くなり、第1次AIブームが終了することになりました。

穿った見方をすれば、第1次AIブームのスターだったジョン・マッカーシーは、拡大するAIブームの期待と重圧に耐えきれず、自らAIブームを終了させるために、AIで、現実世界の課題を解決することは根本的に不可能だと証明するためにフレーム問題を提唱したのかもしれません。
他でもない、ジョン・マッカーシーが、AIは理論的に現実問題を解決できないと宣言したのですから、1970年代に入って、急速にAIブームが収束したわけです。
こういう背景を考えると、フレーム問題の不自然さも理解できます。
爆弾を移動させるのに、壁の色が変わるかまで考えるとか、現実問題を解決できないジョン・マッカーシーのいら立ちと必死さが伝わってきます。

 

それでは、第1次AIブームから50年以上経った現代なら、フレーム問題は解決できるでしょうか。
試しに解いてみましょう。

まず、ロボットは外部の状況を把握します。
これは、画像認識でできます。
洞窟の中で、バッテリの上に爆弾が載っていると認識します。
最新のAI技術では、写真に何が写っているかを判定するテストなら、人間より精度が高くなってきましたので、これは十分可能です。

次に、認識した物体から3Dモデルを生成します。洞窟の中で、バッテリの上に爆弾が載っている状況を3Dモデルで再現するわけです。
これも、現在の技術で問題なくできます。
物体を認識するとは、その物体に関する様々な情報も含まれています。
つまり、洞窟には天井や壁があるとか、洞窟の壁は何色かといったことです。
また、3Dモデルなので、物理シミュレーションもできます。
シミュレーションを行うと、バッテリを洞窟の外に移動させると、その上に載っている爆弾も移動することが確認できます。
ここから、そのままバッテリを移動してはダメだとわかります。

目的は、上に載っている爆弾を洞窟に残したまま、バッテリだけを洞窟の外に移動させることです。

ここで、目的達成までを、いくつかのステップに分割します。
まず、現在の状況は、バッテリの上に爆弾が載っています。

次に目的の状況です。
洞窟の外にバッテリがあって、洞窟の中に爆弾があります。

もし、爆弾がバッテリの上に載っていなければ、バッテリを移動させれば、バッテリだけを洞窟の外に持って行くことができます。
この、爆弾がバッテリの上に載ってない状況を中間状況とします。

次に、現在の状況と、中間状況を比較します。
すると、違いは、バッテリの上に爆弾が載っているか、載っていないかです。
つまり、バッテリの上に爆弾が載っている状況から、載っていない状況にすればいいのです。
バッテリの上に爆弾が載っている状況から、載っていない状況にするには、バッテリの上の爆弾をバッテリの外に移動させればいいわけです。
物体を移動させるには、ロボットのアームを使えば可能です。
ロボットのアームで、バッテリの上から外に爆弾を移動させれば中間状況になります。これで、バッテリだけを洞窟の外に持ち出すことができます。
ここまでを、シミュレーションによって確認できれば、あとは、シミュレーション通りに実際に行動するだけです。

どうでしょう?
なんの問題もありませんよね。
洞窟を、洞窟として認識しているので、洞窟の壁の色なども認識しています。ですが、バッテリを洞窟の外に出すのに、壁の色が変わるとか、天井が落ちないとか、目的と関係のないことを考える必要などありません。
ポイントは、探索範囲を、目的達成に必要な行動に絞ることです。
目的と関係のない、対象に関わるあらゆる副次的な要素をすべて考慮する必要はありません。
プログラムを作成するとき、普通は、そんな無駄なことはしません。

無理やりフレームを考えるとすれば、目的遂行に関する物がフレーム内の事であり、目的遂行に関係のない物が、フレーム外の事だと言えます。
フレームを考えたとしても、どこがフレーム内で、どこがフレーム外か、見極めるのが難しい問題ではありません。
人間が普通に考えるように、ロボットに考えさせれば、フレーム問題など生じないのです。

フレーム問題は、現実問題を解決できなかった第1次AIブームにおいて、なぜ、AIが現実問題を解決できないか無理やり説明するために作り出された問題なのです。
フレーム問題は、現実逃避のための、言い訳のための理論に過ぎなかったのです。

ところが、未だに、フレーム問題はAI最大の難問などと言われ続けています。
「AI(人工知能)には、絶対に解決できない『フレーム問題』という難問がある」というストーリーは確かに魅力的ですが、AIといえば、まずは「フレーム問題」と語りだすのは、そろそろ、終わりにしませんか?