(筆箱に鉛筆を入れるデモ動画数秒)
ロボマインド・プロジェクト、第134弾!
こんにちは、ロボマインドの田方です。
今回は、新しいデモをお見せします。
マインド・エンジンのデモ、第4弾です。
今回は、今までのデモとは、ちょっと趣向が違います。
まず、軽く、復習しますよ。
言葉って、文字の集まりなんで、客観的に分析できます。
つまり、科学の対象になるんですよ。
客観的に分析できるものだけで言葉を扱ってるのが、今のAI、自然言語処理です。
AIスピーカーとか、iPhoneのSiriとかです。
でも、AIスピーカーとか、Siriとか、会話が続かないでしょ。
客観的に分析できるものだけで作ると、あぁなるんですよ。
この単語がでてきたら、こう返そうってだけで会話を組み立ててるからです。
何て言うか、なんか、薄っぺらいでしょ。
なんでそう感じるかっていうと、言葉の意味を理解してないからです。
言葉の意味を理解するのは心です。
心で感じるのって、要するに、主観です。
言葉の中の、主観の部分を一切排除してるから、薄っぺらく感じるんですよ。
言葉を扱うとき、客観的な部分と、主観的な部分の両方を見ないといけないんですよ。
ほんで、僕が今まで扱ってきたのは、主に、主観的な部分なんです。
心に近い部分です。
たとえば、前回のマインド・エンジンのデモ、第123回「完成! 最も重要な心のパーツ」では、「心の理論」を扱いました。
これは、他人の心を想像する機能です。
その前のデモ、第100回「待たせたな、これが心のプログラムだ!」では、人間の心が持つシミュレーション機能を作りました。
これは、心の中で、あぁだ、こうだって考える機能です。
こういった機能、やってることは分かると思うんですけど、なんか、ふわっとしてますよね。
言葉には、直接、結びついてないんですよ。
そう言う意味では、今のAIがやってることの方が、言葉にがっちり結びついてるんです。
今回のデモ、今までとちょっと違うって言いましたけど、今回は、どっちかというと、言葉に近いんですよ。
今までのAIが扱ってきた客観的な言語の部分。
それから、僕が扱ってきた主観、心の部分。
今回のデモは、この二つを橋渡しするデモなんですよ。
言葉と心が、ついに繋がるんです。
たぶん、これで、言葉の意味を理解するっていうシステムの全体像が見えてくると思います。
それじゃぁ、始めますよ。
今のAIは、言葉の意味理解をしてないって、言ってきましたけど、じつは、全くやってないわけじゃないんですよ。
オントロジーとか、セマンティックWebとかって技術がそれです。
これらの技術が扱う言葉の意味って、意味ネットワークのことです。
これが意味ネットワークです。
意味ネットワークってのは、言葉の意味を関係で表したものです。
たとえば、哺乳類は動物の一種だって上位概念-下位概念の関係で表したり。
それから、哺乳類は頭と脚を持ってるとか、何々は何々をもってるって関係で表したりとかです。
これで、言葉の関係は理解できます。
でも、関係で定義できないこともありますよね。
関係で定義するって、結局、言葉同士で定義し合ってるだけです。
言ってみれば、言葉の世界の中に閉じこもっています。
そんなんじゃぁ、この、現実の世界に結びつかないですよね。
これを端的に示したのが、シンボルグラウンディング問題です。
シンボルグラウンディング問題について興味がある人は、第27回「解決、シンボルグラウンディング問題」を見てください。
要点だけ言いますと、言葉を言葉で定義してたんじゃ、現実世界に実際に存在するものに辿り着かないって話です。
言葉を言葉で定義するのは悪くないんです。
でも、言葉で定義できない基本的な言葉ってあるんですよ。
最も原始的な言葉は、言葉で定義できないんです。
第98回「ロボマインド・プロジェクト敗北」でも話しましたけど、ロボマインド・プロジェクトも、最初は、意味ネットワークからスタートしました。
ロボマインド・プロジェクトでは、単語を概念で分類しています。(あひる)
結構、細かく分類してましてね。
たとえば、筆箱は、「机の収納具」概念に含まれます。
「机の収納具」概念は、「収納具」概念の下位概念で、「収納具」概念は、「容器・収納具」概念の下位概念で、「容器・収納具」概念は、「人工物」概念の下位概念って感じです。
これが概念ツリーです。
それから、全ての概念、単語はこの「TGID」ってIDで管理されてます。
筆箱のTGIDは2026です。
それから、筆箱は何を持ってるかは、こっちのHas-aツリーで管理してます。
筆箱に入ってる物として、鉛筆系とかペン系ってあります。
鉛筆系ってのは、鉛筆とか色鉛筆です。
ここもTGIDで管理されてて、鉛筆のTGIDは7707です。
こうやって、あらゆる物を定義してたんですよ。
でも、これじゃぁ、定義できないものがあるんですよ。
たとえば、「筆箱に鉛筆を入れる」って文を考えます。
この「入れる」って言葉、どうやって定義したらいいんでしょう?
概念やHas-aじゃ、定義できないですよね。
なんででしょう?
それは、「入れる」って言葉の意味は、概念関係とか、何は何を持ってるって関係じゃ表現できないんです。
じゃぁ、「入れる」って、どうやれば表現できるんでしょう?
それは、この3次元世界での動きですよね。
筆箱って箱があって、その中に入れる動作、それが「入れる」の意味ですよね。
それじゃぁ、それはどうやって定義したらいいでしょう?
それができるとすれば、3次元シミュレーションですよね。
そこで、マインド・エンジンでは、3Dのゲーム開発環境、Unityを使っています。
こっからは、マインド・エンジンの画面で説明していきます。
マインド・エンジンってのは、人間と同じ心のプログラムで、ここでは、りんだちゃんって女の子の心ってことにしてます。
これが、マインド・エンジン本体です。
こっちが3次元世界です。
この3次元世界を、ゲーム開発環境Unityで作ってるわけです。
それでは、「鉛筆を筆箱に入れる」の文を実行してみますね。
ドン
はい、鉛筆が筆箱に入りましたよね。
鉛筆が入ったことが分かりやすいように、筆箱を半透明にしています。
これを細かく見て行きます。
まず、「鉛筆を筆箱に入れる」の文を実行すると、マインド・エンジン本体から3次元世界にこのコマンド文が送られます。
この「Put In」ってのが、「入れる」って動詞にあたります。
「Name:7707」ってありますけど、この7707がさっき説明したTGIDで、鉛筆のことです。
「Landmark:2026」ってありますけど、2026が筆箱です。Landmarkは、目標ってことです。
つまり、このコマンド文は、「鉛筆を筆箱に入れる」って意味になります。
3次元世界で解釈できるのが、Put Inって動詞とか、TGIDで示された名詞になります。
TGIDで示した名詞を、3Dオブジェクトとして持ってるわけです。
だから、TGIDを指定すると、その3Dオブジェクトを生成できます。
3Dオブジェクトで生成すると、形や大きさが分かるわけです。
ほんで、実行した結果がこの文です。
Successって返ってきてますので、成功したわけです。
つまり、筆箱の中にちゃんと鉛筆が入ったわけです。
成功した時は、中に入れた物の位置が返ってきます。
それじゃぁ、もう少し、細かく解説しますよ。
まず、鉛筆を筆箱に入れるには、筆箱には収納空間が必要ですよね。
さらに、鉛筆が収容空間より小さければ入るわけです。
逆に、収容空間より大きい物は入らないはずです。
それじゃぁ、筆箱より大きい箱を用意して、筆箱に箱が入るか試してみましょう。
「箱を筆箱に入れる」
ドン
はい、結果を見てみると
「箱が筆箱に入りません。」となりましたよね。
3次元空間には、箱の大きさと、筆箱の大きさも表示しています。
明らかに、筆箱より箱が大きいので、そりゃ、筆箱に箱は入らないですよね。
大きさが分かるのは、3Dオブジェクトだからわかるわけです。
それから、中に収容空間があるのも、最初に3Dオブジェクトを作る時に、収容空間を作ってるからです。
じゃぁ、今度は、収容空間がない場合はどうなるでしょう。
「鉛筆に筆箱を入れる」を実行してみます。
ドン
はい、結果に「鉛筆に収容空間がありません」って出ましたね。
収容空間がないから、入らないってわけです。
最後に、形じゃなくて、意味的におかしいって場合を検証してみます。
「ミニトマトを筆箱に入れる」です。
ドン
はい、大きさ的には入るので、3次元世界では、筆箱の中にミニトマトが入りましたよね。
でも、この、りんだの思考を見てください。
「ミニトマトを筆箱にいれるのはおかしいです」ってなってますよね。
これは、どうやって判断したのでしょう?
それは、さっき見せた、このHas-aツリーからです。
筆箱のHas-aツリーを見てみると、筆箱が持ち得るのは、鉛筆系とかペン系です。
つまり、鉛筆とかボールペンです。
筆箱の中に入っている可能性があるものって意味です。
ミニトマトは、それに含まれないので、意味的におかしいというわけです。
分かりましたか?
文の意味を理解するって、どういうことか。
文は主語や述語、目的語で成り立ちます。
述語って動詞です。
ここでは「入れる」です。
「入れる」って動詞は、収容空間がある容器・収納具の中に、対象とする物体を収容するって意味です。
「入る」って言葉が実行できるかどうかは、大きさで判定しますよね。
つまり、3次元世界で判定するわけです。
だから、3次元世界を使って検証するわけです。
大きさ的に「入る」は問題なくても、意味的におかしい場合もあります。
それを判断するのが、Has-aツリーです。
何は何を持ってるかを表現したHas-aの世界です。
こうやって、文がおかしくないかを判断するには、複数の世界をまたいで判断してるわけです。
普段、意識しないですけど、人は、それを自然とやってるわけです。
それが意識されるのは、おかしな文が入った時です。
「鉛筆に筆箱を入れる」とか言うと、おかしいって思うわけです。
「筆箱にミニトマトを入れる」って言っても、なんかおかしいってなるわけです。
それとおんなじことが、マインド・エンジンでも実現できたってわけです。
最後に、もう一度、「鉛筆を筆箱に入れる」を実行してます。
ドン
上の「りんだの思考」を見てください。
これは、筆箱の中に鉛筆が入ってる状態を示してるわけです。
つまり、「鉛筆を筆箱に入れる」って文を読んで、3次元世界レベル、Has-aレベルで問題ないとなったら、結果として、筆箱の中に鉛筆が入ってる情報だけが頭のなかに残ったわけです。
今のりんだの気持ちを、あえて表現するとすれば、「それで、次はどうなるの?」って感じです。
話に続きがあると思ってるわけです。
つまり、こっから先が、心のレベルに入るわけです。
今回のデモは、心のレベルには行かないので、ここで終わりですけど、こうやって、言葉のレベルの意味理解から、心のレベルの意味理解に移行するってのがイメージできると思います。
どうでしょう?
システムの全体像が、理解できたでしょうか?
鉛筆を筆箱に入れるだけでも、これだけのことを考えてるんですよ。
なんか、納得できないとこ、ありましたか?
まさか、「あれって、ただのアニメーション表示してるだけじゃないの」とか、思ってないですよね。
ちゃんと、プログラムで動いてますからね。
もっと、単語を登録していけば、もっと複雑な文も理解できるようになりますから。
わかりました。
それじゃか、次回は、プログラムの中身をちゃんと説明します。
普段は、絶対に見せない、ソースコードを公開します。
もし、ソースコードまで見てみたいって人は、チャンネル登録、高評価ボタンをお願いしますね。
それから、このロボマインド・プロジェクトが本になりました。
興味がある人は、説明欄にリンクをはってますので、そちらから見てください。
それでは、次回も、お楽しみに!