本ブログでやろうとしていることは以下の通り。
・外界-身体-AIの相互作用により、AIが意味を取り扱えるようにして、強いAI実現の突破口とする
・外界-身体は、辞書レベルでモデル化したソフトウェアで良い。
今回は、外界モデルについて、要件と作成方針を具体的に整理していく。言うなれば、やろうとしていることは意味を扱うことを目的とした人工生命モデルであり、そのために必要な要件を、大きな構成要素ごとに整理していく。
結論をまとめる。
・モデル化する対象(例えばリンゴ)の、他との差異をリストアップし、ここでは外界モデルの中のリンゴモデルで差異を表現するとともに、身体にも差異を検知するセンサを用意する。外界と身体は組み合わせて考えていく。食べ物モデルで味をパラメータにしたら、身体に味覚センサをつける等。
・最終的には上記を、辞書に載っている言葉すべてについて実施する。ただし、最初は取捨選択しながら進め、知的行動が創発される程度に複雑な環境になれば良い。
・本モデル化において、外界にあるものは全て記号化されたものであり、エージェントは言語能力を通じ記号を知っているので、いわゆる記号接地問題は無い世界になる
・坂を上った先に食べ物が有り、あるエージェントが発見すると、他のエージェントにそれを伝え、みんなでそれを取りに行く、程度の知的行動は創発することが出来るであろう。そのような行動をエージェントにプログラミングしなくても、自然にエージェントが出来るようになる、ということ。
・外界を2Dにするか3Dにするか、リンゴ等の物体を3Dモデルで扱うか概念だけでモデル化するか等は、開発環境を調査した上で決定する。
- 外界モデルの基本的な要件
①AIに対し、身体を通じ作用を及ぼすこと
②(意味とは差異なので)作用は差異として定義する
③辞書に載っている、身体より外側にあるのものが存在すること。ただし、想定する状況は人類の歴史上で言えば狩猟時代であり、例えば自動車等は不要
④複数の、AIを搭載したエージェントが存在出来ること - 外界モデルの例…リンゴ
①②をより具体化していく。AIが、リンゴを認識することを考える。
機械学習の発達により、リンゴが写っている写真を見て、リンゴと出力するエージェントは実現できるようになった。ただし、そのエージェントがリンゴの意味を分かっているかと言うと、そうではない。エージェントがリンゴを正しく認識したと認識するのは、エージェントの出力結果と写真を見比べるユーザーであり、意味を与えているのはユーザーなのである。本ブログでは、そのようなプロセスではなく、エージェントが人間と同じようにリンゴを認識するプロセスを考える。
リンゴの意味が他との差異であるとして、その差異とは何か。以下に試しにリストアップする。
・食べ物である
・表面は赤であり、中は白い
・芳香がする
・甘い味がする
・固い歯ごたえがある
・手のひらに乗る程度の大きさであり、口に入る大きさである
実物のリンゴは上記の複数の作用を、特に苦労せずに人間に対しもたらすことが出来る。これが、リンゴの意味は外界(実物のリンゴ)にある、ということである。外界モデルでも、上記差異をモデル化していかなくてはならない。
また、上記の差異は、全て身体とのペアになっている。すなわち、色が赤いということは、身体側に色を検知できるセンサが必要である。食べ物であるということは、身体側は食べ物がないと死んでしまうべきである。食べ物を食べなくても維持できるエージェントは、人間と同じように食べ物を認識することは出来ない。そのようなエージェントは、食べ物の意味を扱えないのである。
実ロボットを身体にしようとしても、そんなロボットを作るのは無理である。上記のリンゴの差異を全て扱えるロボットが作れないということは、身体性をAIで扱うためにロボットを用意しても、そのロボットはリンゴの意味を人間のように理解することは出来ない。しかし、本ブログが提唱するように、外界-身体もソフトウェア化すれば、身体性を人間と同じように扱うことができる。 - 外界モデルを作成するプロセス
上記の例から、外界モデルを作るということは以下のプロセスになる。
・外界に存在させる対象の、他との差異をリストアップする。
・差異をモデルに付与させる
・身体モデルにも、差異に対応した特性を付与する(視覚センサ等)
・③のために、外界―身体-AIモデルの中に存在させたいモデルすべてについて検討していく。辞書を上から読んでいくことになるであろう。狩猟時代ということで、ある程度の複雑さがあれば良く、辞書に載っていること全てである必要は無い。
なお、食べ物であれば、実在の食べ物に合わせる必要は無い。社会の複雑さをある程度担保できれば良いので、複数種類の食べ物があり、味、大きさ、外見、重さ、摂取カロリー等のパラメータに違いがあれば良いと考える。従って、実際には、食糧0~食糧127等の、番号で区別することになるであろう。 - プログラム構造について
例として食べ物モデルを外界に置く場合、以下の2つの方法が考えられる。
①3Dモデルを作り、身体側も3Dモデルにして、拾ったり食べたりの動作を実際に行わせる。味等、3Dモデルだけで表現出来ない変数は追加で付与する。
②3Dモデルではなく、全て変数として扱ってしまう。位置はXYZ座標にして、近くのエージェントがリンゴを取る動作をしたら、そのリンゴは手に取られたことにする。
これは、開発環境として何を採用するかに依存するので、別途考える。Unity等の汎用開発環境をベースにする場合、①でもいけるであろうが、自由度が下がるかもしれない。開発環境の詳細を調べていないので、開発環境を調査した上で決定したい。
いずれにせよ、例えばリンゴのモデルがエージェントの視界に入ったら、エージェントは「リンゴ」だと認識できるようにする。外界は記号をベースに構成され、エージェントは言語能力を通じ記号を知っているので、いわゆる記号接地問題が無い世界になる。 - 世界構造
外界である以上、エージェントがうろうろする世界構造が必要である。これを3Dにするか、単純に2Dにするかも、開発規模及び開発環境に依存してくる。簡単に開発環境が準備できるようであれば、3Dにしても良いかもしれない。木をゆするとリンゴが木から落ちてくるとかを、開発環境が模擬してくれるのであれば。ただし、そんなところの模擬が必要なのかは分からない。
それを発見したエージェントがそれを言葉で他のエージェントに伝え、他のエージェントも真似をして木を揺らして楽にリンゴを手に入れる、というのを、プログラムしなくても創発的に出来るようにはなると思う。
あっさり書いているが、これこそ知能のあるエージェントなのかもしれない。2001年宇宙の旅で、モノリスに遭遇した類人猿並みというか。地形に起伏があると、山の向こうに食べ物があることが分かり、次の日リーダーが群れを率いて山の向こうに食べ物を探しに行く、ようなことも創発できると思う。
時間の考え方も、開発環境に影響される。ステップ毎に計算する形か、リアルタイム性を持たせるかの2種類であろう。汎用開発環境を使用する場合、リアルタイム性でもいいと思うが、リアルタイム性ありの環境では、逆に計算を加速できないかもしれない。早送りは出来るのであろうか…。
外界モデルとしては、昼夜の区別、気温差、四季等、狩猟時代をモデルとして最低限の環境は再現したい。