ロボマインド・プロジェクト、第214弾!
こんにちは、ロボマインドの田方です。
さて、前回は、マインド・エンジンで最も重要なのは、仮想世界だって話をしました。
仮想世界というのは、人間が認知する世界のモデルです。
たとえば、この目に見える世界は、3次元世界です。
人は、こういった仮想世界を通じて世界を認識します。
だから、コンピュータで言葉や文の意味を理解するには、仮想世界を作る必要があるんです。
それをやってるのが、マインド・エンジンです。
この話は、今まで、散々してきたんですけど、じつは、重要な説明が抜けてたんですよ。
仮想世界で世界を認識できても、それは、まだ、動物レベルの意識なんです。
それだけじゃ、犬やチンパンジーの心にしかなりません。
じゃぁ、人間と動物の心の最大の違いって何でしょう?
それは、人間は考えることができるってことです。
動物は、訓練すれば、教えた通りに動くことはできます。
でも、何でそうなるのとか、理屈や原因を考えることはできません。
つまり、人間は、原因と結果を理解してるわけです。
簡単な例で考えてみます。
たとえば、手にリンゴを持ってるとします。
手を放すと、リンゴが下に落ちました。
さて、じゃぁ、リンゴは、なんで落ちたでしょう?
そんなの、手を放したからに決まってますよね。
何を当たり前のこと聞くのって思ってますよね。
違うんですよ。
いっつも言ってますけど、当たり前の事ほど、注意しないといけないんですよ。
当たり前のことができる凄さに気づいてほしいんですよ。
どこが凄いかって言うと、何かが起こった時、その原因を考えることができるってことです。
人類は、その機能を獲得したんですよ。
原因、結果って見方で世界を認識できるようになったわけです。
ただ漫然と、世界を眺めてるのとは、明らかに違います。
これが、どんだけ、凄いことかわかりますか?
人類学では、人間は道具を発明して、文明を発展させてきたとかって言います。
違うんですよ。
重要なのは、そこじゃないんですよ。
重要なのは、その前です。
物事には原因があるって視点で世界を認識できるようになったんです。
理屈で考えることができるようになったんです。
それができたから、道具を発明できたんですよ。
文明を発展させることができたんですよ。
それほど、凄い機能が、原因を考えることができるってことです。
こんなの、他の動物は持ってないんですよ。
はい、これが、今回のテーマです。
人類最大の発明
原因と結果
それでは、始めましょう!
まずは、3DCGで仮想世界をつくったとします。
手を放すと、リンゴが下に落ちました。
落ちたので、今は、リンゴは地面にあります。
さて、ここで、今、現在の状況だけを認識するシステムを考えてみます。
すると、リンゴが地面にあると認識するだけですよね。
たぶん、人間以外の動物が認識してるのは、そういう世界なんですよ。
何か起こっても、その結果を認識するだけです。
でも、人間は違いますよね。
原因がわかりますよね。
なぜでしょう?
それは、人間は、結果と同時に原因も認識してるからです。
つまり、そういう風に世界を認識してるってことです。
これ、誤解を恐れずに言うと、原因は、外の世界にあるわけじゃないんですよ。
原因があるのは、認識する側です。
重要なんで、もう一度言いますよ。
外の世界にあるのは、常に、今、現在だけです。
結果だけです。
つまり、今、現在の世界を認識してるだけじゃ、なんでこうなったって原因はわからないんです。
分からないと言うか、原因って考えすら存在しないんです。
じゃぁ、原因を理解するには、どうすればいいでしょう?
まず、原因って、結果の前に起こりますよね。
つまり、何か起こった時、起こる前の状態も記憶しとかないといけないんですよ。
じゃぁ、何か起こるって、どういうことでしょう?
リンゴの場合だと、リンゴから手を放すことです。
これは、仮想世界の持つメソッドを呼び出すことって言えますよね。
それでは、これを踏まえて、マインド・エンジンでは、どうやって原因結果を理解してるか見て行きましょう。
前回は、最初の一文「コンビニがある」を解析しました。
これをプログラムで書くと、
Let a = new Store(“コンビニ”);
となります。
そして、これを実行します。
実行するってのは、意味を理解するってことです。
意味を理解するってのは、意識が認識できるものに変換するってことです。
じゃぁ、意識が認識できるものって、何でした?
そう、仮想世界ですよね。
つまり、実行するってのは、言葉で表現されたものを仮想世界に変換するってことです。
はい、これが、実行した結果の仮想世界です。
仮想世界のなかに所有権世界が作られて、そこにコンビニが登録されましたね。
所有権世界は、誰が何を所有してるとか、誰が何を買ったかって話をするときに使う世界です。
だから、登場するものは、それは所有者なのか、物なのかってことを管理する必要があるんです。
コンビニでは、コーラとか弁当とかを売ってますよね。
つまり、コンビニはコーラや弁当を所有してるわけです。
だから、ここでは、コンビニは所有者となります。
次は、「太郎がコンビニに行く」です。
じつは、この文、二つの内容を含んでるんです。
一つは、「太郎がいる」です。
新たな登場人物がとして「太郎」が登場したってことです。
もう一つは、「その太郎が、コンビニに行った」ということです。
まずは、太郎がいるをプログラムに変換します。
Let b = new Owner(“太郎”);
となります。
変数bが太郎です。
次に、太郎がコンビニに行くはこうなります。
b.Visit(a);
変数aは、コンビニです。
そして、これを順に実行します。
すると、ステータスがこうなります。
ステータスっていうのは、仮想世界に登録されるオブジェクトの中身のことです。
Owner、つまり所有者として太郎が追加されましたよね。
ところで、今、何をしようとしてるか、わかりますか?
これ、世界を構築しようとしてるんです。
会話って、こんなことがあったよってことを伝えるものですよね。
こんなことって、何か起こったって出来事です。
伝えたいのは、出来事ですけど、出来事が起こるには、まず、その背景を説明しないといけません。
どこで起こったかとか、誰がいたかってことです。
これが、世界を構築するということです。
今やってるのは、それです。
それを踏まえて、次からの文も見て行きます。
つぎは、「コンビニでは150円のコーラを売っている」です。
この文は、3つの内容を含みます。
まずは、新しく登場したコーラがあるです。
プログラムは、
Let c = new Item(“コーラ”);
となります。
変数cがコーラです。
次は、コンビニがコーラを売ってるです。
コンビニは変数aで、コーラは変数cなので、プログラムは、
a.Sells(c);
となります。
これで、コンビニでコーラを売ってるって関係が関連付けられるわけです。
最後は、そのコーラの値段が500円ということです。
プログラムは、
c.price=150;
となります。
コーラの値段プロパティが150円になるわけです。
実行した結果、ステータスはこうなりました。
コーラってItemができて、コーラの所有者はコンビニ、値段は150円って登録されましたよね。
次は、「太郎は500円を持っている」です。
これを実行すると、ステータスはこう変わりました。
太郎の所持金、moneyが500円って追加されましたよね。
もしかして、何、当たり前のことやってるのって思ってませんか?
そう思うのは、AIのこと、知らないからです。
これ、今の自然言語処理の常識からしたら、かけ離れたことしてるんですよ。
最新AIの文章生成システムGPT-3ってのがあります。
何度も取り上げましたけど、GPT-3がやってることって、大量の文書から単語と単語の繋がる確率を計算してるだけです。
コンビニの次にコーラが来る可能性は何%とか、コーラの次に150円って来る可能性は何%とかって。
そんな統計データを使って、コーラの値段は150円とかって文を生成するわけです。
これで、一見、それらしい文は生成できます。
でも、何も考えずに、全然関係のない文章を一緒くたにしても、意味ないですよね。
まともな会話になるはずないです。
その事を示したのが、第174回「GPT-3検証した あご外れた」です。
かなり笑える動画になってるので、良かったら見てください。
GPT-3は、何も考えずに、確率だけ計算しています。
でも、人間が文章を読むときは、頭の中で、意味を考えながら読みますよね。
コーラの値段は150円で、それがコンビニで売っててって、頭の中で組み立てて行きますよね。
それと同じことをやってるのが、マインド・エンジンってことです。
さて、次です。
「太郎はコーラを1本買う」です。
はい、これを言いたいために、今まで、背景を説明してきました。
会話ってのは、何かが起こったって出来事を伝える物でしたよね。
太郎がコーラを買ったって、出来事が起こって、初めて、話に一区切りがつくわけです。
「コンビニがある」って言われただけじゃ、「それから、どうなるの?」って思いますよね。
それは、「コンビニで何が起ったか」を期待してるわけです。
そう思ってるから、「太郎がコーラを買った」って聞いて、一応、区切りがついたって思うわけです。
まぁ、その話がおもろいかどうかは、今は、置いといてください。
その話は、いずれ、しますから。
今は、会話で最低限、必要なものは何かってことです。
それが、何か起こったって出来事です。
それでは、「太郎はコーラを1本買う」を実行します。
プログラムはこうなります。
最初に、Event(“Buy”)ってなってますよね。
これが、買うって出来事を示してます。
中身は、b.Buy(c,a);
です。
bが太郎で、cがコーラで、aがコンビニなので、直訳すると、太郎が、コンビニからコーラを買うとなります。
これが、これを実行した結果の仮想世界です。
今までと変わったのは、まず、下のBefore,Afterの表が追加されたことですよね。
それから、その上のアクションも追加されましたよね。
じつは、これが、最初に語った原因、結果を認識してるところなんです。
原因を考えることができるってのは、言い換えれば、こんな表を頭に持ってるってことなんですよ。
それでは、順番に見て行きましょう。
まず、原因、またはきっかけは「買う」ですよね。
これが、真ん中の「アクション」のところの「買う」です。
「買う」っていうのは、何がどうなることでしょう?
まず、商品の所有者が、お店から買った人に移りますよね。
だから、Beforeでコーラの所有者がコンビニとあるのが、Afterでは、太郎になってますよね。
それから、買うときには、お金を支払いますよね。
だから、Beforeの太郎の所持金が500円だったのが、Afterでは、350円になって、その代わり、コンビニの所持金が150円に増えましたよね。
これが、買うって出来事です。
分かりましたか?
この出来事で一番重要なのは、太郎がコーラを手に入れたってことですよね。
そして、その原因は、買ったからですよね。
この文章を読んだとき、そういったことを自然に頭に思い浮かべたでしょ。
それと同じことを、マインド・エンジンはしてるわけです。
それが、仮想世界の表を埋めることです。
もし、表の原因のところを埋めれなかったら、「どうして?」って思うわけです。
たとえば、マジシャンが、空中から、パッと、バラの花を取り出したとするでしょ。
すると、「えっなんで?」って、驚きますよね。
これって、原因を埋めれなかったからです。
人間なら、普通に、驚きますけど、犬とかサルに手品を見せても、驚かないんですよ。
手品を見て、なぜ?って思うのは、人間だけなんですよ。
それは、原因、結果で世界を認識してるからです。
意味理解には、いろんな種類がありますけど、原因、結果というのも、その一つです。
さて、言葉の意味が理解できると、次は、会話です。
次回は、マインド・エンジンの会話について説明します。
今回の動画が面白かったら、チャンネル登録、高評価お願いしますね。
それじゃぁ、次回も、おっ楽しみに!