ロボマインド・プロジェクト、第66弾
こんにちは、ロボマインドの田方です。
物に名前があることを知ったヘレン。
このとき、本当の意味で、言葉を獲得したわけです。
そして、その10分後。
ヘレンは、言葉だけじゃなく、人間の心も獲得したんです。
前回の話はここまででした。
もし、まだ見てない方は、ヘレン・ケラーシリーズの①~③を見ておいてください。
今回は、人間らしい心について、もう少し、掘り下げて考えていきます。
ロボマインド・プロジェクトで創ろうとしているのはロボットの心です。
コンピュータで心を創ることです。
第64回「ヘレン・ケラー② 意味がわかる、わからないって、どういうこと?」で、プログラム言語の一種、オブジェクト指向言語の話をしました。
言葉って、オブジェクト指向言語と同じだって話です。
(ホワイトボード)
これがオブジェクトです。
ここ、もう少し突っ込んで解説します。
オブジェクトって、よく、タイ焼きでたとえられます。
中に入ってる餡がプロパティです。
ほんで、このオブジェクト、どうやって作るか知ってます?
「クラス」ってのから作るんです。
このクラス、タイ焼きでいうと、タイ焼きの型です。
タイ焼きって、型に生地を流し込んで作りますよね。
型さえあれば、同じ形のタイ焼きをいくつでも作れます。
餡を変えれば、いろんな種類のタイ焼きを作れるってわけです。
言葉の凄いとこって、名前をいうだけで、頭の中に、それを思い浮かべることができることです。
つまり、オブジェクトを作れるってことです。
ヘレンは、井戸の水に手を触れたとき、物に名前があることに気づいただけじゃなくて、名前からオブジェクトを生成できるって仕組みにも気づいたんです。
たとえて言えば、タイ焼きを作ってるとこを始めて見た子供です。
「うわー、見て、お母ちゃん!
タイ焼きって、ああやって作るんやって」
「あんた知らんかったん?
タイ焼き器やったら、ウチにもあるで」
って言われたようなもんです。
「うっそー」
「じゃ、タイ焼き、ウチでも作れんの?」
ってなりますやん。
ヘレンが驚いたのは、これやったんです。
水って言ってみます。
そしたら、頭の中に、水を思い浮かべることができたんです。
名前を言うだけで、いくらでもオブジェクトを作り出せるって気づいたんです。
そりゃ、興奮しますよね。
それでは、想像したとき作られるオブジェクトは、どこにできるでしょう?
オブジェクトが作られるのは、仮想世界です。
今見ている世界も、仮想世界です。
このことは、詳しくは、第21回「意識の仮想世界仮説」をご覧ください。
それでは、頭で想像したとき作られるオブジェクトは、今見てる世界にできるんでしょうか?
思っただけで、目の前の現実世界に、タイ焼きが出現したりしないですよね。
現実世界に実際にあるものと、頭で想像したものが混在したら、ムチャクチャになってしまいます。
それじゃ、「タイ焼き」って思ったとき作られるオブジェクトは、どこにつくられるんでしょう?
それは、目で見てる世界とは別に、仮想世界を創って、そこに生成してるんです。
その仮想世界を、「想像仮想世界」と呼ぶことにします。
じつは、これこそが、人間特有の意識、つまり、言語や知能に関わる最も重要な構成要素となります。
これこそが、意識に必要な第三の鍵といえます。
第一の鍵は、クオリア、第二の鍵は、客観的に自分を見ることです。
詳しくは、第58回「意識に必要な2番目の鍵」を見てください。
さて、この第三の鍵を使えば、頭の中に、自由にオブジェクトを作り出すことができます。
さらに、ああしたらどうだろう、こうしたらどうだろうって想像もできるわけです。
つまり、作り出したオブジェクトを自由に操作することもできるわけです。
さて、ここから、ようやく、前回の続きにはいります。
あらゆる物には名前があることに気づいて、部屋に戻ったヘレンが、まず、したのは、今朝、自分が壊した人形を探すことでした。
そして、部屋の隅に、壊れた人形の破片を探り出しました。
そして、何とか繋ぎ合わせて元の人形に戻そうとしました。
でも、ダメでした。
ヘレンの目には、涙がいっぱい溜まってきました。
ヘレンは、生まれて初めて、後悔という感情を感じたんです。
今、やろうとしてるのは、この時、ヘレンの頭の中で起こったことを、忠実にコンピュータプログラムで再現することです。
オブジェクト指向言語について、もう少し説明します。
オブジェクトは、オブジェクト同士で関係を表現することができます。
たとえば、こんな感じです。
(ホワイトボード)
これは、部屋は机と椅子を持つってことを示しています。
たとえば、部屋を思い出します。
そのとき、部屋オブジェクトには机オブジェクトや椅子オブジェクトが関係してるので、部屋を思い浮かべたとき、机や椅子も一緒に思い浮かべるわけです。
思い出すの逆は、覚えるです。
部屋を見たとき、机と椅子があるって認識したとします。
それを、部屋は机と椅子を持ってると関連付けて保存するわけです。
これが記憶です。
ヘレンの部屋には、人形もあったので、部屋に関連付けて人形も記憶されているわけです。
部屋に戻ってきたヘレンは、人形のことを思い出すわけです。
部屋の隅にある破片を、人形の破片と認識したわけです。
これ、以前のヘレンなら、人形の破片と認識できたでしょうか?
さっき、記憶の仕組みについて説明しました。
記憶するには、認識した物をオブジェクトとして管理できる仕組みがないとできません。
こっちのシステムです。(ホワイトボード)
以前のヘレンは、こっちのシステムです。
認識した物に対して、行動するだけです。
部屋の隅で人形の破片を認識したとします。
部屋の隅に転がってる、破片です。
食べ物でもないし、生き物でもないし、ただの邪魔な破片です。
ゴミと同じです。
以前のヘレンなら、部屋にゴミが落ちてるぐらいにしか感じなかったでしょう。
ところが、今は、それが壊れた人形の破片だと分かるわけです。
なぜ、これが理解できるのでしょう?
それが理解できるには、まず、人形を壊したという出来事を記憶する必要があります。
記憶というのは、さっき説明しましたけど、オブジェクトの保存です。
オブジェクトは、関連付けて保存されます。
最初、人形があります。
それを床にたたきつけました。
床にバラバラになって飛び散ります。
この一連の状態を時間順に保存するわけです。
それを、人形と関連付けて保存します。
そして、この人形は、部屋に関連付けて保存します。
こうやって、関連するオブジェクトを辿ることで、部屋に落ちてる破片が、人形の破片だと理解することができるわけです。
オブジェクト同士を関連付ける仕組みができて、初めて、出来ることなんです。
さて、ここ、もうちょっと突っ込んで考えていきますよ。
なんで、物には名前があるって気づいただけで、こんなことができるようになったんでしょう。
こっちのシステムは、何かを認識したら、それに対する行動が結びついてるわけです。
何か認識したわけですから、これも、一種のオブジェクトといっていいかもしれません。
それに結びついてるのが、動作です。
それって、オブジェクトのメソッドと言えるかもしれません。
それじゃぁ、こっちのシステムも、オブジェクトになってしまいますよね。
あれ、今までの話と矛盾しそうです。
もう少し進めますよ。
それじゃ、こっちのオブジェクトになくて、こっちのオブジェクトにある物って何でしょう。
それは、「名前」ですよね。
さっき、オブジェクト同士は関連で結びついているって説明しましたよね。
じつは、関連っていうのは、オブジェクト指向言語ではプロパティを使って実現するんです。
名前プロパティの場合、文字列オブジェクトとして関連付けられるわけです。
この辺りは、プログラム言語の話なので、ちょっと分かりにくいと思いますが、名前も関連ってことが分かれば大丈夫です。
そうなると、ヘレンがアクセスできるようになったのは、オブジェクト同士の関連のネットワークと言えそうです。
こっちのシステムは、オブジェクト同士の関連がないわけです。
ところが、こっちのシステムは、オブジェクト同士が複雑に関連し合ってるわけです。
イメージとしては、一つ一つオブジェクトがあるわけです。
それらを関連付ける層、レイヤーがあるわけです。
たぶん、脳の中だと、ニューラルネットワークで関連付けられてるんだと思います。
そして、今までのヘレンは、そのレイヤーにアクセスできなかったわけです。
アクセスできたのは、オブジェクトのメソッドだけだったわけです。
外界に対する動作だけなんです。
それが、井戸の水に触れたとき、「水」っていうのは、左手を流れる液体の名前だって気づいたわけです。
水オブジェクトの名前プロパティを介して、関連のレイヤーにアクセスしたわけです。
すると、一気に、様々なオブジェクトにアクセスできるようになったわけです。
さて、もう一度、こっちのシステムと、こっちのシステムの違いを確認しておきましょう。
こっちのシステムは、オブジェクトを認識すると、外界に動作として出力して終わりです。
こっちのシステムは、オブジェクトを認識すると、関連するオブジェクトを自由に辿ることができます。
外界に出ることなく、オブジェクトの関連を辿って操作することができるわけです。
これ、どういうことかわかりますか?
これが、考えるってことです。
考えることができるようになったんです。
外界への出力は、言ってみれば、入力情報を処理した結果です。
こっちのシステムだと、何も考えずに、入力に対して決まった行動をするだけです。
ところが、こっちのシステムだと、いろいろ考えることができるわけです。
考えてから行動するわけです。
同じ入力であっても、考えた内容によって、行動が変わるわけです。
壊れた人形を見て、涙を流して後悔するかもしれません。
別の子は、新しい人形買ってってねだるかもしれません。
人によって、行動が変わるわけです。
性格や経験によって、行動が変わるわけです。
それが人間です。
オブジェクトの関連のネットワークにアクセスすることで、人間らしい心が生まれそうです。
わかったのは、まだ、そこまでです。
目標は、後悔の感情を理解することです。
後悔って感情を、プログラムでどうやって実現するかです。
あと、もう一歩です。
次回こそ、そこまで行きますよ!
それでは、次回も、お楽しみに!