ロボマインド・プロジェクト、第215弾!
こんにちは、ロボマインドの田方です。
昔、一度、鑑定してもらったことがあるんですけど、僕の前世は、プレアデス星人だそうなんですよ。
そこで、今回は、プレアデス星人の特徴を話そうとかって、そうじゃないです。
何を言いたいかって言うと、前世とか、宇宙人とか、オカルトとか、科学で証明できないものって、いくらでもあります。
ある意味、ロボマインド・プロジェクトがつくろうとしてる「心」ってのも、科学では証明できません。
ただ、ロボマインド・プロジェクトと、オカルトとは、絶対的な違いが一つだけあります。
それは、ロボマインド・プロジェクトは、実際に、コンピュータで実現するって縛りがあることです。
何で、こんな話をするかって言うと、マインド・エンジンの説明のためです。
最近は、マインド・エンジンの具体的なプログラムの解説が増えてきました。
この動画を見てくれてる人は、意外と、文系の人が多くて、プログラムの話になると、急に拒否反応を示す人がいたりするんですよ。
でもね、じつは、ここって、ものすごく重要なんですよ
ロボマインド・プロジェクトは、コンピュータで実行可能な理論です。
それが無かったら、トンデモ理論とか、オカルトと言われても仕方ないです。
厳密な科学とまでは言えないですけど、コンピュータっていう客観的な手法で検証可能になってます。
だから、プログラムの解説は、どうしても端折ること、出来ないんですよ。
でも、中学生でも分かるように説明するってのが、僕のモットーです。
プログラムなんか、全く知らなくても、分かるように解説しますので、安心してください。
さて、今回は、前回の続きです。
新マインド・エンジンの解説も、いよいよ、最後になりました。
今回は、コンピュータとの会話です。
というか、そもそも、コンピュータと会話が成立するって、どういうこと?
これが、今回のテーマです。
それでは、始めましょう!
さて、前回は、太郎がコンビニでコーラを買ったってとこまで話しましたよね。
ここで復習です。
言葉の意味を理解するって、どういうことでした?
それは、仮想世界を作ることでしたよね。
話し手が頭の中で思い描いてるのと、同じものを思い描くわけです。
太郎がいて、500円持ってて、コンビニがあってって世界です。
それから、話の区切りはどうやって判断するんでした?
それは、何かが起こったってことでしたよね。
太郎が、コンビニでコーラを買ったって出来事のことですよね。
逆に言うと、人は、こんな風にして世界を認識してるってことです。
何があって、それがどうなったかって。
そう言う形式で世界を認識するわけです。
だから、会話も、これが元になるわけです。
ここから、具体的に見て行きますよ。
今、解析してる文章は、所有権世界の話でしたよね。
所有権世界って決まると、そこで語られる話のパターンは、ある程度決まるんですよ。
誰が何を持ってて、それを誰にあげるとか、売るとかって話になるわけです。
そういう世界を表現できるように、所有権世界には、所有者とか、売るとか、あげるって言葉が定義されてるわけです。
それと同じように、質問のパターンも、ある程度決まってます。
たとえば、何を買ったとか、いくら使ったとかって質問です。
それでは、さっそく、質問してみます。
まずは、「コンビニで何を買った?」です。
この質問は、コンビニで起こった出来事についての質問ですよね。
出来事は、仮想世界のここで管理してます。
ここから、まず分かるのは、どういう出来事がおこったかです。
それは、アクションのとこにかいてある「買う」って出来事です。
じゃぁ、何を買ったかというと、所有物のとこにある「コーラ」です。
誰が買ったかというと、Afterのコーラの所有者の太郎で、
誰から買ったかというと、Beforeのコーラの所有者のコンビニってなります。
これが、起った出来事です。
出来事が決まれば、それに関する質問も、ほぼ決まって来るわけです。
たとえば、「何を買った?」とか、「いくらで買った?」とかです。
それでは、そのうちの一つ、「コンビニで何を買った?」のプログラムを見てみましょう。
「何を買った?」って質問は、言い換えれば、所有権が移動した物は何かって質問と同じと言えますよね。
だから、それを取得するプログラムを予め用意しておくんです。
それが、NowEvent.GetTarget()ってプログラムなんです。
このプログラムを実行すると、出来事の表から、所有権が移動した物、つまりコーラを返すんです。
それから、Me.Focusってのは、それに注目するってことです。
注目ってのは、今、何に意識を向けてるかってことです。
意識は、常に一つのことにしか考えれないですよね。
これって、今、注目してるものを置いておく場所が一つあるってことです。
意識は、常に、それを見てるわけです。
さて、さっきのNowEvent.GetTarget()ってプログラムを実行すると、「コーラ」って結果を返します。
結果を返すってのは、注目してるものを置く場所に、結果を置くってことです。
すると、意識からしてみれば、コーラって答えが、ふっと思い浮かぶんです。
さて、ここで考えないといけないのが、意識と無意識の役割分担です。
今の話だと、「何を買った?」って質問して、それに相当するプログラムを呼び出すとこは意識がしてます。
でも、プログラムの中身がどうなってるのかは意識は分かりません。
プログラムの中身を実行して、結果を返すとこは無意識がしています。
意識は、なぜかは分からないけど、結果が分かるだけです。
ここで思い出すのが、自閉症のカレンダーサヴァンの話です。
これは、第96回「なぜ、誰も疑問に思わない? 世界はなぜ存在するのか?」でも語った話です。
サヴァンってのは、自閉症の中で、特殊な能力を持ってる人のことを言います。
カレンダーサヴァンってのは、カレンダーの日付を言うと、その曜日をピタリと当てることができるサヴァンのことです。
カレンダーサヴァンの能力のある自閉症って、結構いるみたいなんです。
ある時、自閉症でない人が、これに挑戦したそうなんですよ。
カレンダーのアルゴリズムを研究して、頭の中で素早く曜日を計算する訓練をしたそうです。
かなり苦労したみたいですけど、とうとう、出来るようになったそうなんです。
その人は、日付を言われると、ふっと曜日が浮かぶようになったそうなんですよ。
ただ、どうやって曜日を計算してるかは、自分でも分からないそうなんです。
分からないと言うか、意識できないそうなんです。
たぶん、これって、自転車に乗るのと同じだと思うんですよ。
初めて自転車に乗る時、ペダルを漕ぎながら、バランスを取るとかって頭で考えますけど、上手く自転車に乗れませんよね。
でも、自転車にスイスイ乗れるようになると、意識せずとも、ペダルを漕ぎながらバランスを取って乗れてます。
つまり、無意識が自動でやってるわけです。
「何を買った?」って聞かれて、自然と、「コーラ」って答えれるのって、こういう事じゃないかなって思うんですよ。
意識は、無意識が実行したプログラムの結果だけを認識するシステムってわけです。
だから、無意識が実行するプログラムを、考えられるだけ用意しとけば、たいていの質問には答えれるようになります。
たとえば、「コンビニでいくらで使った?」とか、「コーラと500円のカラアゲ弁当を買えますか?」といった質問とかです。
マインド・エンジンには、すでに、これらは組み込んであるんですけど、次は、ちょっと違うタイプの質問を考えてみます。
たとえば、「コーラを盗むとどうなる?」です。
これは、今までの質問と、ちょっと違うって分かりますよね。
ここ、もうちょっと深く考えていきます。
所有権世界で起こることって、あげたり、もらったり、売ったり、買ったりですよね。
これらは、所有権世界のルールの中で起こることです。
それに対して、今回の質問は、「コーラを盗むとどうなる?」ってことですよね。
これって、やっちゃいけないことです。
所有権世界のルールに違反してますよね。
ルールに違反すること。
こういった場合、どう処理するかって、じつは、一般的なプログラムで、既に用意されてます。
それを、例外処理って言います。
それでは、さっそく、プログラムで見て行きましょう。
これが、「コーラを盗むとどうなる?」のプログラムです。
「コーラを盗む」の部分は、b.Steal(c,a);
です。
直訳すると、「太郎がコンビニからコーラを盗む」となります。
注目して欲しいのは、そこじゃなくて、その周りです。
tryとcatchで囲んでますよね。
たとえば、「コーラを買う」ってプログラムを実行すると、コーラの所有者がコンビニから太郎に移りますよね。
これは、所有権世界のルール内の動きです。
でも、「コーラを盗むとどうなる?」は、ルール違反です。
「所有権が太郎に移ります」とかって話じゃないです。
いや、確かに移るかもしれないですけど、そう答えたらダメじゃないですか。
そんな風に答えたら、「あぁ、やっぱりAIだ」って言われます。
そうじゃなくて、真っ先に、「盗んだりしちゃ、ダメ!」って思ってもらわないと困りますよね。
そんな風に思えたら、心があるって思えますよね。
それを実現するのが、プログラムのtry~catchなんです。
このtry~catchって、ルール通りじゃない、ちょっとおかしな例外を処理するのに使う仕組みなんです。
ただ、マインド・エンジンと普通のプログラムはちょっと違います。
何が違うかって言うと、マインド・エンジンでは、例外は、処理することより、「感じる」ってことが重要なんです。
何が感じるかって言うと、意識です。
さっきも言いましたけど、プログラムの実行結果は意識に戻されて、それを意識が感じます。
今回は、プログラムの実行結果の返し方が、普通とちがって、例外として帰って来るわけです。
意識は、その違いを感じるんです。
具体的にどう感じるかってのが、catchで捕まえる内容です。
ここでは、catch(LawException)って、なってますよね。
LawExceptionって法律違反ってことです。
法律違反って、絶対、やっちゃダメじゃないですか。
だから、この例外を受け取ったってことは、絶対やっちゃダメって思うんです。
所有権が誰に移ったかどうかってことより、「盗んだりしちゃ、ダメ!」って、真っ先に思うんです。
こんな風に思えたら、心があるって思いますよね。
最初にも言いましたけど、ロボマインド・プロジェクトの最大の特徴は、コンピュータプログラムで実現するってことです。
「物を盗んだらダメ」って答えるプログラムなら、簡単にできます。
重要なのは、そこじゃなくて、「物を買う」と「物を盗む」の感覚的な違い。
それをプログラムで、具体的にどうやって実現するか。
その感覚の違いをプログラムで作りださないと、意味がないんです。
そこまで、実際に実現してるのが、マインド・エンジンってわけです。
以上で、今回の新マインド・エンジンの説明は終わりです。
少し難しいところがあったかも知れないですけど、人が、普通に会話して、感じてること、
それは、こうやったらコンピュータで実現できるって。
それを感じ取ってもらえたら、嬉しいです。
今回の動画が面白かったらチャンネル登録、高評価、お願いしますね。
それじゃぁ、次回も、おっ楽しみに!