ロボマインド・プロジェクト、第332弾!
こんにちは、ロボマインドの田方です。
前回から、ロボマインドの新しいプロジェクト、「プロジェクト・エデン」について語ってます。
プロジェクト・エデンとは、メタバースで暮らすAIアバターの心をつくるってプロジェクトです。
前回は、AIアバターの太郎君が、朝、目が覚めるところまでを解説しました。
今回は、太郎君のところに花子さんが来て、「ジャンケンしよ」って声をかけるところを解説します。
人間なら、わざわざ解説するような話じゃないですけど、コンピュータに、これを理解させるってのが大変なんです。
今回は、プログラムも使って説明します。
プログラムっていうと、拒否反応を示す人がいるかもしれませんけど大丈夫です。
プログラムの知識がなくても、わかるように説明しますから。
それなら、プログラムなしで説明すればいいんじゃないかって思うかもしれないですけど、そうはいかないんですよ。
僕らは、言葉の意味が、自然と分かりますよね。
自然と分かるっていうのは、どうやって意味を理解してるか分かってないってことです。
「ジャンケンしよ」って言われて、「うん、やろう」って答えたとします。
このとき、頭の中でどんな処理をしてるかって言われても、答えられないでしょ。
そこで、コンピュータを使うんですよ。
プログラムは、全ての処理を書き出さないといけません。
それ見たら、「あぁ、確かに、頭の中でもそうやって処理してるわ」って納得できるんですよ。
人間って、一瞬でこれだけの処理をしてるのかって、きっと驚きますよ。
これが今回のテーマです。
意識をコンピュータで再現したら、人間のすごさに驚いた。
それでは、始めましょう!
太郎君は、最初、眠っています。
寝てる間は、心臓や肺とか最低限の機能だけが動いてます。
これは無意識が制御しています。
ここは、最も基本的な制御で、コンピュータのOSに当たります。
この時のマインド・エンジンの画面はこんな感じです。
無意識だけが動いてて、目をつむってるので現実世界は真っ暗です。
ここで目覚まし時計が鳴りました。
すると、無意識のWakeUpメソッドが、仮想世界や意識を起動させます。
すると、マインド・エンジンの画面は、こうなります。
これが目が覚めた状態です。
さて、WakeUpメソッドのプログラムはこんな感じです。
このプログラムを見ながら、目が覚めるとは、どういうことか説明していきます。
最初に現実仮想世界を作ります。
現実仮想世界というのは、意識が認識する現実世界です。
これは、3DCGのベースとなる三次元空間を作るってことです。
次に、視界入力の画像から3Dオブジェクトを生成します。
つまり、目から見える部屋とか、机とか、椅子の3Dオブジェクトを作るわけです。
そして、それらを仮想世界に配置します。
それから、自分も作ります。
自分で自分は見えないですけど、自分も同じ部屋にますよね。
だから、自分も三次元空間の部屋に配置するんです。
ここまで出来たら、最後に意識を起動します。
ここで重要なのは順番です。
必ず、仮想世界が完成してから意識を起動します。
この順番に起動するから、意識は、目の前に世界があるって感じるんです。
もし、これが逆になったら、意識は何もない世界を見てしまってえらいことになります。
それから、もう一つ重要なのは、仮想世界を作ったり、意識を起動したりしてるのは無意識だってことです。
今、僕らの意識が見てる、目の前の世界は、じつは、無意識が作り出したんです。
そして、そう感じてる意識自体も、無意識が作り出したんです。
そう考えると、無意識ってスゴイでしょ。
言ってみれば、意識は、お釈迦様の手のひらの上の悟空みたいなもんです。
世界中を自由に飛び回って、自分が一番強いと思っていても、その世界自体は、無意識が作り出したものなんです。
無意識が作った世界から、意識は決して出られないんです。
これを頭に入れておいてください。
でも、無意識が作った世界の中でしか動けないとはいえ、意識は、無意識には決してできないことがあります。
これから、それについて説明していきます。
さて、太郎君のいる部屋に、花子さんが遊びに来ました。
太郎君は、花子さんに気づきますよね。
でも、これをコンピュータで実現するのって、意外と難しいんですよ。
コンピュータって、プログラムを上から順番に実行しますよね。
逆に言えば、最初から決められた順番しか実行できないんです。
でも、花子さんがいつ来るかなんか、わからないでしょ。
いつ実行されるかわからないプログラムって、意外と、作るのが難しいんですよ。
こんな場合に便利なのが、イベントです。
パソコンの場合、ボタンをマウスでクリックすると、何らかのプログラムが実行されますよね。
この仕組みのことを、イベント・ドリブンと言います。
これは、OSに用意された仕組みで、ボタンの上でクリックすると、ボタンクリックイベントというのが発生します。
イベントが発生したタイミングで動きだすプログラムで書くことで、いつ呼ばれるかわからないプログラムをかけるんです。
それでは詳しく見ていきます。
まず、無意識は現実世界を監視しています。
そして、何かが現れると、それをオブジェクトに変換して、現実仮想世界に配置します。
今の場合なら、花子が来たら、花子オブジェクトを生成して、現実仮想世界に花子オブジェクトを配置します。
現実仮想世界で、何かが配置されるとイベントが発生するようにしておきます。
そして、意識プログラムは、このイベントを受け取るわけです。
これが、「あっ、花子が来た」って感じることです。
この、「あっ」って気づく感覚。
この感覚を、イベントを使って、コンピュータで実現できたわけです。
さて、無意識は、現実世界を監視していますけど、これは、見るだけじゃなくて、音も監視しています。
現実世界には、風の音とか、冷蔵庫のブーンっていう音とか、いろいろあります。
無意識は、それらを全てオブジェクトにして現実仮想世界に配置します。
こうして、現実仮想世界には、物とか、声とか、匂いとか、意識が認識できるあらゆるものがオブジェクトとして配置されるんです。
現実仮想世界に配置されるオブジェクトは、クオリアともいえます。
さて、今、花子が「ジャンケンしよ」って話しかけてきたとします。
すると、無意識がしゃべり声オブジェクトを生成します。
ここで、しゃべり声は、冷蔵庫の音より重要なので、重要度が高いってデータも追加します。
しゃべり声オブジェクトが現実仮想世界に配置されると、「えっ」と、意識は気づきます。
冷蔵庫の音には「えっ」とならなくても、しゃべり声オブジェクトは「えっ」となるのは、重要度が高いって設定されてるからです。
ここまでが無意識の役目です。
無意識は、自動でできる簡単な処理しかしません。
考えないといけない難しい処理は意識が行います。
何をしゃべってるかって、言葉の意味理解は意識が行うわけです。
これを、次のプログラムを見ながら解説します。
これが、「しゃべり声」オブジェクトを受け取った時に呼ばれる意識のプログラムです。
まず、全体の流れをさっと説明します。
①でしゃべり声の中身を解析します。
しゃべり声の中身は「ジャンケンしよ」です。
「~しよ」って語尾は、何らかの提案を示します。
そこで、「提案オブジェクト」を生成します。
「提案オブジェクト」っていうのは、「はい」か「いいえ」の回答を要求するタイプの会話文です。
次に、②で、「はい」か「いいえ」を返すスクリプト・プログラムを取得します。
このスクリプトというのが、今回の肝なので、後で、じっくり説明します。
③でスクリプト・プログラムを実行すると、「はい」か「いいえ」の答えが返ってきます。
そして、④で、それを無意識に渡します。
無意識は、て、つまりスピーカーから、「うん、しよう」とか、「いや、やらない」と返答します。
ここまでが、全体の流れです。
次に、さっき出てきた、「はい」か「いいえ」かを答えるスクリプト・プログラムについて説明します。
これがスクリプトです。
①②を見てください。
①は、「遊び」と判断したらYes、②は「勉強」と判断したらNoと答えるって意味です。
この場合だと、ジャンケンは遊びなので、Yesとなります。
ものすごく単純なロジックですけど、今は、ロジックの中身は、あまり重要じゃないです。
重要なのは、スクリプトを実行するとは、どういうことかってことです。
たとえば、「リンゴがあります」って言ったとします。
これをスクリプトで書くとこうなります。
new Apple();
スクリプトというのはプログラムの一種です。
このプログラムを実行するとリンゴオブジェクトが生成されます。
リンゴオブジェクトというのは、色は赤、形は丸といったデータを持っています。
リンゴオブジェクトを生成するというのは、こういったデータのまとまりをメモリに書き込むということです。
そして、「リンゴの色は何色ですか?」って聞かれたら、リンゴオブジェクトから色取得して、「赤です」って答えることができます。
ブジェクトを生成したり、オブジェクトからデータを取得するのは意識です。
ここまでは、今までのプログラムと、特に違いはないように思いますよね。
ところが、スクリプトと、今までのプログラムとは全然違うんですよ。
たとえば、さっきの意識プログラムを見てみます。
これはスクリプト言語でなくて、C#っていうプログラム言語で書かれてます。
プログラム言語には、コンパイラ言語とスクリプト言語の二種類があって、C#はコンパイラ言語です。
プログラムっていうのは、最終的には01の二進数に変換されてCPUで実行されます。
二進数に変換することをコンパイルって言います。
コンパイラ言語って言うのは、先にコンパイルしてから実行するタイプの言語です。
スクリプト言語は、先にコンパイルするんじゃなくて、実行時に、1行ずつコンパイルしながら実行するタイプの言語です。
スクリプトをコンパイルするのがバーチャルマシンです。
③にVM.Run(script,…)ってありますけど、このVMというのがバーチャルマシンです。
重要なのは、バーチャルマシンの仕組みとかじゃなくて、コンパイル言語とスクリプト言語が何を意味するかです。
じつは、意識とスクリプトと言葉の意味理解には、密接な関係があるんです。
このことについて、じっくり解説します。
スクリプト言語でもコンパイラ言語でも、「りんごがある」のプログラムは、「new Apple()」です。
違うのは、コンパイラ言語だと、これがコンパイルされて01の二進数に変換されるってことです。
プログラムを実行するのは意識です。
意識は、二進数のプログラムを実行はできますけど、意味がわかりません。
今、重要なことを言いました。
「意味が分かりません」です。
じゃぁ、意味が分かるって、どういうことでしょう?
まず、「りんごがある」って自然言語があります。
これを new Apple()ってプログラムに変換しました。
つまり、自然言語をプログラムに変換すること。
これを意味理解の第一段階とします。
じゃぁ、意味が分からないってどういうことでしょう?
たとえば、アラビア語で、「リンゴがある」って言われても、何言ってるのかわからないですよね。
これは、プログラムに変換できないってことと同じです。
意味理解の第一段階ができないともいえます。
じゃぁ、コンパイル言語とスクリプト言語の違いは何でしょう?
それは、スクリプト言語は、変更できるってことです。
「リンゴがある」を「ブドウがある」に変更するとします。
これは、プログラムだと「new Apple()」を「new Grape()」に変更するってことですよね。
これができるのは、Apple()とかGrape()とかって、文字で書かれたプログラムだからです。
0101って二進数に変換されてたら、どれがリンゴで、どれがブドウかわかりません。
だから、コンパイラ言語だと、変更できないんです。
次に、人が頭にリンゴを思い浮かべたとします。
これは、プログラムだと「new Apple()」を実行することです。
すると、メモリにリンゴオブジェクトが生成されます。
リンゴオブジェクトにアクセスすれば、色は赤とか、形は丸いとかってわかります。
人が思い浮かべたリンゴと同じです。
オブジェクトを生成すること、これを意味理解の第二段階とします。
オブジェクトは仮想世界に配置されます。
仮想世界に配置されると、意識は、感じたり、操作したりできます。
スクリプトの実行とは、オブジェクトの生成だけじゃありません。
「ジャンケンしよ」って提案されたとき、「遊び」だから「はい」って答えてましたよね。
この部分、スクリプトで表現されてましたよね。
つまり、ロジックもスクリプトで表現されるんです。
そして、そのスクリプトを実行したら、「はい」と答えます。
これ、意識が考えて答えたってことですよね。
これの意味、わかりますか?
スクリプトを実行したってことは、仮想世界に配置されたってことです。
仮想世界に配置されるのはオブジェクトであり、クオリアでもあります。
そして、それは意識が認識できるものです。
今、認識したのはロジックです。
ロジックとは、考え方とか考えの内容です。
これって、考えのオブジェクト、または考えのクオリアといってもいいです。
クオリアって、色や物や言葉だけでなくて、考えにも成り得るんですよ。
分かりましたか?
ロジックのスクリプトを実行するって、まさに、意識が考えるってことなんです。
ロジックはスクリプトで書かれてるので、理由も答えることができます。
「なぜ、はいと答えたのですか?」って聞かれたら、「遊びからです」って答えられます。
そして、スクリプトなので変更もできます。
遊びの中でも、鬼ごっこは嫌とかって、スクリプトを変更することもできます。
提案に返事したり、その理由を答えたり、ロジックを変更したり。
これって、まさに、思考そのものですよね。
意識が行ってる論理的な思考です。
これができるって、実は、すごいことなんですよ。
なんでかって言うと、これって、今のAI、ディープラーニングじゃ絶対にできないんですよ。
たとえば、ディープラーニングだと、なんでその答えになったのか説明できないんですよ。
それから、ディープラーニングは、大量のデータから学習しますよね。
学習っていうのは、パラメータを少しずつ変えながら、最適化することです。
そういうやり方だと、意味を考えて、ロジックの中身を書き換えることなんかできません。
でも、スクリプトなら、中身を書き換えることができます。
理屈を考えて書き換えることができます。
まさに、人間の思考、そのものですよね。
そして、思考の内容を表現したのが言葉です。
言語です。
人間と同じように考えて、理解して、言葉をしゃべれるわけです。
それが、マインド・エンジンです。
今回は、「ジャンケンしよ」っていわれて、「うん、しよ」って答えるとこまでです。
肝心のジャンケンの中身は、まだです。
でも、ようやく準備が整いました。
次回こそ、ジャンケンの中身について語りたいと思います。
それから、マインド・エンジンの基礎となる意識の仮想世界仮説に関しては、こちらの本に詳しく書いてありますので、よかったら読んでください。
はい、今回の動画が面白かったら、チャンネル登録、それから、高評価もお願いしますね。
それじゃぁ、次回も、おっ楽しみに!