ロボマインド・プロジェクト、第256弾!
こんにちは、ロボマインドの田方です。
前回のデモ動画、見てくれましたか?
あのデモ動画を見た人から、これちょっとズルいんじゃないかって言われました。
まぁ、そう言われるとは思ってました。
(動画挿入)
映像から3Dオブジェクトに変換するとこ、ここは実際に作ってるわけじゃないです。
でも、既に、今の技術で出来てるので、そんなに問題はないって説明しようと思ったら、どうも、そこじゃなかったんです。
そこじゃなくて、「洗う」の意味のところを指摘されました。
あの、「きれいさ」って何?
「きれいさ」が0とか7とかって。
きれいとか汚いとかって、そんな数値で表現できるもんじゃないでしょって。
あぁ、そっちね。
たしかに、ここは説明が足りなかったかもしれません。
そこで、「きれいさ」ってのは、クオリアのことですよって説明したんですよ。
そしたら、
いやいや、クオリアて。
クオリアって、0とか7とか、そんなんじゃないでしょ。
クオリアって、コンピュータなんかで扱えるわけないでしょ。
って怒り出すんですよ。
あぁ、そうか。
ここ、勘違いしてる人が多いんですよ。
まず、クオリアの説明をしておきます。
クオリアって、意識や主観が感じる感覚や経験、質感のことです。
ウィキペディアには、「イチゴのあの赤い感じ」とか、「空のあの青々とした感じ」とかって書いてあります。
それから、クオリアは意識のハードプロブレムにも関係があります。
意識のハードプロブレムっていうのは、物質としての脳から、意識や主観がどうやって生まれるのかって問題です。
脳のニューロンの動きを追ってわかるのは、イージープロブレムです。
ニューロンの動きを追っても、クオリアは決して見つかりません。
それが、ハードプロブレムです。
よく分からないですけど、クオリアって、どうも、人間だけが持ち得るもののようです。
人間の精神の崇高さや神聖さを感じますよね。
とても、ロボットやPCが持てるとは思えません。
って、それが、ちがうんですよ。
クオリアって、そういうものじゃないんですよ。
これが今回のテーマです。
コンピュータは赤のクオリアを見るか?
それじゃぁ、始めましょう!
まず、マインド・エンジンの概要から説明します。
マインド・エンジンは、言葉の意味を理解する意識を持ったシステムです。
コンソール、視覚入力、仮想世界、意識、無意識の5つのウィンドウから成ります。
視覚入力からの映像を、仮想世界で3Dに変換して、意識は、3Dオブジェクトとして認識します。
この時、意識が使うのが、専用のオブジェクト指向言語です。
オブジェクト指向言語というのはプログラム言語の一種です。
プログラム言語には、オブジェクト指向言語以外に、古くからある手続き型言語ってのがあります。
この違いって何かと言うと、プログラムの設計の仕方に現れます。
たとえば身長と体重から肥満度を計算するBMIって計算式があるとします。
身長と体重を入力するとBMIを出力するプログラムを作ろうって考えるのが手続き型言語です。
それに対して、A君、B君それぞれに身長と体重を設定して、A君は太ってる、B君は痩せてるって管理するプログラムを作ろうって考えるのがオブジェクト指向言語です。
人って、A君は太ってるなぁとか、B君は痩せてるなぁって思いますよね。
BMIなんて抽象的な肥満度を感じてるわけじゃないですよね。
つまり、人は、オブジェクト単位で世界を認識してるってことです。
人の思考は、オブジェクト指向言語に近いってことです。
このオブジェクト指向言語か手続き型言語かってのは、プログラマーからみた視点です。
プログラミング言語には、もう一つ、コンピュータからの視点があります。
たとえば、
1+2
って計算をするとするでしょ。
プログラマーは、「1+2」って書けばいいだけです。
実際に計算するのはCPUです。
でも、CPUは「1+2」なんて文字列を直接実行できません。
「1+2」って計算を実行するには、CPUの持つ足し算って命令を指定するとか、メモリのどこに1を置いて、それをCPUのどこに転送するとか、結果をメモリのどこに転送するとかって、ものすごく細かい指示を書かないといけないんです。
しかも、これはCPUが直接読むので、01の二進数で書かないといけないんです。
CPUが直接読む言語をマシン語って言います。
「1+2」ってプログラムを、マシン語に変換することをコンパイルって言います。
このマシン語に変換して実行するのに二種類のやり方があります。
一つは、長いプログラムをまとめてマシン語に変換するやり方で、これをコンパイラ言語って言います。
もう一つは、プログラムを1行とか、少しずつマシン語に変換しながら実行するやり方で、これをスクリプト言語って言います。
コンパイラ言語は、一気にマシン語に変換して、実際に使うのはマシン語だけなので、速度が速いです。
一方、スクリプト言語は、実行するとき、毎回、マシン語に変換するので遅いです。
でも、スクリプト言語には、コンパイラ言語にない大きな特徴があります。
それは、いつでもプログラムの変更ができるということです。
マシン語は01で書かれてるので人は読めませんよね。
だから、変更するには、元のプログラムを変更してコンパイルし直さないといけないんです。
これ、ものすごく面倒なので、一旦、運用が始めると、原則、変更しません。
一方、スクリプト言語は、人が読めるプログラムのまま運用するので、使いながら、ちょっとここ変更したいと思ったら、すぐに変更できるんです。
さて、次は、今の話を踏まえて、意識と無意識について考えます。
今、こうして見て、感じてるのが意識です。
考えたり、しゃべったりするのが意識です。
じゃぁ、無意識はどんな処理をするでしょう。
たとえば、自転車とかの運転です。
自転車に初めて乗るとき、上手く運転できませんよね。
足でペダルを漕ぎながら、体重移動してバランスを取ってって、頭で考えます。
でも、頭で考えてるうちは、上手く運転できないです。
これが、だんだん慣れて、スムーズに運転できるようになります。
この時、頭で考えたりしてません。
無意識で運転してるんです。
右に曲がるか、左に曲がるかって考えるのは意識ですよね。
考えて右でも左でも曲がれます。
つまり、実行中に自由に変更可能ってことです。
これって、プログラムで言えば、スクリプト言語ですよね。
バランスを取るとかって、無意識でやってますよね。
別のバランスのとり方に変更しようなんて思ってもできませんよね。
実行中に変更できないので、これはコンパイラ言語になりますよね。
つまり、意識が扱うプログラムはスクリプト言語で、無意識はコンパイラ言語のようです。
それから、意識はオブジェクト指向言語で考えていましたよね。
まとめると、意識が扱う言語は、オブジェクト指向言語のスクリプト言語となります。
ようやく準備が整いました。
こっからが本題です。
クオリアです。
まず、熱さのクオリアについて考えます。
グラグラ煮だった鍋に間違って触ったら、「あちーっ」って、思わず手を引っ込めますよね。
これは脊髄反射です。
脊髄反射は、無意識の動作です。
手を引っ込めた瞬間って、じつは、意識は、熱さを感じてないんですよ。
意識が熱さを感じるのは、その後です。
手を引っ込めた後、じわぁっと熱さを感じるんです。
これが、熱さのクオリアです。
無意識は、気付いたら、手を引っ込めてました。
速いですけど、この動作は変更できません。
マシン語を直接実行してるのと同じです。
コンパイラ言語ってことです。
そして、熱さは感じてないんです。
つまり、無意識にはクオリアが存在しないんです。
熱さのクオリアを感じるのは、その後です。
意識は、熱さのクオリアを感じて、その後の動作を決めます。
水道の水で手を冷やしたり、氷で冷やしたり、何もしないって選択もできます。
つまり、実行中に自由に変更できるスクリプト言語です。
つぎは、もう少しじっくり観察してみます。
まずは、無意識です。
手の皮膚で感知した温度が、危険温度以上だと、神経細胞から脊髄に伝わって、そこから直接、筋肉に伝わって素早く手を引っ込めます。
これが脊髄反射です。
次は意識です。
手の皮膚からの温度は、神経細胞を伝って脳に伝わって、意識が熱さを感じるわけです。
このとき、脳の中で熱さのクオリアが生まれたわけです。
意識が感じるのは、この熱さのクオリアです。
これをロボットで実現する場合を考えてみます。
ロボットの手の温度センサーが温度を検知します。
このとき、危険温度以上だと判断すると、モーターを直接動かして、ロボットの手を引っ込めます。
この制御が、無意識の脊髄反射に該当します。
信号の流れを追っていけば理解できるので、この処理の流れは、イージープロブレムですよね。
一方、センサーからのデータは、データに応じたオブジェクトを生成します。
この場合だと、熱さオブジェクトです。
熱さオブジェクトは、温度プロパティを持っています。
意識プログラムはオブジェクトを読むことができます。
つまり、熱さオブジェクトの温度プロパティを読みだします。
これ、どういうことか分かりますか?
これが、意識が熱いって感じたってことです。
ここ、ものすごく重要なことがいっぱいありますけど、気付きましたか?
まず、この熱さオブジェクト、これが、脳でいうところの熱さのクオリアになります。
これは、わかりますよね。
この熱さオブジェクトは、メモリに生成されます。
オブジェクトの生成なので、ちょっと時間がかかります。
意識の認識は、無意識より遅れるのは、メモリにオブジェクトを生成するからのようです。
そして、もっと重要なのは、温度センサーからのデータが、熱さオブジェクトに変換されたってことです。
これ、もう、温度じゃないんですよ。
つまりね、オブジェクトへの変換は、一種のデジタル符号化みたいなもんなんです。
温度センサーのデータは、いわばアナログデータです。
それが、デジタル符号化によって、アナログ量が失われたわけです。
これ、どういうことか分かりますか?
データの流れが、ここで途切れたってことです。
センサーからのデータを追っかけても、オブジェクトが見えないってことです。
人間で言えば、神経細胞をいくら追っかけてお、クオリアは見つからないってことです。
つまり、ここで、ハードプロブレムが生じたってことです。
このオブジェクトについて、もう少し考えて行きます。
オブジェクトはメモリ上に作られます。
メモリ上には、こんなオブジェクトがいっぱいあるわけです。
視覚センサーからのデータは、色オブジェクトになりますし、マイクからのデータは、音オブジェクトになります。
意識プログラムは、これらのオブジェクトを読み出します。
こう言うと、なんか、無機質な感じがしますけど、これ、みんなが普段やってることですよ。
赤いボールペンを見て、赤いなぁって感じたり、鍋を触って熱いなぁって感じますよね。
これは、メモリに生成されたオブジェクトを読みだしてるってことですよ。
それが熱いって感じです。
熱いって感じるのは、熱さを直接感じてるんじゃないんです。
だって、オブジェクトに変換したことで、熱さのデータは失われたんです。
僕らの意識が感じてるのは、ヴァーチャルな熱さなんです。
これが、意識の感じる世界です。
なんで、こんな面倒なことをしてるんでしょう?
それは、オブジェクトとして生成することで、自由に操作できるからです。
熱い手を、水で冷やそうか、氷で冷やそうとかって選べます。
行動を自由に選ぶことができるんです。
今言った意味、わかりますか?
行動を自由に選ぶことができるんですよ。
つまり、自由意志です。
オブジェクト、つまりクオリアが生まれることで、人は、自由意志を獲得したんです。
クオリアがないと、できるのは脊髄反射ぐらいです。
決まりきった行動しかできないんです。
しかも、変更もできないんです。
熱いなぁって、感じることもないんです。
だって、意識がないんですから。
オブジェクトは、熱さとか色とかだけじゃなくて、感情とか、きれいさとか、あらゆるものがあります。
そして、オブジェクトを読むのが意識プログラムです。
意識プログラムは、オブジェクトのプロパティを読むわけです。
きれいさオブジェクトのきれいさプロパティが10ならきれいって感じるわけです。
きれいさオブジェクトのきれいさプロパティが0なら汚いって感じるわけです。
前回お見せした、マインド・エンジンのきれいさとは、このことなんです。
つまり、きれいさクオリアのことなんです。
こうやって、クオリアは、コンピュータで実現できるんです。
クオリアを感じる意識、それを実現してるのがマインド・エンジンってわけです。
はい、今回の動画が面白かったら、チャンネル登録、高評価お願いしますね。
それじゃぁ、次回も、おっ楽しみに!