Reports

Twitter: @mtknnktm.

複数階層間相互作用におけるタイムスケールの影響

概要

  • 多段創発について考えたくて、とりあえず、多段階の階層は創発されてる前提で階層間の相互作用について簡単なモデルを作ってどんなことが起こりうるのか調べてみた。
  • 特に階層間のタイムスケールの差異に着目してモデル構築・分析をした。下の階層はロトカ・ヴォルテラ方程式の亜種、上の階層はレプリケーター方程式を使った。
  • タイムスケールの差異によってモデルの振る舞いは大きな影響を受け、分岐現象が内在しうることがわかった。

はじめに

なんか大仰なタイトルになってしまいましたが、先日参加した研究会で多段創発に関する議論が有り、刺激を受けたのでやってみました。なんとなく数学とか物理っぽいことを書いてますが、数学とか物理はもともと苦手な上にすっかり忘れてしまっているので間違ってたら優しく教えて下さい (;・∀・)

創発とはミクロレベルの要素の相互作用から「ミクロな要素の持つ性質からは想像できないような」マクロな現象が出現する現象のことを言います。例えば、脳細胞が集まって知能という現象が発生したり、人間が集まって社会という現象が発生したり、動物や人間が生存競争をして進化という現象が発生したりなどです。多段創発とはこれが多段階に発生することです。例えば、脳細胞の集団から人間の知能が創発し、その知能を持った人間の集団から社会が創発というのは二段階の創発と言えるでしょう。

このように多段創発は至るところで発生しており、また重要なトピックでもあります(例えば、*1)。というよりは世界は多段階の創発によって成り立っていると言っていいでしょう。しかし、多くの研究は複数の階層を扱わず1段階の階層のマクロ(社会とか)とミクロ(社会に対する人間とか)を扱うことが多いです(たぶん)。なぜならば多段階の創発について扱うことは結構大変であり、また大抵の場合、ナンセンスだからです*2

大変な理由としては、必要な最小のミクロな要素が膨大な数になるからというのが挙げられます。一般に創発には非常に多くのミクロな要素が相互作用することを必要とします*3。「ミクロな要素からマクロな現象の発生」が多段階で発生する場合、一番下の階層で発生したマクロな現象は、その一つ上の階層で発生するマクロな現象から見た「ミクロな要素」になるだけの十分な数が発生する必要があるからです。

また、多段階創発の場合、観測に必要な時間も非常に長くなります。一般に、ミクロな要素のダイナミクスのタイムスケールは短く、マクロな現象のタイムスケールは長くなります。例えば、生態系のマクロな振る舞い(進化)とそれを構成する生物の生涯の場合、前者は数万年以上のタイムスケールを考えることがほとんどだと思いますが、後者はせいぜい数十年のタイムスケールです。これが多段階になると最もマクロな階層は非常に長いタイムスケールで観測しなければなりません。

つまり、創発の研究で最もよく使われる手法であるシミュレーションで何とかしようとする場合、要素数も時間もとんでもないことになり、計算機パワーが足りません(社会を構成する人間の知能を構成する脳細胞をシミュレーションすることを考えるとぞっとしますね)。また、数ヶ月から数年ぐらいのタイムスケールの社会現象の創発について考えるときには、数時間から数日ぐらいのタイムスケールの人間の思考について考えれば十分で、数ミリ秒といったタイムスケールの脳細胞のダイナミクスについて考えることはナンセンスでしょう。

では、現実の世界は多段階の階層なのに、1階層の創発しか扱わない研究の場合、どのように考えて1階層だけで現象を扱っているのでしょうか? 例として、進化ゲーム理論を題材として、進化について考えるときに生物の生涯(いつ何をどうしてしたか?とか)はどう扱われるのか? について考えてみましょう。結論としては、生物の個々体は、「どのぐらいの確率で生き延び、どの程度の数の子孫を残すか」の期待値のみで評価され、それぞれの生涯は気にされません。つまり、生存・繁殖に関わる「特徴」とそれの「生存・繁殖能力の期待値」だけで評価されます。なぜなら、進化について考えたい時のほとんどは、どんな特徴が生態系に広がり、どんな特徴が絶滅するかに最も興味があるからです。それを構成する生物の1個体1個体の生涯に興味はありません。このように「最も知りたいマクロな現象」に焦点を当て、それの一段階下の「可能な限りシンプルに表現されたミクロな要素」を考えます。ミクロな要素の内部のダイナミクスとか面倒ですし、大抵の場合、興味もないので考えません。

このようにタイムスケールの短いミクロな要素のダイナミクスを平均で評価することで、ミクロな要素のダイナミクスをモデルから消し去り、マクロな現象のダイナミクスを観測できるようにモデルを簡略化(近似)するテクニックを縮約する*4とか断熱的に近似する*5とか言います。これによってモデルは非常にシンプルで扱いやすくなり、場合によってはシミュレーションではなく数理的に何とかできたりするようになります。

縮約したモデルでマクロな現象が十分に表現できていれば、ミクロレベルの要素はそれ以上細かく見る必要がないと言えます。この場合はただ一つの階層だけ考えばよく、多段階の創発について考える必要はありません。

では、いつも一つの階層について考えればいいのでしょうか? 縮約はミクロレベルのダイナミクスがマクロレベルのダイナミクスよりも十分に速い時に可能です。その縮約という近似が効かなくなった時にどんなことが起きるか? 両者のダイナミクスのタイムスケールがそんなに違わない時に、マクロレベルのダイナミクスは大して変わらないのか、それとも全く異なることが起きるのか? について検討します。この辺りについては「縮約法の破綻」などと言われ、いろいろ研究されているようです(なので本来はこういうことする前にサーベイするべきなのですが…)。

それについて考えるために本記事ではタイムスケールの差が縮約という近似に与える影響についてどんなことが起こりうるのか調べます。創発させて階層を作るのは上記の通りとても大変なので、階層は存在していると仮定してタイムスケールの違う階層間の相互作用に焦点を当てます。

モデル

本記事では個体からなるグループ、グループからなる生態系という二階層の個体数動力学モデルを考えます。ただし、階層間のタイムスケールの差の影響について知ることが目的なので、モデルに生態学的な妥当性は求めません。

グループi = 1 \dots N内の個体のダイナミクス\dot{x}, \dot{y}はリミットサイクルを持つ以下のロトカヴォルテラ方程式の亜種(詳細はロトカ・ヴォルテラ方程式の「もう一つの安定なロトカ・ヴォルテラ方程式,リミットサイクル」を参照)を使って記述します。

\dot{x_i}=rx_i(1-\frac{x_i}{K}) - \frac{ax_i}{1+h_i x_i}y_i(1)
\dot{y_i}=\frac{bx_i y_i}{1+h_i x_i} - cy_i(2)

これは被食者(例えばうさぎ)の数x_iは自然に増殖するが捕食者によって食べられ減り、捕食者(例えばきつね)の数y_iは被食者を捕食できないと減るが捕食できればそれに応じて増加するという生態系のモデルです。ただし、被食者の増殖には環境収容力Kによる制限がかかり、捕食者の増殖には捕食速度 a/h_i による制限が掛かります。ここで捕食速度のパラメータ h_iにも添字iが付いており、被食者・捕食者の数x_i, y_iだけでなく、グループの環境パラメータh_iもグループごとに違うということに注意してください。どのように決まるかは後述します。

そのグループiからなる生態系のダイナミクスは以下のレプリケーター方程式を使って記述します。

\dot{z_i}=\alpha z_i (f_i - \bar{f})(3)
\bar{f}=\sum_i f_i z_i(4)
\sum_i z_i = 1(5)

これは、平均より適応度が高い個体(ここではグループi)は全体における比率z_iが増加し、そうでない個体(ここではグループi)の比率z_iは減少するという進化ゲーム理論などで使用されるモデルです。詳細はレプリケーター方程式 - Tokiwiki 2.0を参照してください。\alphaz_iの「式1, 2に対する相対的な変化の早さ」を調整するパラメータで、値が小さいほどz_iダイナミクスのタイムスケールはx_i, y_iよりも長いということになります。

ここで、グループiの適応度f_i
f_i=\mathrm{e}^{-x_i}(6)、
すなわち、グループiの適応度は被食者数x_iが増加すると指数的に減少するとします。なんだかよくわかりませんがこうします。

また上記で示したグループiの環境パラメータh_i
h_i=0.1 N z_i(7)、
すなわち、グループのサイズ(の全体の比率)z_iが増えれば増えるほど、捕食者の捕食速度a/h_iは遅くなるとします。こちらもなんだかよくわかりませんがそうします。

こうすると、被食者x_iが増えるほどグループサイズz_iは増加し、その結果、捕食者の捕食速度a/h_iは遅くなり、被食者x_iは増え、捕食者y_iは増加しやすくなるというモデルになり、なにか面白そうな振る舞いをしてくれそうです。また、振動子(各グループのロトカヴォルテラ方程式)がレプリケーター方程式によって大域的に結合している結合振動子系と考えることもできそうです。

結果と考察

上記のモデルをオイラー法(dt=0.1)で1000000ステップの数値計算をし、最後の一割のステップを評価しました。各パラメータはr=0.18, K=30, a=0.02, b=0.0504, c=0.25, N=10と設定しました。

まず、ダイナミクスの早さの差異(\alpha)の影響について見てみます。
f:id:swarm_of_trials:20150102181530p:plain
f:id:swarm_of_trials:20150102214302p:plain

  • 図1. \alphaによるz_iエントロピーに関する分岐図(上)とそれの\alpha <= 0.93における拡大図(下)

図1は\alphaを0.01から1まで0.01刻みで変えた時のz_iエントロピー\sum_i z_i \mathrm{log}_2 z_i)の軌道です。マクロなダイナミクスz_1, z_2, \dots, z_Nについて一次元の値で観測したかったためエントロピーを秩序変数として使用しています。また連続値で振動していたため極値のみをプロットしています。0.01 <= \alpha<=0.93のときは非常に小さな範囲で振動し、0.94<=\alphaのとき広い範囲で振動を示しました。すなわち、階層のダイナミクスのタイムスケールの差異の大小によって全く異なった振る舞いをし、それは分岐によって分けられました。また、図では読み取りにくいですが、\alphaが大きくなるほど、z_iエントロピーの最小値は0に漸近しました。以降、0.01 <= \alpha<=0.93小振動相0.94 <= \alpha大振動相と呼びます。

次にx_i, y_iダイナミクスについて見てみましょう。まず、小振動相について分析します。図2に\alpha = 0.93の各グループの被食者数x_1 \dots x_N、図3に各グループサイズz_1 \dots z_Nの軌道を示します。

f:id:swarm_of_trials:20150102220602p:plain

  • 図2. 各グループの被食者数x_1 \dots x_Nの軌道(\alpha = 0.93

f:id:swarm_of_trials:20150102211340p:plain

  • 図3. 各グループサイズz_1 \dots z_Nの軌道(\alpha = 0.93


被食者数x_1 \dots x_NN/2ずつの2つのクラスタに別れ、クラスタ内では同期して振動しました。図2, 3では重なっていますが、ひとつのように見える曲線は5つの軌道が重なっています。そして、その2つのクラスタは逆位相で同期して振動しました。グループのの集団サイズz_1 \dots z_Nも同様に2つのクラスタに別れ、クラスタ内では同期して振動、クラスタ同士は逆位相で同期して振動しました。ただし、集団サイズは\pm 0.003程度の非常に狭い範囲で振動しています。すなわち、グループサイズはほぼ均等になり、そのグループの中では被食者は同位相、または逆位相で同期して振動していました(捕食者も同様)。なお、Nが2で割り切れない条件(N=11)でも同様の実験を実施したが、その場合はN=5, 6の2つのクラスタにわかれた以外は同様の振る舞いを示した。

次に大振動相について分析します。図4に\alpha = 0.94の各グループの被食者数x_1 \dots x_N、図5に各グループの集団サイズz_1 \dots z_Nの軌道を示します。

f:id:swarm_of_trials:20150102220609p:plain

  • 図4. 各グループの被食者数x_1 \dots x_Nの軌道(\alpha = 0.94

f:id:swarm_of_trials:20150102211354p:plain

  • 図5. 各グループの集団サイズz_1 \dots z_Nの軌道(\alpha = 0.94

被食者数x_1 \dots x_Nは2つのグループのみ振動し、それらは逆位相で同期しました(図4)。それ以外のグループは絶滅しない状態(x_i > 0)で収束しました。そして、グループのの集団サイズz_1 \dots z_Nも同様に2つのグループのみ振動し、それらは逆の位相で同期しました(図5)。それ以外のグループのサイズは0に漸近しました。すなわち、グループは2つを残して絶滅(グループサイズが0)になり、残った2つのグループの中では被食者は逆位相で同期して振動していました(捕食者も同様)。

以下に小振動相\alpha=0.93と大振動相\alpha= 0.94から1つずつグループを抜き出し、被食者と捕食者の軌道を示します(\alpha=0.94についてはz_i>0の非絶滅グループを抜き出してます)。

f:id:swarm_of_trials:20150102211359p:plain

  • 図6. \alpha = 0.93から抜き出したグループのx, y\alpha = 0.94から抜き出したグループのx, yの軌道

小振動相の場合に比べて、大振動相の場合はx, yは各振動で0に漸近し、絶滅しかけるという極端な振る舞いを示していることがわかります。また、小振動相の場合はグループレベルの相互作用(式3, 4, 5)がない場合に類似した軌道を示しています(ロトカ・ヴォルテラ方程式の「もう一つの安定なロトカ・ヴォルテラ方程式,リミットサイクル」を参照のこと)。

小振動相ではグループサイズはほぼ均等にな状態で安定するため、その状態では捕食速度a/h_iはほぼ一定になります。したがってグループレベルの相互作用がない場合と類似した振る舞いを示したのだと考えられます。グループレベルのダイナミクスが、個体レベルのダイナミクスよりも遅いため、個体レベルのダイナミクスを考えるときにh_iが受ける影響が小さかったためだと考えられます。

一方で、大振動相では被食者x_iが増加するとグループサイズz_iが減少し、捕食速度a/h_iも連動して変わり増加するため、被食者x_iと捕食速度a/h_iの両者が高い状態となり、捕食者y_iが急激に増加します。それによって被食者x_iは急激に減少するため、捕食者y_iもそれに伴い減少します。被食者x_iが激減するため、グループサイズz_iが増加し、捕食速度a/h_iが減少します。それによって捕食者y_iはさらに減少します。捕食速度a/h_iが遅く捕食者y_iが少ないという状態となり、被食者x_iが増加し最初の状態に戻ります。

興味深いのはこの2つの全く異なる振る舞いが\alphaという変化の相対的な早さを表すパラメータを変えるだけで現れ、また、その境界はなだらかでなく、\alpha=0.94で分岐によって明確に分けられたことです。

まとめ

本記事では、複数階層間の相互作用におけるタイムスケールの差異の影響について知るために、2つの階層が明示的に存在する系を考えて、階層のダイナミクスのタイムスケールの差異を変えてどんなことが起きうるのか? について簡単なモデルを作って調べてみました。

その結果、タイムスケールの差異によって、ミクロレベルもマクロレベルも全く異なる振る舞いを示しました。また、そこには明確なしきい値が存在しました。

この結果は、ダイナミクスのタイムスケールが十分に異なるときは、縮約やそれに近い考え方を使って一つの階層のミクロ・マクロ相互作用に焦点を当てて分析することが可能だが、そうではない場合、縮約という近似は破綻し、全く異なる振る舞いが発現する可能性がある。それは分岐によって明確に相が別れうるということを示します。

小振動相・大振動相共に引き込みによる同期が発生しており、それが何故どのように起こっているのか? は結合振動子として扱えそうな気がしないでもないのですが、振動子系は勉強不足(というかほとんど知らない)のため全然手を付けれていません。その辺りを今後勉強しながらやってみたいと思います。とりあえず、学生の頃買ってずっと積みっぱなしの蔵本先生のリズム現象の世界 *4 を読まないと(;・∀・)



参考文献