作って動かすALife

この記事では「作って動かすALife」の紹介をします。

  1. 本の概要
  2. 各章のまとめ
  3. コード実行の注意点
  4. 感想

本の概要

この本は、ALife(人工生命)について書かれています。ALifeは現実の生命をモデル化しコンピュータ上で再現したものです。

章だては、ALifeに関する主要な7つの概念にまとまっています。生命の複雑さにも対応していて、個の発生から群れの相互作用へと進みます。それぞれの章では、Pythonで実行できるプログラムが掲載されていて、GitHubからコードをダウンロードして自分の手元で動かすことができます。

各章のまとめ

1章 ALifeとは
人工生命の歴史を振り返り、データサイエンスや人工知能、社会的意義を説明する。

2章 生命のパターンを作る
自然界には雲や地面のひび割れのように普遍的に現れるパターンがある。生命の種を超えて見られる自己組織化されたパターンを、方程式で表したのがアラン・チューリングの反応拡散系。その一つGray-Scottモデルをパラメータを変えながら実行し、現れるパターンを確認する。
スティーブン・ウルフラムによる1次元セルオートマトンの分類、ジョン・ホートン・コンウェイの2次元セルオートマトン(ライフゲーム)を実行し、自己組織化するパターンを確認する。



3章 個と自己複製
個体を維持するためには、物質が流動的でありつつ、反応が散逸しない程度に集合している状態「開きつつ、閉じる」状態が必要。自己を生成、維持できる最小単位の生命 = オートポーエイシスを実現するモデルの一つが「SCLモデル」。材料となる基質(Substrate )、反応を促す触媒(Catalyst )、結合した膜(Link)、の3つの要素から、自己組織的に構造が作られていく。



ジョン・フォン・ノイマンは、2次元のセルオートマトン上に、自己複製するパターンを作った。情報を記録した「テープ」と、解釈を行う「マシン」からなっている。論文発表時点では実行できるコンピュータが存在しなかったので、正しく動作するか検証できなかったが、2008年にシミューレータ「Golly」によって、オリジナルの29状態オートマトンが実際に動作するのを確認できる。


ノイマンの自己複製オートマトンは、わずかでもノイズがあると機能しなかった。ノイズに強い自己複製モデルとして、2章にも登場したGray-Scottモデルがある。
また、現実世界で、物理的な構造による自己複製模型をライオネル・ペンローズが作った。可動式のフックを持ったユニット同士が衝突するとフックが固定・解除され、複製される。


これらのモデルは、完全な形で複製されるため、進化が起きない。進化が起きるには、僅かなゆらぎ持った複製を行うことが必要。ノイマンの自己複製オートマトンの「テープ」と「マシン」に「遷移表」を加えたモデルが考案された。データを遷移表に従って解釈し、遷移表のルールが変化することで、自分と違う複製を行うことが可能になる。各世代では親と違う子が複製されるが、全体としては自己複製される。このようなネットワークを「コアネットワーク」と呼ぶ。

4章 生命としての群れ
複数の個体同士が相互作用し、集団の行動バターンや構造が創発されるメカニズムが研究されてきた。
「Boidモデル」では、周りの個体と離れる「分離」、周りの個体と進行方向と速度を合わせる「整列」、周りの個体の中心に向かう「集合」の3つのルールを適用することで、鳥の群れの動きを表現できる。更に個体の数を数十万まで増やすと、大きな構造が現れる。しかし、このままでは、群れの創発にとどまり、新たな目的は現れない。


スチュアート・カウフマンの「隣接可能領域」とは、現在あるところから隣接した領域に未来は広がっているという概念。進化のプロセスに当てはまる。

「新規性の生成」は知性に重要な要素である。Webサービス(RoomClip)の中では、密接に結びついたコアユーザーと、外周のライトユーザーという構造があった場合に、一様なコアーユーザーから新しいタグ(新規性)が生まれやすかった。
(※個人的にはコアユーザーはヘビーユーザーでもあり、サービスにコミットする意欲が強いという可能性が高いと思われる。)

5章 身体性を獲得する
コンピュータの中ではなく、現実世界で身体を持ったロボットについて考える。
ヴァレンティノ・ブライテンベルクが開発したロボットは、2つの距離センサと2つのモーターを持ち、それぞれが連動することで、壁や柱を避けて移動することができた。複雑な内部機構がなくても、まるで知性がある可能ように振る舞うことができることを示した。


iRobotの創立者であるロドニー・ブルックスの「サブサンプション・アーキテクチャ」は、複数の層を階層的に持ち、状況に応じて層を切り替える。例えば、「Aboid層(衝突を回避する)」「Wander層(ランダムに動き回る)」「Explore層(目的地を目指す)」があり、通常はWander層かExplore層だが、障害物が近づくとAboid層に切り替わる。
(※生命維持の基本機能を小脳が担当し、高次の機能を大脳が担うようなイメージだろうか。)

1994年のカール・シムズの「Evolving Virtual Creatures」以降、現実世界で進化するロボットが提案されてきたが目覚ましい進歩はない。身体と脳(ハードとソフト)どちらかを固定する方法では良い結果が得られるが、同時に進化する方法ではうまく行かない。交互に進化させる必要があるのかもしれな。

柔らかい素材や、ガスを動力に使った「ソフトロボット」が検討されている。



6章 個体の動きが進化する
ALifeでは生物の進化がどのように起きるのかに注目している。現在は、コンピュータ上のシミュレーションや、ロボットから、試験管の中での化学な実験にシフトしてきている。

「適応度地形」とは、環境における適応度が高い方へ徐々に移動するという考え方。自然環境や周辺の生物によって、絶えず変化し続ける。後付的なもの。

「エラーカタストロフ」とは、変異が大きすぎて複製が止まってしまう現象。これがあることで、変異が一定範囲内にとどまりグループとしての自己複製が可能となる。

トム・レイの「Tierra」は、プログラミング言語をメディアとして、進化をシミュレートした。他のプログラムを利用して自己複製したり、プログラム群が全体を自己複製するなどの進化が見られた。

「囚人のジレンマゲーム」で「遺伝的アルゴリズム」を実行すると、必勝は現れず、常に置き換わっていく=「オープンエンドな進化」。

ジョン・ホランドが考案した「遺伝的アルゴリズム」は、対象の状態を遺伝子に見立て、1世代の中で優秀な成績を出した遺伝子を優先的に次の世代に残し、対象の状態を進化させて行く手法。


エージェントの遺伝的アルゴリズムによる進化シミュレーション。2次元の場に食料が不均一に分布している。エージェントは、7つのセンサーと2つのモーターを持った仮想のロボット。内部は、センサーを入力、モーターを出力とした2層のニューラルネットワークとなっている。バイアスと重み付けを遺伝子として遺伝アルゴリズムによって進化させる実験。第1世代ではランダムな遺伝子のため同じ場所をぐるぐる回るだけだが、世代が進むごとに食料濃度が低いところは直進、高いところでは旋回する動きをみせるようになる。

← 第01世代 | 第70世代 →

ALifeが普及すると「多様性の原理」の重要性が浸透する。物に生命性が宿り物心化する。人間中心から、ALifeを中心とした「ALife世紀」となる。
(※ここはスピリチュアル入ってて理解できない)


7章 ダンスとしての相互作用
複数のエージェントが互いに認識、行動することで、相互作用と生命の関係を探る。

入力と出力が直結したロボットには内部状態が無い。内部状態があることで、刺激に対して文脈によって反応を変えることができる。個体同士の相互作用によって内部状態が遷移する。模倣や予測を可能にする。

「RNN(リカレントニューラルネットワーク)」は、コンテキストを持ったNN。状況や時間等の文脈による学習が可能。文章の区切りや、ロボットのナビゲーションなどが可能。

「囚人のジレンマゲーム」のルールの中で、RNNを持った2つのエージェントが、互いの行動からモデルを作り、次の行動を予測する実験を行った。(相互作用を見るゲーム:Coupled Dynamical Recognizer ; CDR)様々な戦略が入れ替わり、不安定な状態が続いた。また協調的な作用は生まれなかった。

二次元平面状を2つのエージェントが追いかけっこし、鬼を交互に切り替えていくというルール(ターンテーク)の場合、遺伝的アルゴリズムによって進化を進めると協調できるようになっていく。ただし、一方が予め決められた動きを再生する場合は、協調しなかった。
現実世界での赤ちゃんが親の模倣をする実験でも、ライブカメラでは模倣したが、録画では反応しなくなった。

協調が成立するためには、相手の動作への期待が必要。期待が内部状態の変化を促す。

二次元平面上に複数のエージェントがいて、食料を出しながら移動する。フェロモンは一定の割合で減少する。食料を集める事を十分に学習したエージェントは、自分の足跡を追いかけて小さくループするか、他社の足跡を追いかけて大きなループを作る。大きなループはノイズや揮発によってやがて崩れて、別のループに変化する。安定と不安定が共存し、局所解に陥らずダイナミズムが保たれる。

←自分の跡を追いかけるループ | お互いの跡を追いかけるループ→ 


8章 意識の未来
意識とは何か、は未だ解明されていない問題。

ベンジャミン・リベットは実験によって内的時間を発見した。
1つは、行動を意識した0.5秒前に脳は活動を始めている。この準備状態を「レディネス・ポテンシャル」という。
もう1つは、イベント発生時間の逆転現象「逆行性遡及(ポストディクション)」。脳の感覚野と皮膚に同時に刺激を与えた場合、脳への刺激のほうが先に意識に上るはずだが、主観的には皮膚への刺激のほうが先になる。意識は主観的な時間を持っている。

並列的な時間感覚があるとすると、ブライテンベルクビートルのように各部が非同期的に動く。意識を「直列的な時間を持ったもの」と考えると、その整合性を取るために、ポストディクションによって主観時間を調整しているのではないか。

意思決定に逡巡を生み生存に不利に働くが、冗長性が多様性、創造性を生み、有利になった。かもしれない。

「ヘッブ効果」シナプスは発火するほど結合が強くなる。ドナルド・ヘッブが提唱した。

通常の方法で世界をモデル化するのではなく、例えば事実と反するようなモデルを生成し運動パターンを作るような物を意識’と呼ぶとして、複数の実例を紹介する。

LEGOを使った衝突回避ロボット、ペグ取りロボット、三角四角判定ロボット、点滅周期判定ロボット、音で踊るロボット、見かけ上の試行錯誤をするロボット。

コード実行の注意点

Pythonで実行できるプログラムがたくさんあります。説明を読むだけでは理解しづらい事もコードを読み、実際に動かすことで読み取れる事が多くありました。サンプルコードのダウンロード方法、実行環境のセットアップ方法などは、「まえがき」で説明されています。

ただし、6章の「ant_nn.py」などを実行すると、下記のようなエラーが起きました。

W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudnn64_8.dll'; dlerror: cudnn64_8.dll not found

Nvidiaが提供するGPUによる並列処理のためのライブラリCUDAを使うため「cudann」と「cutatoolkit」をインストールする必要がありました。Anacondaを使えば、簡単にインストールできます。

 

感想

Alife(人工生命)という言葉は聞いたことがありましたが、実現不能で精神論が入ったものというやや胡散臭い印象(失礼)を持っていました。しかし、もともと複雑系、相互作用による創発、といった概念にとても興味があったため、本書を読んでみました。

Alifeという概念が、身体性、意識、進化、といった非常に幅広い分野を横断し、大きな可能性を持つものだということが分かりました。本書は、とてもわかり易くAlifeの世界と魅力を紹介してくれる良書だと思います。

実際に動かせるコードが付属している点が、非常によかったです。概念的な説明だけでは理解しにくいことも、コードを読み解き、パラメータを変えながら動作させることで、腑に落ちました。また、ライフゲームやフェロモンをたどるアリのシミュレーションは、ずっと見ていたくなる魅力があります。

この本を入り口として、参考文献として紹介されている論文を読むことで、Alifeの世界にもう一歩踏み込んでみたくなりました。

本書の中で、コンピュータシミュレーションやロボティクスから、化学的なアプローチに移行しつつある、とありました。今後の発展が楽しみです。

自分は、環境と個体が相互作用によって変化し続けるような、小さな箱庭世界に興味があります。シミュレーションとリアルの中間くらいのメディアで何か作りたいなと思います。


以上「作って動かすALife」の紹介でした。


Comments