ロボマインド・プロジェクト、第486弾!
こんにちは、ロボマインドの田方です。
前回、第485回では共感する仕組みをプログラムを使って解説しました。
コールバック関数という、ちょっとプログラムの専門的な機能を使って説明しました。
心で感じることって、主観に頼らざるを得ないので厳密で客観的な定義が難しいです。
それを、プログラムを使うことで、主観から切り離して、客観的に定義できます。
だから、ちょっと専門的になりますけどプログラムの話は、どうしても避けて通れないんです。
それから、今、開発中のプロジェクト・エデン、ようやくインフラ部分ができてきたんですよ。
ネットワークの通信部分とか、専用のスクリプト言語を解釈するコンパイラとかです。
いよいよ、その上で動く意識とか仮想世界を本格的に実装する段階になってきました。
それもあって、プログラムで意識を定義する必要が出てきたんです。
ただ、意識って、人によって思い描いてるものが全然ちがいます。
動物にも意識があるっていうのはわかりますけど、地球にも意識があるとか、植物にも、石ころにも意識があるとかって言う人もいます。
すべてに通用する意識の定義はありません。
僕が作ろうとしてる意識は、人の意識です。
今、みんなが感じてる意識です。
でも、「今、感じてるもの」って言われても、よく分からないですよね。
そこで、これをプログラムで客観的に示すことにします。
今回の話を聞けば、誰もが、「それぞまさに意識だ」って納得すること間違いないです。
これが今回のテーマです。
意識をプログラムで定義する
それでは、始めましょう!
明晰夢って聞いたことありますか?
夢の中で「これは夢だ」って気づくことです。
僕は、中学ぐらいのときに1,2度見たことありますけど、ほとんど見たことがないです。
でも、眠りから覚めかけてるときに気づくこととかは、今でも、たまにあります。
つい先日も、眠ってて、「あれ?」って気づいたんですよ。
最初、全く何の感覚も感じなくて、どこで眠ってるのかもわからなかったんですよ。
おそらく、体がまだ眠ってて、感覚が遮断されてたんやと思います。
どんな態勢で、どっちが上か下かもわからないんです。
朝か夜かもわかりません。
ベッドに入った記憶もないです。
ただ、頭の中は、さっきまで仕事のことを考えてたって感覚は残ってます。
となると、仕事してて眠くなって、そのまま机に伏せて眠ってしまったか。
または、仕事の後、風呂に入って風呂の中で眠ってしまったかです。
そんなことを考えてたら、首のあたりに何か感じます。
首にお湯の感覚を感じたみたいでした。
どうやら、風呂で寝落ちしてたみたいです。
さて、ここです。
今の話、意識に関する重要な問題が全て含まれています。
順番に読み解いていきますよ。
まず、最初は眠りから目覚めたところです。
ここが意識の開始点です。
意識の定義はいろんな人がしてますけど、最も有名なのが、哲学者ジョン・サールの次の定義です。
「意識とは、私たちが、夢を見ない眠りから覚めて、再び夢のない眠りに戻るまでの間持っている心的な性質のことである」
この定義に照らし合わせると、湯船の中で気づいたときが、意識の始まりと言えます。
しかも、まだ体が眠っていて、普通じゃ体験できない意識の境目を体験したようです。
ここで、意識をプログラムとします。
じゃぁ、意識プログラムは、まず、何をするでしょう?
さっき、ここはどこだって探しましたよね。
机で臥せって寝てるのか、風呂で寝てるのかです。
つまり、まず、意識が必要とするのは「ここ」がどこかです。
もっと言えば、世界の中の自分の位置です。
次に考えたのは、今が朝なのか夜なのかでしたよね。
つまり、今がいつかです。
ここからわかるのは、意識が必要とするのは、自分が今、どこにいるかです。
つまり、意識プログラムは、「自分」、「今」、「ここ」この三つのデータを必要とするってことがわかりましたよね。
この三つのデータを持つデータ構造を「世界」と呼ぶことにしましょう。
そうすると、世界とは、時間軸を持った三次元空間とも言えます。
そして、意識プログラムとは、自分が世界の中のどこにいて、今がいつかを把握する機能を持つと言えます。
さて、意識プログラムは目が覚めたとき起動します。
起動したときまず確認するのは、ここがどこで、今がいつかです。
だから、僕は目が覚めたとき、「あれ、どこ? 何してた?」って思ったんです。
そして、「風呂でウトウトして寝てもた」って分かって安心したんです。
プログラムで作るとすると、自分は、今、どこってプロパティをもってるオブジェクトです。
意識プログラムが起動したとき、今どこ関数を呼び出します。
今どこ関数は、目や耳からの情報を基に今、どこかを検出する関数です。
検出できたら「成功」って結果を返します。
安心を感じたのは、成功を受けて今、どこか分かったってことです。
僕の場合、最初、今どこ関数が何も返してこなかったから「えっ、ここどこ?」って不安になったんです。
認知症の障害の一つで、今がいつで、ここがどこか分からなくなる障害があります。
それを見当識障害っていいます。
病院にいるのに家にいると思ったり、朝か夜か時間が分からなくなったりします。
さらに、何もない空中に向かって話しかけたりするようになると、大分おかしくなったって思いますよね。
つまり、意識がちゃんとしてるって言うのは、お互い、同じ世界を認識してるってことです。
一つの現実世界があって、その世界に僕らはいるわけです。
その世界にいる人は、今がいつで、ここはどこで、何が見えるかってみんな共通して認識してるわけです。
その共通認識をもってることが、ちゃんとした意識を持ってるってことです。
これが、人の心の最も基本となる部分です。
こう考えたら、今のAIは意識がないってのもわかりますよね。
大学の入試問題は解けますけど、自分が今、どこにいるのかすら分かってないんです。
いや、わかってないというより、「今」とか「どこ」って概念すらもってないんです。
今のAIに根本的に欠けてるものが何かわかりますよね。
それじゃぁ、次は、意識を持った心のシステムについて考えていきます。
これは、僕が提唱する心のモデルです。
現実世界というのが、今、目の前に見えてる世界です。
目で見た世界を頭の中で仮想世界として構築します。
コンピュータ・システムで作るとしたら、カメラで現実世界を撮影し、画像データを基に3DCGで世界を生成します。
これが仮想世界です。
3DCGで再現したので、位置情報を含んでいます。
さらに、仮想世界は現実世界をリアルタイムで再現するので現実と同じように動きます。
動きというのは時間軸にそった世界の変化です。
つまり、仮想世界は時間も持っているといえます。
仮想世界に存在する「もの」は3Dオブジェクトでつくられて、そのうちの一つが自分です。
これで、仮想世界には意識が必要とする三つのデータを全て含んでるといえますよね。
つまり、「自分」が、「今」、「どこ」にいるかってデータです。
ここまでの話は今までも語ってきました。
今回は、この次の段階、プログラムで具体的にどうやって実現するかについて説明します。
意識は一つのプログラムです。
意識が認識する仮想世界もプログラムです。
目が覚めたとき、これらのプログラムが一斉に動き始めるわけです。
プログラムで複数の処理を同時に動かすことをマルチスレッドプログラムって言います。
システムが起動したとき、まず最初に動くのがmain関数です。
main関数のなかで、必要なプログラムを順番に起動します。
その一つが仮想世界生成プログラムで、もう一つが意識プログラムです。
仮想世界生成プログラムは、カメラやマイクといったセンサーからのデータを基に3DCGの仮想世界をリアルタイムで生成します。
意識プログラムは、仮想世界にアクセスして、今、どこにいるかを確認します。
システムが起動したとき、仮想世界生成プログラムと意識プログラムが同時に起動します。
システムの起動っていうのは、目が覚めたってことです。
もし、このとき意識プログラムしか起動したらどうなるでしょう?
仮想世界生成プログラムが起動してないので仮想世界は空っぽです。
意識プログラムは、仮想世界にアクセスしても何もありません。
つまり、今、どこにいるかもわかりません。
それが、先日、僕に起こったことでした。
心のシステムの一時的なバグといってもいいです。
それじゃぁ、仮想世界生成プログラムがバグったらどうなるでしょう。
仮想世界は目に見える世界だけじゃなくて、場所とかいつとかってプロパティも持っています。
ここがバグって過去の記憶とごっちゃになったりします。
すると、病院のベッドに寝てるのに場所プロパティが家となったり、朝か夜か分からなくなります。
これが認知症の見当識障害です。
仮想世界生成プログラムとか意識プログラムはシステムが起動してる間、ずっと動いていますよね。
これはプログラムでは無限ループで作ります。
無限ループというのは、こんな風に同じ処理を繰り返し行うプログラムです。
無限ループは、パソコンソフトだと処理が返ってこなくなるのであまり使われることはないですけど、組み込み系といわれるマイコンでは普通に使われます。
(ライントレーサーの動画)
たとえば、ライントレーサーなんかのマイコンロボットは、センサーを検出してモーターを制御するって処理を無限ループの中で繰り返し行っています。
仮想世界生成プログラムだと、カメラやマイクからデータを取得して、3DCGの仮想世界を生成するって処理を繰り返します。
このループが1秒に一回、回るとすると、仮想世界は1秒ごとに更新されます。
これで動きのある仮想世界が作られます。
意識プログラムも同じです。
たとえば1秒ごとに仮想世界にアクセスして、今、どこにいるかって確認します。
たとえば、誰かに話しかけられたとします。
仮想世界はその状況をリアルタイムで再現しています。
意識プログラムも、それをリアルタイムで認識してるので、目の前の人が自分に話しかけてると気づいて会話ができます。
僕らが今開発してるプロジェクト・エデンはメタバースです。
メタバースは3DCGで世界ができてますけど、これが現実世界です。
だから、カメラ映像から3DCGを作る処理が省略できます。
でも、現実世界とは別に仮想世界はちゃんと作っています。
人間の意識と同じ仕組みを再現するのが目的なので、そこはしっかり作っています。
さて、ここまでの仕組みなら、ただ現実世界を認識するだけです。
人間の心の一番の特徴は、目の前にない世界でも自由に想像できることです。
それは、過去の思い出だったり、こんな風になったらいいなぁって未来のことだったりです
意識が認識するのは仮想世界です。
今まで説明したのは、現実世界を基に作りだした現実仮想世界です。
そこに、それとは別に、想像するときに認識する想像仮想世界というのをつくります。
想像仮想世界は、意識が生成して、操作することもできます。
テレビでドラマを見てるとき、意識は想像仮想世界に作ったドラマの中の世界を見てるわけです。
意識が想像仮想世界を見ているというのは、意識プログラムは無限ループの中で想像仮想世界に繰り返しアクセスしてるわけです。
このとき、意識は現実世界から切り離されてますよね。
だから、話しかけられても気づきません。
完全にあっちの世界に行ってしまってます。
これじゃぁ、困ります。
だからといって、意識は、同時に二つのことを考えることはできません。
二台のテレビで別々のドラマを映し出しても、どっちかしか頭にはいってきません。
それじゃぁ、テレビを見てるとき話しかけられて気づくにはどうすればいいでしょう?
それは、プログラムでいうと、「イベント」という処理を使います。
たとえばパソコンだと、ボタンをクリックしたりしますよね。
この時発生するのがクリックイベントです。
たとえば、ダウンロードボタンを押してダウンロードが始まったとします。
みたら、「ダウンロード完了まで、後、60分」とかって出てます。
そんなに待ってられないので、キャンセルボタンを押したりしますよね。
これを実現するのって、簡単そうで、結構、難しいんです。
だって、プログラムというのは、処理を順番に行うことしかできません。
だから、普通に作ったら、キャンセルボタンが実行されるのはダウンロード処理が完了してからです。
処理の途中で、別の処理を後から差し込むことはできないんですよ。
そこで、イベント処理を使うんです。
イベントが発生したら、そのイベントを箱に入れておくんです。
ダウンロード処理は、1Kバイトずつとか、ちょっとずつダウンロードします。
つまり、無限ループの中の繰り返し処理で行います。
そして、1Kバイトダウンロードするごとに、イベントが入ってる箱を覗くんです。
そこにキャンセルイベントが入ってたら、ダウンロード処理を中断します。
これで処理の途中でキャンセルできますよね。
テレビでドラマを見てるときも同じです。
テレビを見てるときは、想像仮想世界の中にドラマの世界を作りだして、意識は無限ループのなかで1秒に一回、その世界を認識してるわけです。
今、お母さんが「ご飯よ」って呼んだとします。
無意識は、意識がテレビをみてるときも裏で現実仮想世界を作りだしています。
そのとき、「ご飯よ」ってイベントも生成して箱に入れます。
意識は、無限ループの中でドラマを見ながら1秒に一回、イベントの箱もチェックします。
そしたら、「ご飯よ」ってお母さんが言ってるのを見つけて、「今、行くから」って答えます。
これが、気付くってことです。
夢中になればなるほど、「ご飯よ」の声に気づかなくなりますよね。
たぶん、脳のリソースは限られてるので、無意識はドラマの想像仮想世界を作るのにリソースを奪われて、現実仮想世界を作ったり、イベントを生成する処理まで手が回らないんでしょう。
だから、ドラマに夢中で見入ってるときは、呼ばれても気付かないんです。
この心のモデル、実際の僕らの心と違和感ないですよね。
さて、プログラムレベルまで心を解明すると、もう一つ、別の大きな問題も解決できそうです。
それは、自由意志です。
次回は、自由意志をもったプログラムについて考えてみます。
はい、今回はここまでです。
面白かったらチャンネル登録、高評価お願いしますね。
それから、よかったらこちらの本も読んでください。
それじゃぁ、次回も、おったのしみに!
第486回 意識をプログラムで定義する
