過去記事を読み直していて、少し考えが進んだなぁと思ったために追記する。
その記事は、バナナの意味を分かるAI(エージェント)とは何かという記事であった。
(ちなみに弱いAIや普通の汎用画像処理では、バナナが映った写真データを入力された時に「バナナ」と出力することは出来るが、AIがバナナを認識したぞと意味を与えているのは人間なので、AIがバナナの意味が分かったとは言えない)
その記事では、下記をどう実装するかについて、特に結論が出ていなかった。
- エージェントは、バナナを食べたら空腹が改善されることを知っている
今回は少し考えを進めてみる。
エージェントにとってのバナナの意味自体は、身体モデル、外界モデルにより相互作用は実装できる。すなわち、「バナナを食べたら空腹が改善される」までは実装できる。
しかし、三位一体のモデルのうち、残された脳モデルでは、「バナナの意味」をどう扱えば良いのか?
本ブログの立ち上げ初期は、具体的なアイデアは無いけど、身体モデルと外界モデルを用意していろいろやってみれば良いというスタンスだった。しかし、まもなく実装を開始するため、何かしらスキームを考えておきたい。
一般に学習は3種類、教師あり学習、教師無し学習、強化学習に分類されており、教師有り学習、教師無し学習は、基本的には分類方法の学習になる。
教師無し学習機能であるヘブの法則あるいはコホーネン・ネットワークは実際に大脳皮質にあり、教師無し学習が大脳皮質で行われているのは事実であろう。従って、バナナを見てバナナと分類するまでは出来るだろう。しかし、それでは、バナナを食べると空腹度が改善されることと結びつかない。
強化学習の場合、バナナを食べておなかがふくれることで、その行動の評価値をあげていくと、おなかが空いている時にバナナを見るとバナナを食べるという行動は学習できる。しかしこれは、「バナナを食べたら空腹が改善されることを知っている」とは別である。その時の評価値が高い行動をとることで、結果としてバナナを食べる戦略を採用することはできるが、それだけであり、バナナの意味を理解しているとは言えない。
一つのアイデアは、教師無し学習において、バナナを入力とするのではなく、「バナナを食べる」ことを入力として学習するということがある。あるいは「バナナを食べると空腹度が減る」ということを入力にする。
いっそのこと、「バナナ」「バナナを食べる」「バナナを食べると空腹度が減る」の全てを入力にしてしまい学習させ、結果として空腹度が減ることを記憶しておくと、バナナを見た時にその記憶を思い出すことで「バナナを食べたら空腹が改善されることを知っている」ことになるかもしれない。
これは、脳はとにかく全てを学習してしまうということを意味しているが、正解に近いかもしれない。また、あらゆる食べ物について同じ学習をするのではなく、食べ物として一括りにするようなことも行われているであろう。すなわち、学習と汎化である。全てを学習しつつ、どんどん汎化していくネットワークを組むということだ。汎化は、コホーネンネットワークで行われていることにイメージが近い。
さらに、バナナを見た時に、見ただけでバナナに伴う過去の学習結果を呼び起こすシステムになっていると良いであろう。また、入力は行動結果だけではなく、言語による入力でも良いのだろう。バナナを踏むと滑ると言われたら、実際に滑ったことがなくても、滑ることを知る、のである。
あるいは、学習にこだわらず、過去の行動の記憶を呼び戻す構造さえあれば、「知っている」ということになるとも考えられる。すなわち、自我とは記憶である、ということだ。
このように、脳モデルにおいて試してみたいことはいくつかあげられる。何が正解なのかはやってみないと分からない。その意味で、身体と外界を用意していろいろやってみる、という当初構想は、間違っていないと思われる。