セル・オートマトンで「脳」をシンプルに実装してみよう。その1 -セル・オートマトンとは？-

この記事は、コミュニティ「[自由研究室 AIRS-Lab](https://www.airs-lab.jp/)」の[Advent Calendar](https://qiita.com/advent-calendar/2021/airs-lab)、2日目になります。

「脳科学」に興味のある人は多いですが、とっとき辛いのが難点ですよね。
もちろん読み易い書籍や解説記事は多数あるのですが、自分で手を動かしてアプローチする手段は専門の研究者以外にはなかなか思いつかないことか思います。

そこで、本記事では何回かに分けて「セル・オートマトン」というシンプルな計算モデルを使い、比較的簡単な方法で脳にアプローチする方法を解説します。
複雑な微分方程式を使わずに、可能な限りシンプルに脳を捉えてみましょう。

以下の通り、何回かに分けて解説します。
[その1 -セル・オートマトンとは？-](https://qiita.com/yuky_az/items/17fff285101ea365982b)
[その2 -セルの並べ方-](https://qiita.com/yuky_az/items/c134fafb9311b9c15651)
[その3 -ニューロンの配置-](https://qiita.com/yuky_az/items/cc5272d1c18270c5f7b2)
[その4 -恒常性と馴化-](https://qiita.com/yuky_az/items/9fd73452f8283262e54a)
[その5 -ヘブ則の導入-](https://qiita.com/yuky_az/items/065b764f59e2720214c2)

# セル・オートマトンとは？

セル・オートマトン（Cellular Automaton）は、1940年代にアメリカの数学者スタニスワフ・ウラムとジョン・フォン・ノイマンが基礎となる概念を発見した、格子状のセルとシンプルなルールよる計算モデルです。
セル・オートマトンの「セル」は「細胞」あるいは「小部屋」の意味で、「オートマトン」は「からくり人形」の意味です。
セル・オートマトンはとてもシンプルなモデルですが、生物の模様や化学反応など様々な自然現象をシミュレート可能なことが知られています。

セル・オートマトンにおいて、**次の時間のセル**の状態は**そのセルおよび周囲のセル**の状態により決定されます。
以下の図は、セル・オートマトンにおける「周囲のセル」の定義の例です。

![neighbers.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35297/44038375-0c87-a45c-fd12-f310db0bc0b4.png)

左側がフォン・ノイマン近傍で、右側がムーア近傍です。
フォン・ノイマン近傍では中央のセルは上下左右4つのセルの影響を受けますが、ムーア近傍では斜め隣のセルも含めた8つのセルの影響を受けます。
もちろん、さらに多くの周辺のセルの影響を受ける条件を考えることもできますし、遠方のセルの影響を受ける条件を考えることも可能です。

1980年代、イギリス出身の理論物理学者スティーブン・ウルフラムは、熱力学第二法則に従わないように見える自然界の様々なパターンを理解するためにセル・オートマトンの研究を開始しました。
熱力学第二法則はエントロピー増大の法則とも呼ばれ、物理学の一分野「熱力学」における熱は高温から低温に移動するがその逆は起こらないという経験則です。
「秩序がある状態は、その秩序が崩れる方向にしか動かない」と解釈されることもあります。
ウルフラムは、単純な規則から生まれる予測不能な複雑さを見て、自然界における複雑な現象も同じ原理によって生まれているのではないかと考えたようです。

全ての現象がセル・オートマトンで説明可能かどうかについては議論がありますが、セル・オートマトンはシンプルであるにも関わらず複雑な現象をシミュレート可能なモデルであるため様々な分野の人の興味をこれまでに集めています。

# ライフゲームとは？

ライフゲームはイギリスの数学者Conwayが考案したセル・オートマトンの一種で、非常に単純なルールから完全にランダムでもなく完全に規則的でもない非常に複雑なパターンが生じます。
セルを格子状に多数並べるのですが、あるセルの周辺の状態によって、そのセルの次の時刻における生死が決まります。

ライフゲームのセルには、「死んでいるセル」と「生きているセル」の2種類があります。これらは、以下のルールにより次の時刻における生死が決まります。

* 死んでいるセルの周囲に3つの生きているセルがあれば次の時刻では生きているセルになる
* 生きているセルの周囲に2つか3つの生きているセルがあれば次の時刻でも生きているセルのまま
* これ以外の場合は、死んだセルになる

すなわち、セルの周囲に仲間が少なすぎるか過密すぎる場合、セルは死んでしまうことになります。
以下の図において、オレンジのセルが生きているセルで、白いセルが死んでいるセルです。  

![lifegame.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35297/ad892c7a-0094-e0f5-7cdd-b8a9fcb33ba3.png)

次の時刻において、中央のセルはそれぞれ、「誕生」、「現状維持」、「死亡（過疎）」、「死亡（過密）」となります。

細菌などの生物の繁殖に似ていますね。
実際にライフゲームは生物の群れのような複雑で多様性に富む振る舞いを示します。

ライフゲームのコードはこちら。「Open in Colab」ボタンでノートブックを開くことができます。
https://github.com/yukinaga/brain_ai_book/blob/master/lifegame.ipynb

ライフゲームのルールはシンプルですが、プログラムを組んで動作させると以下の動画ような時間と共に変化する複雑なパターンを描きます。
![lifegame.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35297/9d0e5a82-50c7-9e89-1b57-c127558bf0d6.gif)

# 「脳」とセル・オートマトン

脳においても、比較的シンプルなルールに基づいて動作する神経細胞がネットワークを形成し、実際に機能する複雑なパターンが生成されているのではないか、という仮説に基づきこの後コードを組んでいきます。  

一方、アメリカの理論物理学者スティーブン・ウルフラムは、2001年の著書「A NEW KIND OF SCIENCE」で、
"Ironically enough, while cellular automata are good fo many things, they turned out to be rather unsuitable for modeling either self-gravitating gases or neural networks."
（皮肉なことに、セル・オートマトンは多くのことに優れているが、自己重力ガスやニューラルネットワークのモデリングには不向きであることが判明した。）
と述べています。
「判明した」と書かれていますが、その根拠を同書や類書を読んでも結局は見つけることはできませんでした。

しかしながら、先人の偉大な業績がある一方で、これまでに人類が探索してきた可能性は広大なアルゴリズムの海のごく一部でしかないのも確かです。
また、2021年現在は当時と比べるとコンピュータと親しんでいる人数は大幅に増加し、先ほどのライフゲームの実行環境Google Colaboratoryのように気軽にプログラムを実行できる環境も整っています。
むしろ現在において、セル・オートマトンは様々な背景の人が自由な発想で手軽に様々な可能性を探索するのに有用なツールであると私は考えています。
次回以降で、実際にコードを書きながらその可能性を探っていきます。

今回の「その1」では、セル・オートマトンについて概要を解説しました。
「その2」に続きます。

なお、本記事の内容は、拙著「[あたらしい脳科学と人工知能の教科書](https://www.shoeisha.co.jp/book/detail/9784798164991)」をベースにしています。

【コミュニティ「自由研究室 AIRS-Lab」】
「AI」をテーマに交流し、創造するコミュニティ「自由研究室 AIRS-Lab」が活動中です。
​https://www.airs-lab.jp/​