ロボマインド・プロジェクト、第160弾!
こんにちは、ロボマインドの田方です。
実際に動くロボマインド・プロジェクト、マインド・エンジン。
今まで、太郎と次郎がかくれんぼしたり、子ブタちゃんとオオカミがでてきたりと、いろいろ作ってきました。
どれもリアルな3Dで作ってます。
これ見て、よく聞かれるんですよ。
毎回、こんな3D作るんですか?
って。
いや、そうじゃないんですよ。
これは、あくまでも、デモ用に分かりやすく作ったものです。
意味理解は、3次元仮想世界を使えば、こうやってできますよって示すためにつくったものです。
実際に文章を読んで意味理解するときは、わざわざ、ここまでの物を作る必要はないんです。
開発効率が悪すぎますしね。
そこで、今回からは、実際に大規模開発を想定した汎用性のある形式で開発していきます。
後で、お見せするので、楽しみにしていてください。
さて、前回、第159回「発表! 心のAIコンテスト」で、出来事が重要だって話をしました。
世界はダイナミックに動いています。
出来事って言うのは、世界が動いてる状況です。
この状況を言葉で表現したのが文です。
何かが起こったって文で表現するわけです。
それでは、「太郎がリンゴを食べる」って文を仮想世界でどうやって表現すればいいでしょう?
それは、太郎君がリンゴを食べてるところを3Dのアニメーションで描画すればいいですよね。
何の問題もないですよね。
でもね、これだと、ちょっと困った問題があるんですよ。
さて、そんな3Dアニメを見た人は、どう感じるでしょう?
たぶん、太郎君がリンゴを食べてるって思うと思います。
でも、違う感想を言う人もいますよね。
たとえば、太郎君、眼鏡かけてるなぁ。
視力はどのくらいやろとか。
あのTシャツいいなぁ。
どこで買ったんやろ、とか。
同じ3Dアニメを見ても、いくらでも解釈ができます。
いろんな解釈ができるってことは、情報量が多いってことなんです。
意味を理解するって、情報量を減らさないといけないんです。
この話は、第157回、158回「あっちの世界とこっちの世界を繋げるたった一つの物理法則①②」で説明したので、よかったら、そちらも見てください。
つまりね、出来事を3Dアニメで表現しても、意味を理解したことにならないんです。
むしろ逆なんですよ。
ここで整理しときます。
ロボマインド・プロジェクトで基礎となってる考えは、意識の仮想世界仮説です。
意識の仮想世界仮説っていうのは、目で見た現実世界を頭の中で仮想世界として構築して、それを認識するのが意識だっていう心のモデルです。
詳しくは、この本に書いています。
説明欄にリンクを張ってありますので、参考にしてください。
これをロボットで作ろうと思ったら、まず、カメラで外の世界を撮影して、それを基に、3Dで仮想世界をつくります。
その仮想世界で、太郎君がリンゴを食べてるわけです。
意識は、その3Dアニメを見るわけです。
そこで、いろんな解釈ができるかもしれません。
そこで、次に必要なのは、それを、一つの解釈しかできない形に変換することです。
太郎君は眼鏡をかけてるとか、いいTシャツを着てるとかじゃなくて、リンゴを食べてるってことを表現する仕組みが必要ってことです。
逆に言えば、「太郎がリンゴを食べる」って文を作れるってことは、人は、頭の中で、一つの解釈だけ表現する仕組みをもってるとも言えます。
その仕組みを作らないといけないんです。
いくつも解釈できる3次元仮想世界から、一つの解釈を抜き出したものが出来事です。
意識は、この出来事のデータモデルを介して、世界を解釈してるわけです。
ようやく全体像が見えてきましたね。
次に作るべきは、出来事のデータモデルです。
それは、たった一つの解釈しかできない、最低限の構成要素で表現されなければなりません。
さらに、ダイナミックな動きも表現する必要があります。
ここが、今までの意味表現と大きく違うところです。
今までの意味表現っていうのは、概念ツリーやHas-aツリーのようなオントロジーのことです。
犬は哺乳類だとか、部屋は床と壁と天井を持つってのがオントロジーです。
これだと、静止した状態しか表現できませんよね。
ダイナミックに動くっていうのは、ある構成要素が変化すると、それに関連する他の構成要素も変化するといったものです。
これって、一種のシミュレーション機能とも言えます。
さて、ようやく、準備が整いました。
こっから、新しいマインド・エンジンのデモに入ります。
今回、定義する言葉は、「間に合う」と「遅刻」です。
なんでこの言葉を選んだかって言うと、時間による変化を表現したかったからです。
ハッキリと時間を含んだ表現としたわけです。
それでは、新しくなったマインド・エンジンをお見せしましょう。
出来事のデータモデルを表現できるようになりました。
出来事は、構成要素画面とシミュレーション画面からなります。
こっちの構成要素画面で、間に合う/遅刻の構成要素を表形式で表現しています。
左の列が構成要素の名前で、右の列が、値です。
こっちが、シミュレーション画面です。
これは、ゲームエンジンのunityでつくってます。
構成要素画面とシミュレーション画面とは、通信していて、通信内容はここに表示されます。
今回から、マインド・エンジンは汎用的に作ってるっていいましたよね。
だから、出発地点、目的地点は家とか学校じゃなくて、A地点、B地点となるわけです。
動くのも、太郎君とかじゃなくて、ボールになりました。
最低限の構成要素っていうのは、こういう事です。
それでは、「遅刻」って出来事のデモをしてみます。
遅刻の構成要素がこの表です。
この表に、「遅刻の条件」とありますけど、これは、シミュレーションの結果、遅刻と判断する条件で、実際は、シミュレーション画面のプログラムの中に組み込まれています。
それじゃぁ、「遅刻」のデモをしてみましょう。
8時に出発して、指定時刻が9時の場合です。
ドン
はい、9時10分にに着いたので、「遅刻しました」って結果になりましたよね。
ここで変更可能なのは、移動速度と出発時刻です。
それじゃ、移動速度を速くしてみましょう。
ドン
はい、9時に着きましたよね。
結果は「間に合いました」です。
次は、移動速度をデフォルトに戻して、出発時刻を10分早くして7:50にしてみましょう。
ドン
はい、この場合も、間に合いましたよね。
つまり、遅刻しそうなら、速く移動するか、早く家を出る必要があるわけです。
今、何をやったかわかりましたか?
たぶん、何、当たり前のことをしてるの思ったと思います。
当たり前すぎることって、一番、分かりにくいんですよ。
というか、人間が、当たり前と思うこと、それこそが、心の機能なんです。
心を作ろうと思ったら、当たり前と思ったら事こそ、真っ先に作らないといけないんですよ。
それじゃぁ、今、何をやったのか、説明しますよ。
最初、構成要素の移動速度を「速い」に変更しましたよね。
そしたら、遅刻から間に合うに結果が変わりました。
これは、ダイナミックに動く出来事が表現したと言えます。
ある構成要素を変化させると、結果が変化する様子を再現できたわけです。
それから、もう一つ、重要なことがあります。
何かを変化させて結果が変わるということは、変化したものは、原因と言えます。
そして、原因から結果が出るまでの間にあるのが時間です。
出来事を、原因、結果、時間で表現できてるとも言えます。
原因結果は、人の自然な思考の流れですよね。
原因があって、その後に、原因に影響を受けた結果があるわけですよね。
必ず、原因の後に結果が来ます。
つまり、原因結果の背景には、時間の流れがあるわけです。
人は、そういったことを当たり前に感じてるわけです。
人が当たり前に感じることが、再現されているんです。
こうやって、人が感じる出来事が表現できたわけです。
次は意識について考えてみましょう。
意識の目的は、世界を解釈して、行動を決定することです。
意識は、間に合う/遅刻の出来事データモデルを使って世界を解釈します。
解釈するっていうのは、何らかの感情を発生することです。
遅刻しそうなら、焦りますよね。
焦りが感情です。
感情は、行動の原動力でしたよね。
このままじゃ、遅刻してしまう!
そう思ったら、何か行動を変えないといけませんよね。
遅刻の構成要素で変更可能なのは、速度と出発時刻です。
すでに出発してたとしたら、出発時刻は変えれません。
そうなったら、変えれるのは移動速度だけです。
移動速度を速くしたらどうなるか考えてみます。
考えるってのは、シミュレーションすることです。
シミュレーションした結果、早く移動したら間に合うって分かりました。
それなら、早く移動する方法を考えます。
走るか、自転車があります。
今日は、自転車で行こう。
こうやって、行動を決定するわけです。
人間の思考が上手く再現されましたよね。
このシステムを使えば、意味を理解した会話ができそうです。
たとえば、太郎君が、「うわぁ、朝寝坊しちゃった!このままじゃ、遅刻しちゃう。どうしよう?」って言ってたとします。
そんなとき、「走った方がいいよ」とか、「自転車で行ったら」って提案できるわけです。
そんな、自然な会話システムの中核となるのが、今回作った出来事のデータモデルです。
今は、まだ、間に合う/遅刻しか定義できてないですけど、少しずつ、言葉を増やすことで、心をもった会話システムができてきます。
今後も、何か言葉を定義するたびに、少しずつ公開していきますので、楽しみにしていてください。
この動画が面白いと思った人は、チャンネル登録、高評価お願いしますね。
それでは次回も、お楽しみに!