ロボマインド・プロジェクト、第208弾!
こんにちは、ロボマインドの田方です。
前回、第207回「ロボマインド・プロジェクト 第二章」は、見ていただけましたか?
前回から、ロボマインド・プロジェクトは大きく変わりました。
何が変わったかと言うと、実用的なシステムの開発段階に入りました。
新マインド・エンジン、本格始動です。
前回は、おもに、人間の意識とは何かって点から、新マインド・エンジンを解説しました。
今回は、人間の言語とか思考と、プログラム言語の関係から説明しようと思います。
今回は、久しぶりに、コンピュータ寄りの話になります。
AIやコンピュータに興味ない人も、ぜひ、見てくださいね。
今回の話、プログラムなんか書いたこともない人がみたら、へぇ、プログラム言語って、そういう事だったのって話になると思います。
逆に、現役バリバリのプログラマーがみたら、今、書いてるプログラムの本当の意味がわかって、目からウロコが落ちると思います。
今回の動画を見れば、新しいマインド・エンジンとは、いったい、何なのか。
この半年間、僕らが、いったい、何を作っていたのか。
その、本当の意味がわかると思います。
それでは、始めましょう!
まず、意識の仕組みからおさらいします。
人は、目で見た世界を、頭の中に仮想世界として構築します。
意識は、この仮想世界を介して世界を認識します。
これを、意識の仮想世界仮説と呼んでいます。
詳しくは、この本にかいてます。
説明欄にリンクを張ってますので、興味ある方は読んでください。
前回、意識の特徴は、編集できるって言いましたよね。
これって、どういうことかっていうと、編集できるように世界を認識してるってことです。
もっと言えば、編集できるように、仮想世界をつくり出してるってことです。
「コーラを買う」って考えれたら、「牛乳を買う」って考えることもできますよね。
これが編集可能ってことです。
無意識はそうはいかないです。
熱い鍋に触ったら、思わず手を引っ込めますよね。
これは無意識が認識して行動してるわけです。
これを、次から、上に手を引っ込めるって修正しようとしても、できませんよね。
これが無意識です。
意識が、なぜ、簡単に編集できるのかわかりますか?
それは、編集可能な仮想世界を使ってるからです。
じゃぁ、編集可能な仮想世界って、いったい、どうやって作るんでしょう?
わかりますか?
ここが、今回のキモとなります。
編集可能な仮想世界をどうやって作るか。
それは、オブジェクト指向プログラムで作ります。
ここ、新マインド・エンジンの根幹に関わる所なんで、じっくり説明しますよ。
コンピュータの一番低レベルの話から始めます。
CPUが直接実行できるのは、01の2進数です。
だから、最終的に実行されるプログラムは、2進数で書かれてます。
これをマシン語って言います。
マシン語は、011010・・・とかって0と1が並んでるだけで、人にはさっぱり意味が分かりません。
さて、CPUは、足し算とか、掛け算っていう命令を持ってます。
CPUの持つ命令を、人が見てわかるように対応させたプログラムのことをアセンブラって言います。
足し算ならaddって命令になるわけです。
2+3って足し算をアセンブラで書くと、add 2 3 とかってなります。
アセンブラになると、少しは人が見て分かるようになりますけど、これでも、まだ、分かりにくいです。
そこで生まれたのがプログラム言語です。
プログラム言語は、人が読みやすいように設計されてます。
でも、最終的には、CPUの命令に落とし込まないといけないので、CPU中心に設計されてます。
言ってみれば、CPUが考えやすいように設計されてるわけです。
命令中心というか、計算中心と言ってもいいです。
こういったプログラム言語を、手続き型言語って言います。
手続き型言語で有名なのは、C言語ですね。
さて、手続き型言語は命令や計算が中心ですけど、人間は、そんな風には考えないですよね。
じゃぁ、人間って、どんな風に考えるでしょう?
たとえば、リンゴがあるとします。
リンゴは赤くて丸いです。
手を離すと下に落ちます。
つまり、リンゴって、物を中心に考えて行きますよね。
これがオブジェクト指向って考え方なんです。
じゃぁ、これを手続き型言語で考えるとすると、どんな風になるでしょう?
それは、たとえば、落ちるって動きを計算するプログラムを、最初に書くんですよ。
ほんで、そのプログラムに、リンゴを渡すと、何秒で落ちるとかって計算します。
これが、手続き型言語の考え方です。
別の見方をしてみます。
物理世界には、重力場って場があります。
その重力場に何か物を置けば、重力が作用して、物は下に落ちます。
つまり、最初に、その重力場をプログラムで作るわけです。
それが、手続き型言語の考え方です。
でも、重力場って目で見えませんよね。
抽象的な概念です。
普段、生活してて、そんなこと、思わないですよね。
「あぁ、ここに重力場がある」とかって。
それより、リンゴとか、実体のある物をまず、思い浮かべますよね。
リンゴって実体のある物を思い浮かべてから、あぁ、リンゴは重さがあるとか、下に落ちるよなぁって思いますよね。
物を中心に考えるって、こういうことです。
これがオブジェクト指向って考え方です。
手続き型言語ってのは、コンピュータ中心の言語でした。
コンピュータ寄りの手続き型言語から、人間の思考に近い、オブジェクト指向言語に、プログラム言語が進化したんです。
オブジェクト指向言語が生まれて、プログラムが書きやすくなったって、よく言われています。
だって、頭で自然と考えるように、プログラムが書けるんですから。
コンピュータプログラムの解説書を読むと、よく、こんな風に書いてあります。
これはこれで正しいんですけど、この話、これ以上に、もんのすごく重要な意味を持ってるんです。
分かりますか?
さっき、人が自然と考えるようにプログラムが書けるって言ったでしょ。
はい、出てきました「自然」ってキーワード。
これが出てきたら、注意しないといけませんよ。
人が自然に出来ることです。
「自然と出来る」って、何を意味するかわかりますか?
それは、人の頭が、そんな風に作られてるってことです。
これ、どういうことかわかりますか?
これ、人の頭のプログラムは、オブジェクト指向言語で書かれてるってことです。
わかってきましたか?
人が考えるシステム、心のシステムは、オブジェクト指向言語で作られるべきなんですよ。
本題に戻ります。
マインド・エンジンです。
今回のマインド・エンジン、じつは、プログラムをつくったってわけじゃないんです。
そうじゃなくて、プログラム言語を作ったんです。
この違い、分かりますか?
プログラムは、プログラム言語で書きます。
今回つくったのは、ある特殊なプログラムを書くためのプログラム言語を作ったってことなんです。
じゃぁ、その「ある特殊なプログラム」って、いったい何でしょう?
それは、正確に言うと、プログラムじゃないです。
言葉です。
人が普段、話す言葉です。
自然言語っていわれるもんです。
人は、考えるとき、言葉で考えますよね。
さっき言いましたけど、人が頭で考えるって、実体のある物を中心に考えますよね。
つまり、オブジェクト指向です。
そして、オブジェクト指向で考えたものを、文字に変換したのが言葉です。
だから、オブジェクト指向言語で書かれたプログラムは、容易に自然言語に変換できるんです。
新マインド・エンジンとは何か。
それは、自然言語を読み書きするための、「プログラム言語」、そのものです。
これが、今回のマインド・エンジンの本質です。
この半年、僕らが何を作ってたか、わかってきましたか?
ここらで、今回のマインド・エンジンをお見せします。
これが全体像です。
MindEngineコンソール、無意識、意識、仮想世界の大きく4つからなります。
MindEngineコンソールに、「コンビニがある」って自然言語の文を入力すると、
まず、無意識に送られて、中間言語に変換されて、次に意識に送られます。
そして、意識で、中間言語をスクリプト言語に変換します。
このスクリプト言語が、オブジェクト指向言語です。
ちょっと、ややこしいですよね。
スクリプト言語とオブジェクト指向言語の違いについて、軽く復習しときます。
CPUが理解できるのは二進数のマシン語です。
プログラムをマシン語に変換することをコンパイルって言います。
このコンパイルの仕方が二種類あるわけです。
一つが、プログラム全体をまとめて処理するコンパイラ言語です。
もう一つは、プログラムを1行とか、1文ずつコンパイルするスクリプト言語です。
今回作った言語は、スクリプト言語ってわけです。
なんでスクリプト言語にしたかというと、1文ずつコンパイルするので、編集が簡単にできるからです。
つまり、文を組み合わせた文章を自由に作れるってことです。
このことは、前回、詳しく説明したので、わからなかったら前回の動画を見てください。
今回説明したのはオブジェクト指向言語です。
これは、プログラムの書き方の話です。
ほんで、今回のマインド・エンジンで作ったのは、オブジェクト指向のスクリプト言語ってわけです。
ちなみに、最近流行りのプログラム言語、Pytonも、オブジェクト指向のスクリプト言語です。
あと、java scriptとか、Rubyとかもです。
オブジェクト指向のコンパイラ言語としては、C++とかjavaとかC#があります。
ちなみに、マインド・エンジン自体は、C#でつくってます。
まぁ、こんな話はあまり重要でないので、分からなくても気にしなくてもいいですよ。
オブジェクト指向言語の話をしてたら、今回も、マインド・エンジンの説明が、ほとんどできなくなったので、最後に、今回解析する文章を一通り実行してお見せします。
まず、「太郎がコンビニに行く」を入力して実行します。
そしたら、この意識の「状態スクリプト」に、この文を変換したスクリプト言語が表示されましたよね。
詳しい説明は、次回にするとして、どんどん実行していきます。
次は「コンビニでは150円のコーラを売っている」を入力して、実行します。
はい、さらにスクリプトが追加されましたよね。
次は「太郎は500円を持っている」です。
はい、これが追加されたスクリプトです。
次は「太郎はコーラを1本買う」です。
はい、スクリプトが追加されました。
それと同時に、仮想世界も変化しましたよね。
じつは、ここが重要なんです。
仮想世界を変化させること、これこそが、意味を理解してるってことなんです。
いよいよ、次回は、意味理解の核心に迫ります。
言葉の意味を理解することと、スクリプト言語を解釈して実行することは、同じだって話です。
どちらも、仮想世界を変化させることなんです。
なぜ、そう言えるのか。
次回、じっくり説明しますね。
はい、今回の動画が面白かったら、チャンネル登録、高評価お願いしますね。
それじゃぁ、次回も、おっ楽しみに!