これは学生の頃、連休中に思い立って書き上げたMacアプリケーションです。
10年以上前の実装にも関わらず現行マシンで問題なくコンパイルできました。実装言語のObjective-CとCに大きな更新がなかったためかな?
当時はパターンが収束してしまうことがわかり触るのをやめてしまったのですが、モデルの筋はいい気がするのでパラメータを変えて自動探索にかけたらなにか生まれそうな気がします。


概要

生命現象の土台となる恒常性をもつパターンが現れうる系を作成しました。今回はモデルと計算の簡便さから、系の基本構造にはセルオートマトンを採用しました。セルオートマトンはConway’s Game of Life[^1]に代表されるように、単純なモデルを比較的少ない計算量で実行できる便利な計算モデルです。しかしパターンの恒常性の観点から考えると、ひとつのセルの状態が反転しただけで崩壊するような不安定なモデルに恒常性をもたせるのは困難です。MembraneAutomataでは近傍半径を増やす[^2]ことで頑強なパターン構築を可能にしました。そしてMNCAの上で、恒常性のある領域を外界から隔離するために、泡状の構造が生成される簡易化学モデルを実装しました。

^1: Conway’s Game of Life - Wikipedia
^2: Multiple Neighbourhood Cellular Automata (MNCA)と呼ばれる。Understanding Multiple Neighbourhood Cellular Automata

Motivation of Current Work

私は生命のもつ予測不能性を再現するというテーマを研究しており、この作品はそのテーマのうえで、恒常性の創発に主眼を置いて作ったものです。予測不能性という制約のもとで設計するためには、実現したい現象(ここでは恒常性)を直接実装するのではなく、下位の現象を実装することを介して、実現したい上位の現象を創発する、という手法をとる必要があります。本作ではセルオートマトンの状態遷移ルールを適切に設定することによりそれを実現しました。

要件

系の要件

  • a. 比較的単純かつ小規模な計算で実現できること
  • b. 現れるパターンがConway’s Game of Lifeより安定していること

a.モデルの単純さと計算しやすさの要件からセルオートマトンを選択し、b.パターン安定の要件から近傍半径を増やして近傍セルひとつあたりのパターンへの影響度を小さくすることにしました。

セルオートマトンのルール要件

  • c. 恒常性をもつパターンが発生しうること
    • c1. 系全体では、自然な行いに任せていると秩序が失われること(現実世界でのエントロピーの増大則と同等の仕組み)
    • c2. そのような系のなかで、外界に影響されない区画が存在すること
      • c21. その区画の境界部分が外界の影響を打ち消し、内部に伝えない役割を果たすこと

現実の現象を参考にこれらの要件を満たすルールを考えると、水中の油滴、あるいは泡を抽象化することで理解しやすいモデルを作れそうに思えます。泡状のパターンの境界付近で外界の影響を打ち消し、内部に恒常性をつくる、という構造です。

実装仕様

実装: MembraneAutomata - GitHub

MNCAの実装

MembraneAutomataで実装するMNCAは近傍半径を2以上に拡張したものです。自セルの次の状態に影響する近傍セル数 n 近傍半径を r と置いたとき

n = (r * (r + 1)) * 4

と表せます。

その他の仕様はConway’s Game of Lifeを踏襲し、自セルの次の状態は、自セルの現在の状態と近傍セルの現在の状態の合計値から決定します。

MembraneAutomataモデル(セルオートマトンのルール)

このモデルでは、物質のメタファーとしてセルの状態を表現します。より単純な物質から複雑な物質が合成され、複雑な物質がはより単純な物質に分解されるという仕組みを、状態間で優劣のないセルオートマトンで表現するために、状態遷移の条件に優先順位を設けます。

状態遷移の条件

状態遷移は

  • 合成条件: その状態が新たに生成される、もしくはその状態が保たれる条件
  • 分解条件: その状態が保てなくなる条件

の条件に合致した際に発生します。合成・分解条件は状態ごとに複数定義することができます。次状態を計算する際は、全状態分の合成・分解条件を優先度順に照合し、合致した条件を適用して次のセル状態を求めます。全ての状態は分解先の状態をもち、分解条件に合致した場合は分解先状態に遷移します。

実験

基底状態

全ての現象の基盤となるふたつの状態(水と油のメタファー)、およびその境界面に発生する膜の状態を定義します。

  • 0状態(水のメタファー, 青)
    • 合成条件:近傍セルの過半数が0(水)である
    • 分解条件:なし(1(油)の合成条件と同じ)
      • 分解先:1(油)
  • 1状態(油のメタファー, 黒)
    • 合成条件:近傍セルの過半数が1(油)である
    • 分解条件:なし(0(水)の合成条件と同じ)
      • 分解先:0(水)
  • 2状態:(膜のメタファー, オレンジ)
    • 合成条件:近傍セルの半数が0(水)である and 近傍セルの半数が1(油)である and 近傍に2(膜)が存在する※
    • 分解条件:近傍セルの半数が0(水)でない or 近傍セルの半数が1(油)でない
      • 分解先:0(水)

※ 自己触媒となる条件

ある一様の領域と、それを分離するパターンはこのように単純な条件で実現できます。

移動と内部構造

水、油の基底状態の他に以下の状態を追加しました。

  • 水滴の移動を実現するために、水領域を拡大する膜(ピンク)、油領域を拡大する膜(オレンジ)を導入
  • 水滴に内部構造をつくるために、水領域内のみで合成される状態(緑)を導入

このルールセットではランダムな初期状態から計算を続けると、移動体が合体して移動方向が揃っていき、波状のパターンに収束するのが観察されました。


Q. 移動の現象は要件上必須ではないのでは?
A. それはそう

恒常性

前実験で系が収束することがわかったためにここまで到達しませんでしたね。今度やりましょう

考察

MNCA

近傍半径を増やし近傍セルひとつひとつの影響度を小さくすることでConway’s Game of Lifeより堅牢なパターンを作り出すことは意図通り実現できました。

MembraneAutomataモデル

セルオートマトンの状態遷移を合成・分解条件と抽象化することで、条件を追加していくことで既存の現象を保ったまま新たな複雑な現象を実装していくことができるようになりました。

この仕組みの特徴としては以下のものが挙げられます。

  • 状態(物質)の特徴を保ったまま別の状態や別の合成・分解条件の追加が可能
  • 条件判定の優先度が高ければその状態は安定であり、優先度が低くなるごとに安定性も下がる
  • 合成・分解条件と抽象化した状態遷移の仕組みを採用したことで、パターンを実現するための条件を考えるのが比較的容易

一方で、パターンを直接的に記述できるために、創発性が薄れてしまった点は改善が必要です。

パターンの恒常性

実験したルールセットでは恒常性のあるパターンが生まれたとは言えませんが、MembraneAutomataモデルは恒常性をもつルールセットを実現可能だと考えています。

まず、恒常性を実現する前提である、要件c1. 系全体では、自然な行いに任せていると秩序が失われること

条件判定の優先度が高ければその状態は安定であり、優先度が低くなるごとに安定性も下がる

の性質によって、恒常性なしには最も単純な水と油の混合パターンに収束する、といったルールセットを組めば実現できます。

要件c2. そのような系のなかで、外界に影響されない区画が存在すること も、泡状のパターンとその境界部に発現する状態は組めているため実現可能だと思われます。一方でそのような現象を直接実装することなしに創発させられるかという部分は不安があり、これは実装してみなければ明らかにならない部分です。

Future work

  • アプリケーションの実装上の課題
    • 新規の状態遷移の条件を自動で設定できるようにすることで、新たなルールセットの探索を自動化する
  • 近傍セルの影響度を位置によって変化させる[^3]ことで、自セルと同じ状態だがパターン的に接続していない膜面と融合しない膜、といった高度な現象の実現を検証する
  • おそらくパターンの実装の容易さとパターンの創発性は排他な関係にあるので、それが正しいかどうか、どのように兼ね合いを取るのか持続的に検討する

^3: Leniaのkernelと同等の仕組み Lenia - Biology of Artificial Life - arXiv