プログラムの構想を進める。今回はメモ書きだがモデル相関図を示す。文末に、プログラミングに詳しい方への助言の依頼あり。
(1)身体モデル&脳モデル
探知→行動を原則とするため、身体モデルは大きくセンサ群とアクチュエータ群に分割。アクチュエータ群の行動結果がボディ群へ反映される。疲れたとか、位置とか、おなかが空いたとか。
センサ群とアクチュエータ群の間に、脳モデルが入る。プログラム上は、身体モデルと脳モデルはエージェントとして一つの単位にした方が良さそう。
脳モデルは大規模なプログラムになり、学習を進める場合、エージェント毎に学習を進めるか、学習規模が大きくなると、一つの脳モデルで全エージェント分の学習をすることも考えられる。しかし、初期のプログラムにおいては、それほど大きな脳モデルの導入は出来ないので、エージェント毎に学習をすることになろう。
エージェント毎の学習結果を効果的に次世代に受け渡すことが、遺伝の仕組みなのかもしれない。
人間には遺伝する特性と遺伝しない特性があるので、脳モデルの全てを遺伝できる仕組みにする必要があるとも限らないが、遺伝できるようにしておいた方が面白そう。
センサとアクチュエータの間に脳モデルが入ると、「判断」ブロックのようだ。これでは、探知→行動の原則から外れるように見える。しかし、考えることも実は、喋ったことを聞いて反応することの繰り返しと考えれば、原則から外れていないと解釈できる。会話をしている時に、判断をしながら喋っているだろうか?流れるように口から言葉が出てこないだろうか?
まずは、脳モデルは、探知結果に反応して行動させる回路が複雑化していったものとして考える。
個々のセンサとアクチュエータが、対になって回路を形成することもあるかもしれない。そうすると、エージェントは探知→行動の回路の集合体になるかもしれない。しかし、人間の意識は一つだと考えると、この方向は、とりあえずは追及しない。
(2)外界モデル
エージェントが存在する空間or平面、エージェントに対し複雑さを提供する種々のオブジェクトが存在する場である。当初は、食べ物、外敵、障害物、気候等を表現していき、エージェントが知的に振る舞うに至るまで複雑さを増していく。これは普通にプログラミングできるであろう。
もっとも、エージェントに対し一番複雑さを提供できるのは、別のエージェントだと思う。集団行動が必要である。
2013年のICRA(@カールスルーエ)での東大中村仁彦先生の講演だったと思うが、the Body Shapes Brainという言葉がある。これは、人工知能にとって身体が必要だということを表現しているが、人工知能にはいわゆる環境も必要であり、身体は脳と環境のインタフェースであろうというのがブログ筆者の考え方である。
原理をまとめることで、プログラム構想が進めやすくなったと思う。
しかし、だんだんと具体的なプログラムの領域に入っていくので、以下について、詳しい方の助言を切に頂きたい。自分が自由に操れるのはC言語なので、このままだとC言語でオフラインで構築していくことになるけど、いまいちだなぁと思うので。
- 複数のエージェントを外界モデル内で動かすのは、オンラインRPGのようなプログラムが必要となるが、どのような動作環境で動いているものなのか。
- 時間刻みを設定し一個一個のエージェントを回していくしかないのだろうか。
- AWSのようなクラウドサービスを使うべきか、デスクトップでも出来るのか。
- お勧めの言語。将来脳モデルを高度化していくと、pythonの方が良いのか。C言語のプログラムとpythonはつながるのか