シンボルグラウンディング問題(記号接地問題)が解決しました1

シンボルグラウンディング問題(記号接地問題)が解決しました1

 

今日は、AIロボット、ロボ太の初めてのアルバイトの日です。
ロボ太は、お好み焼き屋でアルバイトをすることにしました。
さっそく、二人連れのお客さんがやってきました。

ロボ太 「いらっしゃいませ」
客  「僕は、焼きそば。こいつは、お好み焼き、ブタ玉で。」

ロボ太は、いきなり焦りました。
「僕は、焼きそば」と自己紹介したということは、この人は、「焼きそば」なのか?!
見た目は人間なのに、焼きそばとは。

で、もう一人は、お好み焼きなのか。
しかも、ブタ玉!
どうも、画像認識機能にバグがあるようだ。
博士にいって、修正してもらわねば。

客 「それから、お好み焼きには、マヨネーズを、たっぷりかけてちょうだい」
ロボ太 「えっ、お好み焼きさんに、マヨネーズをかけるのですか?」
客 「うん。端までたっぷりかけてあげてよ」
変な要求だなぁと思いつつ、ロボ太はマヨネーズを取り出し、もう一人の客の頭の上からたっぷりとマヨネーズをかけ始めました・・・

 

店長 「ロボ太!、おまえはクビだー!

 

さて、どうしてこんなことになってしまったのでしょう。
原因は、外部世界にある物と、ロボ太の頭の中に思い描いたものが正確に結びつかなかったからです。
この現象のことを「シンボルグラウンディング問題」または「記号接地問題」と呼びます。
これは、「フレーム問題」と並んで、AIの未解決問題として有名です。
今回は、この、シンボルグラウンディング問題について説明いたしましょう。

シンボルグラウンディング問題が起こるのは、外部世界にある物を、内部で記号に置き換えて処理するシステムに限ります。
したがって、ライントレーサーのように、センサーからの信号に直接反応するだけのロボットでは、シンボルグラウンディング問題は起こりません。
ライントレーサーとは、紙に描かれたラインに沿って走行するマイコンロボットのことです(参考:「主観と客観」)。

人は、外部世界にある物に名前を付けます。
名前を付けた単語、これは、一種の記号です。
名前を言えば、その物を頭の中でイメージし、操作することができます。
これが記号処理です。
外の世界にある物と、内部の記号とがうまく結びつかない現象、これがシンボルグラウンディング問題(記号接地問題)です。

もう少し詳しく説明します。
人と同じように、AIも、外部世界にある物を、内部で単語で管理します。
言葉の意味をどう定義するか」で説明したように、ロボマインド・プロジェクトでは、単語を、「概念」と「Has-a」の関係で管理します。
「Has-a」の関係とは、何が何を持つという関係です。

「家」は、「ドア」、「屋根」、「部屋」を持っていて、「部屋」は、「床」、「天井」、「壁」を持っていて、「壁」は「窓」を持つと管理します。
また、位置関係も管理され、「家」の「上」には「屋根」、「家」の「下」には「地面」、「部屋」の「上」には「天井」、「下」には「床」とデータベースに登録されます。

このようにデータを記憶することにより、「部屋の中で、上を見ると何が見えますか?」という質問に、「天井が見えます」と答えることができます。
しかし、「部屋の窓から外を見ると、上には何がみえますか?」という質問には、「部屋の窓の外」の「上」というデータが存在しないので、答えることができません。
これに答えることができるようにするには、「窓の外は上が空、下が地面」とデータベースに登録する必要があります。

また、「部屋のドアから廊下に出ると、上には何が見えますか?」と質問されると、これにも答えることができません。
これに答えることができるようにするには、「部屋のドアの外の廊下の上は天井」とデータベースに登録する必要があります。

こんな簡単な会話をするだけでも、膨大なデータを登録しなければならないのです。
人と普通に会話ができるようにするには、無限に近い膨大なデータベースが必要になるわけです。
最近のAIは、画像認識から自動車の運転まで、人間ができることの多くができるようになってきましたが、未だに、簡単な日常会話すらできない原因は、ここにあります。

 

ロボマインド・プロジェクトでも、同じ問題に直面しました。
我々、人間は、「ドアの外の廊下の上には天井がある」などと覚えているわけではありません。
それでは、どうやって、認識しているのでしょう?

頭の中で、部屋からドアを開けて廊下に出たところを想像するだけです。
廊下に出れば、上には天井がありますよね。

それでは、これを、コンピュータで実現するにはどうすればいいでしょうか?
それには、家の3DCGモデルを作れば実現できます。
データベースを使うのでなく、実際に見えるままの姿を3Dモデルで作成するのです。


3Dモデルですから、外からみた家の姿だけでなく、家の中に入れば、「廊下」や「部屋」も見えます。
「部屋」に入れば、「床」や「天井」や「壁」があり、「壁」には「窓」があり、「窓」から外が見えます。
このような3Dデータを持っていれば、「窓から何がみえますか?」といった質問にも答えることができます。
つまり、データベースでなく、3Dモデルを使うことで、シンボルグラウンディング問題を解決することができるのです。

シンボルグラウンディング問題が起こる原因は、人間が頭の中で想像している物とは異なる「データベース」という形式で、現実世界を無理やり管理しようとしたから起こったのです。

それでは、なぜ、そのような人間の理解とは異なる形で理解しようとしたのでしょうか?
それは、データベースを使うのが簡単だからです。
コンピュータの世界では、データを管理するのに、データベースを使うのが当然だからです。
それだけの理由です。

しかし、原因が分かったからと言って、簡単に解決できるものではありませんでした。
僕も、なんとかデータベースだけで、現実の3次元世界を正確に認識できないかと、かなり試行錯誤していました。

そこまでしてデータベースを使い続けたのは、プログラムの開発環境に原因があります。
データベースを使うような一般的なプログラムと、3Dモデルのようなプログラムとでは、同じプログラムでも全く別物なのです。
3D物理シミュレーションというものが存在することは知っていましたが、普通はゲームで使われるもので、文書を扱う一般的なビジネス用プログラムで扱うことはまずありません。

それが、調べたところ、最近は、3Dゲーム開発環境がかなり整ってきて、3D物理シミュレーションを使うことも可能なことがわかってきました。
専門的な話をすると、ロボマインド・プロジェクトは、C#というプログラミング言語を使っていて、3Dシミュレーションの開発には、Unityという3Dゲーム開発環境を使います。

自然言語処理のコア部分は、C#で開発したプログラムで動作し、3次元空間の操作が必要な部分は、Unityのプログラムを呼び出します。
「窓の外には何が見えますか?」という文を読むと、C#側のプログラムで、この文を解析し、3次元世界の話だと判断すると、Unity側のプログラムを呼び出します。
Unity側のプログラムは、家の3Dモデルを構築し、窓の外に存在するオブジェクトを取得し、C#側のプログラムに返します。
これによって、C#側のプログラムで、質問に答えることができます。

このようにして、人間が頭の中でイメージしていることと同じことをコンピュータ内でシミュレーションすることができます。
これにより、ようやく、シンボルグラウンディング問題の解決の目途が立ってきたのです。

逆に言えば、シンボルグラウンディング問題は、3Dゲーム開発環境が整ってきた現代だから解決できると言えます。
1960年代の第1次AIブームや、1980年代の第2次AIブームでは、アイデアはあったとしても、技術的に難しかったといえるのです。

 

人間の頭の中でイメージすることと同じことを3Dモデルでコンピュータ内に構築することで、シンボルグラウンディング問題が解決しましたが、それは、3次元の理解に限られます。
では、3次元以外の理解は、どうでしょう?

物理的に存在するものに限らず、「感情」といった物でも、人が頭の中で操作するものと同じモデルをコンピュータ内に構築し、操作することで、シンボルグラウンディング問題が生じることなく、理解することが可能となります。
この感情の抽出という処理は、ロボマインド・プロジェクトで中核をなす部分ですが、この部分は、データベースを使って比較的簡単に実現できるのです。
日常会話で一番難しいのは、実は、感情の抽出より、それ以前の文の意味を理解する部分なのです。

たとえば、
「昨日の夜、窓から外を見たら、流れ星が見えたよ」
という会話の意味理解を考えてみましょう。

「流れ星」は、「珍しい」「美しい」「プラスの価値がある」とデータベースに登録さえしていれば、「よかったね」「きれいだった?」と答えれば自然な会話が成立します。

その前の文の「窓の外を見たら」の意味は、どう考えたらいいでしょうか?
特に、何も問題ないですよね。

それでは、
「昨日、床から天井を見たら、流れ星が見えたよ」
と言われれば、どうでしょう?

「流れ星」の話以前に、「床から天井を見たって、どういうこと?」となりますよね。
これが指摘できるということは、「窓の外を見る」は問題なくて、「床から天井を見る」はおかしいと判断できているということです。

人が、当たり前に処理している3次元空間の理解。
これがシンボルグラウンディング問題の本質なのです。

次回「シンボルグラウンディング問題が解決しました2」では、シンボルグラウンディング問題が最初に提示された「シマウマ問題」をいかに解決するかについて説明します。