第77回 脳の中のCPU④ あ~、悪いことしてる! 〜検出プログラムの作り方


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

今回の「脳の中のCUP」シリーズ、ようやく、脳の中のCPUで動くプログラムの話です。
コンピュータと心じゃ、目的が別なので、根本的な考え方を変えないといけないって話です。

それを意識して作らないと、トンチンカンなプログラムになってしまうんです。
何か文を入力して、何か文が出力されたらいいんやな。
CPUには、こんな演算回路があるから、それを使って作ろう。

そんな短絡的な発想で作るから、いまだに、まともに会話できるチャットボットができないわけです。
たとえば、CPUを使えば、文字列が一致するかどうか判定することは簡単にできます。
「こんにちは」って入力文を判定して、その場合は、「こんにちは」って出力する。
これで会話したことになってるのが、今の、チャットボットです。

でも、会話するのは人間です。
人間は、脳で考えます。
脳の中には、もっと違うものを判定する機能があるはずです。
人間社会で、間違った行動をしてる人を見つけると、「あっ」と反応する機能とかです。
その機能を使ってプログラムを作らないと、人間の心はできないわけです。
CPUにある機能をつかって、入力文から出力文を作ろうって発想から離れないと、ちゃんとした会話ができるプログラムなんて、できないんです。

それじゃぁ、CPUになくて、人間の脳にある機能ってなんでしょう?
それが、これです。
(ホワイトボード)

上の問題は、未成年が飲酒してないかを確認するには、誰をチェックしたらいいかって問題です。
これは、すぐに、女子高生って、すぐにわかります。

下の問題は、母音の裏は偶数でないといけないってルールに違反してないか確認するには、どのカードをチェックしないといけないかって問題です。
この問題は、上の問題とちがって、頭がこんがらがってしまいます。

ここ、もう少し詳しく考えていきます。
「脳の中のCPU」の第一回でも言いましたけど、CPUで計算するには、演算回路があるわけです。
たとえば、足し算回路ってのがあって、そこに二つの数値を入れると、足し算した結果が出力として出てくるわけです。

脳の中も同じと考えたらいいんです。
たとえば、未成年が飲酒してるかどうかを判断する回路があるわけです。
入力するのは、飲み物と、飲んでる人物です。
出力は、社会ルールを守ってるか、違反してるかです。

そして、社会ルールに違反してると、それに応じた感情もあるわけです。
悪いことしてるって、思う感情です。
重要なのは、ここです。

動物には、恐怖とか、お腹がすいたとかって感情があるわけです。
それと同じように、社会ルールに違反してると、悪いことしてるって感情が出るわけです。

未成年の飲酒判断回路に、60代の親父と日本酒を入力しても、とくに、何も感じないわけです。
居酒屋で、オッサンが日本酒飲んでるの見ても、この回路は反応しないわけです。

未成年飲酒判断回路に、女子高生とビールって入れると「ルール違反してる」って出力されるわけです。
この出力は、社会的感情に結びついてて、「あ~、悪いことしてる」って心が反応するわけです。

ほんで、感情っていうのは、行動の原動力となります。
なにかの行動させようって力が働くわけです。

居酒屋で、女子高生がビール飲んでるのがチラッとみえると、
「あれ、あかんちゃうん」って、指差して友達に言うわけです。

これは、相手も同じ回路を持っていて、相手も同じ状況をみれば、同じ感情が発生すると思うからです。
自分と相手が同じ感情が発生するってことは、これは、共感です。
共感は、同じ仲間の絆を強める働きがあります。
仲間と共感したいってのも、社会的感情です。
だから、女子高生を指差して、「あれ、あかんちゃうん」というわけです。
そしたら、その友達も、「ほんまや、あかんなぁ。最近の若い奴は」とかなるわけです。

会話って、こういうものですよね。
お互いに持ってる社会的感情を使って、社会的感情が響き合うように、語り合うんですよ。
それで、仲間との一体感が生まれるわけです。
それから、社会のルールを守ろうって方向に力が作用するわけです。
こうやって、社会がまとまって安定するわけです。

一方、脳は、一時的に回路を組み合わせてルールを作ることもできます。
いろいろ組み合わせて、母音の裏は偶数って回路を作ることもできます。
でも、それはなんの感情にも結びついてないわけです。

カードが並んであって、「7」の裏が「う」だったのをみつけても、
何にも感じないわけです。
「7の裏は子音にすべき」と感じないわけです。
「~すべき」って行動が引き起こされないんです。
出力が感情に結びつくか、結びつかないかって、こういう事なんです。
行動を駆り立てるものが出てこないんです。

社会的感情って、善悪みたいな倫理観だけじゃなくて、恥とか、嫉妬とか、いろいろあるって話を、前回しました。
どれも、何らかの行動を駆り立てます。

たぶん、社会的感情は、もっと細かいのもあると思います。
たとえば、大きな声でしゃべる人が気になったり、やたらと近づいて話す人が気になるとか。

そんなのが気になるのは、おそらく、そういう社会的感情の回路があるんやと思います。
それが、その社会で共有されてるから、
「あの人、しゃべる時、近すぎない?」
とか、影で言われたりするわけです。
これが、脳の中にある演算回路ってわけです。

さて、それでは、その演算回路が機能するには、どんな仕組みが必要なんでしょう?
こっからです。
ようやく、本題にはいります。

CPUで動くのは、コンピュータプログラムです。
アセンブリ、マシン語、高級言語など、いろいろありますけど、最終的にはCPUの演算回路で計算が実行されます。

その演算回路に入力されるのが、01の値です。

それでは、脳の中はどうなっているでしょう?
人間の意識が認識するのは仮想世界でしたよね。
詳しくは、第21回「意識の仮想世界仮説」を見ておいてください。

頭の中に3次元の仮想世界を創って、目で見た世界を、仮想世界として構築するわけです。
仮想世界の中に、人や物のオブジェクトを生成して、意識は、そのオブジェクトを認識するわけです。

オブジェクトっていうのは、プログラム言語の種類のオブジェクト指向言語の事です。
オブジェクト指向言語については、第64回「ヘレン・ケラー②」で詳しく解説してるので、そちらも参考に見ておいてください。

簡単に説明すると、オブジェクトというのは、その物の属性を表すプロパティと、動作を表すメソッドがあるわけです。
人物の場合、名前とか、年齢、男か女かってのがプロパティになるわけです。
食べるとか飲むとかがメソッドとなります。

それから、プログラムでは関数というものを作ります。
関数というのは、入力と、中身の計算と、出力から成ります。
ここでは、未成年飲酒判定関数というのを作りましょう。

さて、頭の中では、人や物はオブジェクトで出来てるわけです。
ほんで、未成年飲酒判定関数は、入力として、人物オブジェクトと、その人が飲んでる飲み物オブジェクトを取るわけです。

判定関数は、人物オブジェクトの年齢プロパティが20歳以下で、飲んでる飲み物がアルコールだったら、ルール違反って出力を出すわけです。

それとは別に、感情も関数として用意しておきましょう。
感情の出力は、特定の行動を駆り立てます。

お腹がすいてたら、食べ物を食べたいって行動を駆り立てます。
怖いものが近づいてきたら、その怖いものから離れたいという行動を駆り立てます。

ほんで、感情の中に、社会的感情があるわけです。
社会的感情は、「~すべき」っていう行動を駆り立てます。

未成年飲酒判定関数が「ルール違反」って出力すると、それは、社会的感情関数に送られます。
社会的感情関数は、ルール違反をしてる人と、ルールの内容が入力されて、「その人物はこうすべきだ」って行動が出力されるわけです。
この場合、「女子高生は、お酒を飲むべきでない」って出力されるわけです。

意識は、その出力を受け取ると、
「あっ、女子高生がお酒飲んでる。飲んだらあかんのに~」って思うわけです。

今の場合は、他人の行動を見たときの感情の場合ですけど、対象とする人物が、相手とは限らないです。
自分の場合もあります。
たとえば、自分が未成年で、お酒を誘われて飲もうかなと思ったとします。
そんな場合、社会的感情関数は、自分に対して、「お酒を飲むべきでない」って思わすわけです。

そう思って、「お酒は止めときます。ウーロン茶にしときます」って行動をするか、誘惑にまけてお酒を飲むかは、その人の性格によるわけです。
その話は、また、次の段階の処理となるので、その話が、また、別にします。
いずれにしても、どう行動すべきって、行動への圧力が生まれるわけです。
それで、「あ~、どうしよっかな~」
って悩みを生み出すわけです。

これだけの機能が備わって、初めて、人間社会で、人間らしいふるまいができるわけです。
こんな機能のないチャットボットが、自然な会話ができないのは、当たり前といえば当たり前ですよね。

さて、まだ、これだけでは全て解決していません。
(ホワイトボード)この二つの問題、上と下では、解くのにかかる時間が、全然違いますよね。
それは、なぜでしょう?
そこに、脳の回路の秘密があるわけです。
それは、人間と他の動物の違いでもあります。

次回は、そのあたりについて詳しく説明したいと思います。
興味があれば、チャンネル登録、お願いしますね。

それでは、次回もお楽しみに!