第315回 意識の最後のパーツ


ロボマインド・プロジェクト、第315弾!
こんにちは、ロボマインドの田方です。

第311回からイソップ童話の「すっぱいブドウ」を理解できる意識プログラムを考えています。
この話し、一言でいえば、負け惜しみです。
幼稚園児でもわかる話に、どんだけ時間かけてんねんって思いますよね。
でも、今、やろうとしてるのは意識の解明です。
意識科学の最先端って、何をやってるか、知ってますか?
たとえば、意識理論で一番有名なのに、統合情報理論があります。
統合情報量φってのを計算して、それがある値以上なら意識があるって判断できるって話です。

それから、最近の流行りは、自由エネルギー原理です。
これは、知覚入力から外界を推論するとき、自由エネルギーと呼ばれるコスト関数を最小化するように推論する数学モデルです。
犬のしつけとか、自由エネルギー原理で説明できるそうです。

最先端の意識科学でできることって、意識があるかないか判断したり、犬の行動の説明です。

それに比べて、僕らが今、解明しようとしてるのは、「負け惜しみ」とか、人間の持つ複雑な感情です。
世界の最先端の、はるかに先を行ってるんです。
そりゃ、説明するのに時間もかかります。
ということで、前回の続きです。

今回は、コンピュータで実現するリアルな話になります。
まだ、誰も気づいてない、意識の最も重要な話がでてきます。
これが、今回のテーマです。
意識の最後のパーツ
それでは、始めましょう!

今回は、具体的なシステムをイメージしていきますよ。
まずは、犬の場合です。
無意識から、常に、いろんなデータが送られてきます。

「お腹空いた」とか、「エサを食べろ」とかです。
これを受け取った意識は、「おなかが空いたなぁ」とか、「エサ、食べよ」ってなるわけです。

そのとき、「マテ」と言われて、食べようとすると怒られたので、食べるのを止めました。
「ヨシ」と言われてから食べると、怒られませんでした。
これを繰り返すうちに、「マテ」と「ヨシ」を学習するわけです。
怒られずにエサを食べる方法を自ら編み出したわけです。
こういう場合に、さっきの自由エネルギー原理が使えます。

次は、イソップのキツネです。
お腹を空かせたキツネは、おいしそうなブドウを見つけました。
ブドウを取ろうとしてジャンプしましたけど、届きません。
何度ジャンプしても届きません。
そして、最後に、こういいました。
「どうせ、あんなブドウ、すっぱくてまずいに決まってる。誰が食べてやるものか」
そう言って去っていきました。

負け惜しみです。
いろんな要素が含まれた、かなり複雑な感情です。
これぞ、人間の感情です。
とても、自由エネルギー原理じゃ作れそうにないですよね。

それでは、プログラムで実現する場合を考えてみましょう。
まず、現実世界の認識です。
人は、目で見た世界を頭の中で仮想世界として構築します。
意識は、この仮想世界を介して現実世界を認識します。
これを、意識の仮想世界仮説といいます。

仮想世界は、たとえば3DCGで実現できます。
三次元空間に3Dオブジェクトを配置して作ります。
ただ、3DCGでもいいんですけど、重要なのは、見た目じゃなくてオブジェクトで表現したというところにあります。
オブジェクトというのは、色や形といったプロパティをもちます。
たとえばリンゴなら、赤いとか甘いってプロパティを持ちます。

このオブジェクトって、リンゴとか、実体のあるものだけに限りません。
たとえば、空腹って感覚もオブジェクトになるんです。
意識が感じることができるもの、全てオブジェクトに成り得るんです。
これ、意識科学でなんて言うかわかりますか?

それは、クオリアです。
意識が感じるもの、全てクオリアです。
色も味も空腹も痛みも全てクオリアです。
世界は、クオリアでできてると言えます。
ここでいう世界は、意識が感じる世界です。
現実世界じゃないんですよ。

だって、空腹や痛みは現実の物理世界にはないですよね。
でも、僕らは、それをありありと感じますよね。
僕らが感じるのは意識です。
だから、物理世界より、意識が感じる世界を再現する必要があるんです。
意識が感じる世界を作るには、意識が感じるもので世界を創る必要があるんです。
それがクオリアです。
クオリアをコンピュータで再現するとすればオブジェクトになるわけです。
そして、オブジェクトで作られた世界が仮想世界です。

さて、無意識から空腹オブジェクトが意識に渡されました。
それを受け取った意識は、何か食べたいって感じてます。
次に、甘いブドウを認識した意識は、そのブドウを食べたいって思うわけです。
だから、ジャンプして取ろうとするわけです。
ここまではわかりますよね。

問題は、最後です。
ジャンプしても取れないとわかったキツネは、最後に、「どうせ、あんなブドウ、すっぱくてまずいに決まってる」って言いましたよね。
さて、これを、プログラムでどうやって実現するかです。

すっぱくてまずいブドウを食べてるとこを想像して、あんなブドウいらないって思ったわけですよね。
想像するときに使うのは想像仮想世界です。
想像仮想世界で、ブドウの味プロパティを甘いからすっぱいに変更したわけですよね。
特に、問題ないように思いますよね。

ところが、大いに問題があるんですよ。
無意識から渡されたブドウは甘いブドウですよね。
すっぱいなんて想定してないんですよ。
だから、すっぱいに変更できないんです。

まぁ、ブドウの味ぐらいなら、すっぱいを想定できないこともないかもしれません。
それじゃぁ、別の例を考えてみます。

たとえば、デパートのおもちゃ売り場で、子供が「あのおもちゃ買って」って駄々をこねてたとします。
でも、お母さんは「買いません」って言います。
そしたら、子供は泣き出しました。
そこでお母さんは、「それじゃぁ、来月の誕生日に、あのおもちゃを買ってあげるから」ってなだめたりします。
それを聞いて、子供はしぶしぶ、あきらめたとします。
まぁ、よくある話ですよね。

さて、この場合、どうでしょう?
無意識が創りだしたのは目の前のおもちゃです。
でも、今、話の中心は来月の誕生日です。
目の前のおもちゃを認識したとき、それを誕生日にもらうかもしれないなんて、思ってもないですよね。
それじゃぁ、思ってもないことを思うって、どうすればできるんでしょう?

それには、意識が自由に想像できる想像仮想世界が必要ですよね。
今までの仮想世界は、現実世界を再構築した現実仮想世界です。
現実仮想世界をつくるのは無意識です。

想像仮想世界は、無意識でなく、意識が作ります。
それも、現実とは関係なく、自由に作ることができる世界です。
だから、未来の誕生日を想像したり、すっぱいブドウを想像したりできるんです。

ここ、もう少し詳しく見ていきます。
仮想世界というのはオブジェクトで作られてます。
そして、仮想世界を読み取って、意識にとって必要なデータを提示するのが無意識です。
おなかが空いたとか、食べ物があるぞとかです。
これは、一種の意味です。

こういうふうに、何かを解釈する処理のことを、プログラム用語で「評価する」っていいます。
たとえば、1+1って数式を評価すると、2になるとかって言います。
つまり、ここでは、仮想世界を評価して、意味を抽出したわけです。

少しずつ、心のシステムが解明されてきましたよね。
それでは、全体をまとめていきますよ。

まず、外には現実世界があります。
そして、目で見て、頭の中に仮想世界を創ります。
仮想世界は、オブジェクトで作られます。

オブジェクトで作られた仮想世界を認識するのは意識プログラムです。
言い換えれば、現実世界を意識プログラムが感じれるデータで作り直したのが仮想世界です。
仮想世界を票かすると意味が抽出されましたよね。

さて、意識プログラムの目的は、行動を決定することです。
ということは、「意味」というのは、自分の行動を決定するのに必要な世界のデータといえそうです。
つまり、「意味」というのは、世界、意識、身体から定義されるんですよ。
単なる文字の並びだで意味が定義できるわけじゃないんですよ。
今の大規模言語モデルは、テキストデータしか学習していません。
そんなんじゃ、どれだけパラメータを増やしても意味を理解できるようにならないってことです。

さて、ここまでの仕組みで、現実世界から抽出した意味を意識プログラムは感じることができるようになりました。
でも、肝心の意識プログラムの中身はまだです。
それを、これから解説します。

意識の目的は、行動の決定でしたよね。
今、おなかが空いてて、ブドウを見つけました。
ブドウを取るために、ジャンプするわけです。
これが行動です。
または、欲しいおもちゃを見つけて、「お母さん、おもちゃ買って」って叫ぶとかです。
これも行動です。

さて、それが、どうやっても叶わないとなりました。
現実世界を評価して、「あきらめろ」ってデータが意識プログラムに渡されました。
これが、この場合の世界の意味です。
でも、あきらめたくないわけです。
子どもは泣き出します。
そこで、お母さんは、「誕生日に買ってあげるから」って提案します。
キツネの場合は、「ブドウがすっぱい」って思いつきます。

これを想像仮想世界に生成して、評価します。
そして、今の状況と比較します。

ここで、重要な概念が出てきました。
比較です。
意識プログラムは、比較する機能が必要なんです。
現在の状況と、想像した状況を比較するんです。
そして、どっちがメリットがあるか判断するんです。

比較するためには、今の状況を記憶しておく必要がありますよね。
ここで、もう一つ重要な機能がでてきました。
状況の記憶です。
状況というのは、仮想世界のことです。
見たままの状況を記憶するのはエピソード記憶です。
これも、人間しか持ち得ない機能の一つでしたよね。

そして、最も重要な機能は、想像仮想世界に自由に世界を作り出す機能です。
すっぱいブドウとか、誕生日のプレゼントとか、目の前にない世界を作り出す機能です。

意識プログラムに必要な機能がそろってきました。
これで全てでしょうか?
大事なものを忘れています。

それは、これらの機能を操る仕組みです。
それでは、それについて説明します。
まず、現実の状況を記憶します。
次に、すっぱいブドウを想像仮想世界に作り出して評価します。
最後に、評価結果と、記憶してた現実の評価と比較します。

こういった一連の操作、これが考えるってことです。
じゃぁ、どうやって考えますか?
それは、言葉ですよね。
「ブドウがすっぱかったら」って言葉で考えますよね。
ここに、最も重要な概念、言語が出てきました。

ここでいう言語とは、オブジェクトを生成したり、比較したり操作できる言語です。
つまり、プログラム言語です。
意識が使うプログラム言語です。

ここで、勘違いしないでくださいよ。
今いってるのは、このシステムを作るプログラム言語のことじゃないですよ。
それは、開発者が使うものです。

そうじゃなくて、今、出てきたのは、意識プログラムが使うプログラム言語です。
開発者が開発するためのプログラム言語じゃなくて、意識プログラムが考えるためのプログラム言語です。
じゃぁ、その二つ、いったい何が違うんでしょう?

まず、開発のプログラムは、作ったらコンパイルして実行プログラムとなります。
実行プログラムは、コンピュータが実行するもので、システムの稼働中に内容を変更できません。

意識プログラムは、自分で考えて、自分で自分の動きを変更できないといけません。
つまり、システムの稼働中に、自分のプログラムを変更できないといけないんです。
でも、そんなこと、できるんでしょうか?

それは可能です。
それを実現するのがスクリプト言語です。
スクリプト言語というのは、コンパイルしないタイプのプログラム言語です。
実行するとき、必要な個所のプログラムをコンパイルしながら実行するタイプの言語です。
だから、システムの稼働中に、自分のプログラムを変更することもできるんです。
スクリプト言語を実行するものをバーチャルマシンと言います。

意識プログラムが使うスクリプト言語は、仮想世界を操るものです。
仮想世界は、オブジェクトで作られて、オブジェクトとは意識が感じれるデータのことです。
これは、一種の意味でもあるし、クオリアでもあります。

お母さんが子供に「誕生日に買ってあげるから」って言いましたよね。
それを聞いた子供は、想像仮想世界で、それを想像したわけです。
「誕生日に買ってあげるから」って、これは普通の言葉、自然言語です。
意識プログラムは、それを、スクリプト言語に変換して、想像仮想世界で想像するわけです。

わかりましたか。
言葉、意味、思考、全てつながりましたよね。
これらを実行してるのが意識プログラムです。

それでは、意識プログラムに必要な機能をまとめます。
まずは、想像仮想世界、それから想像仮想世界を操作するスクリプト言語、それに、スクリプト言語を記憶する記憶部が必要です。
さらに、スクリプト言語を実行するバーチャルマシン、仮想世界を評価して感情を生み出す評価プログラムも必要です。
そして、最も重要なのは、これらをつかって、自分の行動を決定する思考プログラムです。
これこそが、人間の意識なんです。

そして、これらを全て備えているのが僕らが開発しているマインド・エンジンです。
世界で初めて、人の意識をコンピュータで実現します。
そんなマインド・エンジンを早く見てみたいという方は、僕らの励みになるので、チャンネル登録、高評価お願いしますね。
それから、今回紹介した意識の仮想世界仮説に関しては、こちらの本で詳しくかいてありますので、よかったら読んでください。

それじゃぁ、次回も、おっ楽しみに!