第219回 みんなで、脳みそを作ろう!


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

僕らが、今、つくってるのがマインド・エンジンです。
マインド・エンジンっていうのは、人間の心、脳を、コンピュータで再現して、普通に会話ができるシステムです。
今回は、このマインド・エンジンの開発環境を、お見せしたいと思います。
開発環境といっても、マインド・エンジン自体を作る方じゃないです。
マインド・エンジンを育てる方の話です。

もうちょっと説明しますね。
人間は、生まれた時、脳の基本構造はできてます。
でも、中身は空っぽです。
中身ってのは、この世界の知識とか法則、それから言葉です。
これらは、誰かに教えてもらったり、経験することで身に付きます。

マインド・エンジンは、まだ、生まれたばかりの脳です。
中身は空っぽです。
脳にいろんな言葉を教えるのは、僕らだけじゃ無理です。
誰かに手伝ってもらう必要があります。
それが、誰かと言うと、それは、今、このYouTubeを見てるあなたです!
みなさんで、マインド・エンジンに、言葉や知識を教えてあげてください。
お願いします。

でも、いきなり、マインド・エンジンに言葉を教えてくれと言われても、困りますよね。
そこで、具体的に、どうやって、マインド・エンジンに言葉を教えるかについて説明しようと思います。
これが、今回のテーマです。
みんなで、脳みそを作ろう!
それでは、始めましょう!

ところで、マインド・エンジンの知識って、具体的にどういうものでしょう?
マインド・エンジンの基本構造と、何が違うんでしょう?
そこで、まず、マインド・エンジンの仕組みを振り返って、どこが基本構造で、どこが知識かってことから説明します。

これが、マインド・エンジンの全体像です。

マインド・エンジンは、MindEngineコンソール、無意識、意識、仮想世界から構成されます。
マインド・エンジンの一番の特徴は、文の意味を理解できるってことです。
たとえば、「太郎がコンビニでコーラを買った」って文章を理解させてみます。
この文章を、MindEngineコンソールから入力すると、意識は、その文をマインド・エンジン専用のプログラムに変換します。
これが、変換したプログラムです。

そして、このプログラムを実行すると、仮想世界が作られます。
これが、そのときの仮想世界です。

これを見たらわかると思いますけど、Beforeで、コーラの所有者がコンビニとあったのが、Afterだと、太郎に変わっています。
そして、アクションを見てみると、「買う」となってます。
これは、太郎がコーラを買うことで、コーラの所有者がコンビニから太郎に移ったことを示してます。
つまり、コーラが、太郎の物になったわけです。
これが、この文で、一番、重要ですよね。
その一番重要なことを抽出できてるわけです。
これが、意味を理解したってことです。
プログラムを実行して、仮想世界を作る仕組みが、マインド・エンジンの基本構造です。

マインド・エンジンが理解するのは、さっき見せた専用のプログラム言語です。
一方、人間が理解するのは、言葉です。
赤ちゃんは、1~2歳ぐらいから言葉を覚えるようになります。
大人は、これは、リンゴよ、これは犬よって、言葉を教えますよね。

それと同じことを、マインド・エンジンにもするわけです。
でも、リンゴ、犬って文字をマインド・エンジンに登録しただけじゃ、意味ないですよね。
何がリンゴで、何が犬か分からないからです。
じゃぁ、リンゴの写真と「リンゴ」って文字、犬の写真と「犬」って文字を関連づけたらいいんでしょうか?
それも、ちょっと違うんです。
だって、リンゴの写真を見てリンゴって思うのは、人間の頭だからです。
人が頭で思い浮かべるのと同じものを教えないと意味ないんです。
じゃぁ、人が頭で思い浮かべるものって、マインド・エンジンで言えば何にあたるでしょう?
わかります?
それは、仮想世界です。
つまり、マインド・エンジンに言葉を教えるってことは、仮想世界に配置するデータを定義するってことなんです。

マインド・エンジンの仮想世界って、人と同じです。
人は、目で見た世界を頭の中で仮想世界として構築します。
意識は、仮想世界を介して現実を認識します。
これを、意識の仮想世界仮説っていいます。
詳しくは、この本に書いてありますので、良かったら読んでください。

意識が認識する世界は、今、見えてる、この3次元世界だけじゃありません。
目に見えない抽象的な世界も含まれます。
その一つが、所有権世界です。
所有権世界というのは、誰が何を持ってるとか、物をあげるとか、売るとかを定義した世界です。

仮想世界には、物や人が配置されます。
仮想世界に配置される人や物のことをオブジェクトって言います。
オブジェクトは、その物の属性を示すプロパティと、振る舞いを示すメソッドを持ってます。

リンゴオブジェクトは、赤色っていうプロパティとか、落ちるってメソッドを持ってます。
ただし、これは、3次元仮想世界のリンゴオブジェクトです。
所有権世界のリンゴオブジェクトなら、所有者ってプロパティがあります。
それから、所有者は、あげるとか売るとかってメソッドを持ってます。

こんな風に、仮想世界ごとに、オブジェクトを定義していくことになります。
こうやって、オブジェクトを定義すること、これが、マインド・エンジンに言葉を教えることなんです。

はい、ようやく、準備が整いました。
それじゃぁ、さっそく、どうやってマインド・エンジンに言葉を教えるか、説明していきます。

これが、言葉を教える画面です。

単語と、その関連が表示されてます。
単語は、こんな風に自由に動かすことができます。

ここにある単語は、所有権世界で使う単語です。
どこで所有権世界かって分かるかと言うと、左上の「ドメイン」ってとこが「所有権」となってますよね。
これが所有権世界ってことです。

さっき、世界に配置されるのはオブジェクトって言いましたよね。
オブジェクトっていうのは、プログラム言語の一種、オブジェクト指向言語で使われるデータモデルのことです。
オブジェクトの基になるものをクラスっていいます。
クラスも、プロパティとメソッドを持っています。

左上の「UML」を押すと、この画面に切り替わります。
これを、クラス図といいます。

これは、所有者クラスのクラス図で、「所持金」とか「所有者」ってプロパティを持ってます。
それから、「買う」とか「売る」ってメソッドも持ってます。

じつは、プログラムを設計する場合、まず、こういったクラス図を書くんです。
そのクラスはどんなプロパティとメソッドを持ってるかってことを決めていくわけです。
これが、言葉の意味を定義するってことです。
なんとなく、わかってきましたか?

もう少し、詳しくみていきますね。
元の画面に戻ります。

中央にあるのが「所有者」です。
「所有者」は、「所持金」、「所有物」につながってますよね。
これが、所有者クラスのプロパティになるわけです。

そらから、「あげる」とか「売る」、「買う」って動詞もありますよね。
これらが、所有者クラスのメソッドになるわけです。
それじゃぁ、ここに、「もらう」って言葉を追加してみましょう。

まず、右上の、この星マークをクリックすると、

「新規ノード登録」ってフォームが出てきます。

ここに、「ノード名」を「もらう」
「英語句」を「Get」
「型」を「動詞概念」
「ドメイン」を「所有権」
「レイヤー」を「動詞」として「ノード追加」ボタンを押します。
すると、「もらう」ってノードができました。

次は、上のここをクリックして、

「所有者」から「もらう」に繋げて「can」を選択すると、動詞「もらう」と所有者が関連付けられました。

「UML」ボタンをクリックしてクラス図を確認すると、「もらう」が所有者のメソッドとして追加されましたよね。

この、「もらうメソッド」の中身は、別に、プログラムで書きます。
内容は、Getメソッドに、物オブジェクトを渡すと、所有者の所有物プロパティに追加されるってプログラムです。
たとえば、Get(cola)って書くと、Getメソッドにcolaを渡したことになるので、所有物にコーラが追加されるわけです。
これが、「コーラをもらう」の意味です。
こんな風にして、言葉を定義していくわけです。

もう少し、他も見て行きます。

たとえば、ピンクの線はis-aとなってますよね。

所有者と店舗の関係とか、所有者と客との関係とかです。
is-aの関係っていうのは、「~の一種」って意味です。
店舗は所有者の一種とか、客は所有者の一種ってことです。

所有者には、所有物ってプロパティとか、「売る」とか「買う」とかってメソッドが定義されてましたよね。
この所有者とis-aの関係にある物は、すべて所有者と同じプロパティやメソッドを持ちます。
たとえば、店舗に、is-aの関係としてコンビニを追加するとします。
すると、コンビニに何も書かなくても、自動で、所有物プロパティや、売るメソッドを持つことになります。
こんな風にして、単語を登録していくわけです。

もしかして、AIとか自然言語処理をよく知ってる人が見れば、これって、意味ネットワークと同じじゃないかって思う人がいるかもしれません。
これが、意味ネットワークです。

意味ネットワークっていうのは、自然言語処理の意味理解で使われていたものです。
たしかに、is-aの関係とかあって、一見、同じように見えますよね。

じゃぁ、意味ネットワークと、マインド・エンジンとでは何が違うんでしょう?
それは、意味理解の中身です。
意味ネットワークで出来ることと言えば、「人間は哺乳類の一種ですか?」って質問に答えることぐらいです。
これが、意味ネットワークを使った意味理解の限界です。
意味ネットワークで表現できるのは、静止した世界です。
ダイナミックに動く世界は表現できません。

それに対して、マインド・エンジンの意味理解は、仮想世界が中心です。
仮想世界は、人間が頭で思い描くように、ダイナミックに動くことができます。
そして、仮想世界に配置され、ダイナミックに動くのがオブジェクトです。
そのオブジェクトを定義するツールが、今回、説明したツールです。

もう少し、今のAIと比べてみます。
最近の流行りはディープラーニングなどの機械学習です。
ビッグデータを使った自動学習です。
それじゃぁ、オブジェクトの登録も、機械学習で自動で出来ないんでしょうか?

たとえば、大量の文書を読み込んで、自動で単語を登録するとかです。
これ、一見できそうですけど、そうはいかないんですよ。
だって、文章に書いてあるのは言葉です。
マインド・エンジンに登録するのは、言葉の意味です。
言葉の意味って言うのは、最終的には、頭の中の仮想世界で定義するものです。
たとえば、「落ちる」の意味を定義するには、3次元空間が必要です。
重力まで再現した物理シミュレーターがあって、初めて、落ちるを定義できます。
言葉だけで、落ちるの意味は定義できないんです。
だから、いくら大量の文書を用意しても、言葉の意味は定義できないんです。

言葉の意味が難しいのは、意味とは、主観が感じることだからです。
それを、なんとか客観的に定義しようとしてるわけです。
「落ちる」の本質とは何かって、そんなことを考えながら定義していかないといけないんです。
「落ちる」なら、3次元世界で定義されるだろうとかって。

そのうち、もっと難しい言葉を定義していく必要があります。
たとえば、「愛」なんて言葉も定義しないといけないので、この仕事、かなり大変やと思います。

最近のAIブームで、ビッグデータを解析するデータ・サイエンティストなんて職業が生まれました。
それと同じように、マインド・エンジンで言葉を定義する仕事として、マインド・サイエンティストとかって、新しい職業が生まれるかもしれません。
あなたも、マインド・サイエンティストになってみませんか?

今回紹介したマインドエンジンについては、新マインド・エンジンっていう再生リストで詳しく解説しているので、よかったら、こちらもご覧ください。

はい、今回の動画がおもしろかったら、チャンネル登録、高評価お願いしますね。
それじゃぁ、次回も、おっ楽しみに!