人工生命 ~生命を使わない生命の研究~

人工生命の紹介

この記事はQiita:湧源クラブ Advent Calender2019の6日目の記事です。

qiita.com

AdventCalenderのためにブログを開設しました!

来週にももう一つサークルの方でAdvent Calenderに記事を書く予定ですが、

果たしてそのあとこのブログは使われるんだろうか……

 

人工生命って?

生命を扱わない生命の研究、人工生命の世界を紹介しようと思います。

巷で話題の人工知能(Artificial Intelligence)はご存知の方が多いと思います。

これは賢さを人工的に作ろうという試みで、画像や音声や自然言語を認識したり生成したり、ゲームを与えると勝手に上達してくれたりします。

人工生命(Artificial Life)は、生命を人工的に作ろうという試みです。

「何をもって生命とするのか」は結構大事な観点で、それは「各研究者が生命の何に興味があるのか」と直結します。

この記事では独断と偏見で僕の好きな人工生命をいくつか紹介します。

見た目が楽しいのを用意したので、動画だけでも見ていってください。

 

Boids

コンピュータにはあまりない生命特有の知能の形態といえば、群知能です。

カラスやイワシといった群れで移動する生物に面白さを感じた人たちが研究をしています。

彼らは、群れとして協調的な動きをし、まとまって移動します。

その動きは人間が2列になって移動するときのような単純なものではなく、もっと有機的に分裂したり、集合したり、水族館のイワシのように目的もなく方向を変えたりします。

しかしダイナミックに動く群れを構成する各個体は、その群れ全体の動きを把握しながら自身の行動を決定しているのでしょうか?

また群れの動く方向はどの個体がどうやって決めているのでしょう?

 

実は各個体は自分の周りの数個体の動きしか見なくても、全体としてまとまって移動できるということを示したのがBoidsモデルです。

群れの移動方向を明確に定めているリーダーのような個体はおらず、各個体が自身の周辺の局所的な情報のみを用いて行動することで、マクロな階層として群れ全体の一体感のある動きが出てきます。

www.youtube.com

これは鳥の実際の群れの動画です。

www.youtube.com

そしてこれがBoidsモデルによるシミュレーションです。

1つの点が1つの個体で、各個体は自身の周囲の数個体の情報のみを使って移動方向と速度を決定しています。

ここではBoidsの移動方向を決定するルールの詳細は述べませんが、結構単純で、周りの個体の移動方向の平均に近づくようにするのと、周りの個体と適切な距離を保つことくらいをしています。

たったそれだけで全体として大きな群れの動きが出てくるのは面白いですよね。

 

おまけですが、鳥や魚はどちらも流体の中を移動していますね。

群れが流体の中を移動する際、上手な配置を取れば各個体はあまりエネルギーを使わずに移動できることが知られています。

例えば空気抵抗を削減するために、「へ」の字のフォーメーションで飛ぶ鳥とかを見たことがあると思います。

実はもっとえらくて、エネルギー0でもある条件下では魚は泳げることが知られています。

何を言ってるんだコイツはと思った方、下の動画を見てください。(20s辺りから見るとよいです)

www.youtube.com

魚が泳いでいますが、この魚、死体です。

死体なので当然筋肉は一切動かしておらずエネルギー使用量は0です。

画面左から水が流れてきて、魚の上流に立てられたポールによって発生するカルマン渦に上手に乗っかる形で、まるで生きてるかのように水中に浮き、体をくねらせ、上流に向かって移動したりさえします。

これは魚の体の形と剛性といった物理的特性が上手に設計されているからなせる業です。

実際、泳いでいる際の魚の筋肉活動を計測すると、完全に脱力しているタイミングがあるそうです。

生物は賢いですね~。

(こういう機械にはまだない生物の賢さを生命知能と呼んで研究している人もいます)

 

Lenia

これは2018年の論文で出てきた人工生命です。

論文を読みたい方はこちらからhttps://arxiv.org/abs/1812.05433

arxivなんで無料で読めます。

いわゆるセルオートマトンを連続値に書き直したら、面白い構造がたくさん出てきましたというものです。

まずは動画をどうぞ

 生物のような対称性を備えたいろいろな身体構造の個体が移動しているのが見れますね。

セルオートマトンでは、二次元格子に区切られた領域(=セル)があり、各セルには状態量(最もシンプルなものでは0,1の2状態)があります。各セルは自身の周囲のセルと自身の状態に依存して次のステップの状態を更新していきます。これを繰り返してセルの状態がどのように変化していくかを見るのがセルオートマトンです。

中でもライフゲームと呼ばれるセルオートマトンは有名ですね。下のニコニコ動画のシリーズがめっちゃ面白いので、見てない人はぜひ見てください。セルオートマトンでセルオートマトンを作ったりしています(は?)。

www.nicovideo.jp

 そういったわけで、セルオートマトンというと1つのセルの大きさや状態量、時間ステップなどが離散値を取ることが多いのですが、Leniaではそれらを全て連続値に置き換えたモデルです。

 たったそれだけでこのように多種多様な安定的な移動パターンが出てくるのは面白いですよね。

これは僕の妄想ですが、微生物の構造や、生物の発生初期の極性を決める際(受精卵から分裂をして、指をどっち方向に何本作るか決めるとき)なんかにこういった空間的に局所な相互作用による干渉パターンが実際に使われたりしたらめっちゃ面白いなと思います。(ここまで妄想です)

 

生命有機化学

今まではシミュレーションの話をしてきましたが、ラストは化学の話です。

細胞膜などの生物を構成する要素がどのようにして機能を果たしているかを調べるため、生物の細胞膜を構成する分子とは異なる化学分子を設計、合成し、生物とは異なる材料(分子)で同じ機能を達成してみせるという方法があります。(僕は離れ業だと思ってます)

それをやってのけているのが、豊田太郎先生のラボです。

https://park.itc.u-tokyo.ac.jp/toyota_lab/

正直な話をすると、私は化学の知識はそんなにないのであまり技術的な解説はできないです。興味のある人は各自調べてみてください(そして私に会った時に教えてください)

豊田先生たちが取り上げられた講談社の記事があって、そこでいろいろ紹介されています。

記事:https://gendai.ismedia.jp/articles/-/59381

以下、記事からいくつか動画を抜粋

 単純な油と水の組み合わせだけでも生物に似た現象が作り出せるの、めっちゃ楽しいですよね。

終わりに

生命を扱わない生命の研究の紹介でした。

生命に興味があるからといっても必ずしも生命を扱う必要はなく、生物以外の方向からも面白いことがいろいろできることが伝わってたら幸いです。

自分の好きな分野の周辺分野とかを調べてみると、普段見てるのとまた少し違った面白い世界が広がってるかもしれませんよ。