概要
Calhoun の Universe 25* では、餌も水も足りていた。捕食者もいなかった。それでも群れは崩壊した。資源では説明のつかない崩壊だ。この条件を自分のコードで動かし、どこで群れが壊れるのかを見たい。資源を変え、箱の形を変え、学習を変えながら、崩壊の境目を探す。
ただし、いきなり崩壊する群れは作れない。崩壊をコードに直接書けば、それは観察された現象ではなく、結果を先に決めただけになる。だから、ずっと手前から始める。まず一匹から始める。
はじめの一匹
最初の個体は、箱の中で行動を試すだけだった。レバーを押す。歩く。餌を得る。あるいは何も起きない。その結果で、次の行動の選び方が少し変わる。正解は与えない。どの行動が餌につながるかを、行動と結果の繰り返しから自分で見つけさせる。
action = rat.choose_action(world)
outcome = world.apply(action)
rat.learn(outcome)
この入力・行動・結果・更新のループが、すべての土台になる。あとで足す感覚も、欲求も、声も、群れも、この更新ループを前提にする。
空腹を内部状態にし、レバーと餌の場所を離すと、摂食までの手順ができた。腹が減るとレバーへ向かい、押して、給餌口へ歩いて食べ、また腹が減る。一日の収支は、餓死寸前の赤字から黒字に変わった。少なくともこの小さな箱の中では、餓死せずに一日を終えられる。
800日の崩落
摂食は安定した。と思っていたら、学習曲線に不自然な穴があった。順調に伸びていた評価値が、800日目あたりで突然ゼロに落ちる。
最初は探索のノイズを疑った。違った。学習を止めて評価しても、同じところで落ちる。探索ではなく、行動の選び方そのものが壊れていた。
原因は学習器ではなく、観測の作り方にあった。個体は匂いの方向だけを見て、強さを捨てていた。だから餌の源から遠い位置も近い位置も、同じ観測として扱われる。一つの観測が複数の場所を覆い、その観測に結びついた行動が一度変わると、同じ観測を共有する全部の場所で、選び方が同時に壊れる。崩落が突然で、しかも全体的だったのは、これが理由だ。
修正は小さかった。嗅覚はそのままに、観測へ匂いの強さを足す。実際のラットも、源に近づくほど匂いは強くなる。学習器も学習則も、一行も変えていない。
崩落は学習器のバグではなく、観測が餌との距離の違いを表せていなかったことだった。観測が必要な違いを表せないと、価値が安定しなくなり、行動の選び方が崩れる。複雑な学習則を足す前に、まず観測に必要な差を入れる。新しい感覚を足すたびに、区別すべき状態が同じ観測にまとめられていないかを確かめる。
次へ
ここで成立したのは、観測から行動を選び、結果に応じて選び方を更新する一匹だ。まだ最小限で、感覚は餌の匂いだけ、内部状態は空腹だけ、仲間もいない。
次は、この一匹を複数にして、個体どうしの相互作用を足していく。
補足
- Universe 25: John B. Calhoun による閉鎖環境でのマウス実験。餌や水が十分にあるにもかかわらず、過密化のなかで繁殖や社会行動が崩れ、群れが続かなくなったことで知られる。