OpenWorm - C. elegans線虫のコンピュータモデル
(github.com/openworm)- OpenWormは、顕微鏡的な線形動物 Caenorhabditis elegans(C. elegans)の包括的な計算モデルの構築を目指すプロジェクト
- アプローチは、過去10年間に行われた科学実験から得られたデータをシミュレーションし、線虫の行動が現れるかを観察するボトムアップ・モデリング
- Dockerコンテナは、シミュレーションの主要構成要素をまとめてローカルマシン上で実行する環境
- 神経系モデル c302 を実行
- 神経系モデルの出力を使って3D線虫ボディモデル Sibernetic を並列実行
- 神経系とボディモデルの動作グラフを生成
- ボディモデル出力の動画を生成
- デフォルトのシミュレーション実行時間は、妥当な実行時間に収めるため制限されており、サンプル出力と比べて約5%の実行時間に相当する部分出力のみが表示される {p:5}
- 実行要件は、最低60GBの空き容量、最低2GB RAM、gitリポジトリをクローン可能な環境、Dockerのインストール
- 実行フローは、
git clone、任意の./build.sh、./run.sh、終了後のstop.sh、ローカルのoutputディレクトリ確認で構成される ./build.shを省略すると、OpenWorm Docker hub から最新リリースのDockerイメージをダウンロードする-d [num]引数でシミュレーション時間をミリ秒単位で変更でき、デフォルト値は15、完全なサンプル動画生成のための値は5000./run-shell-only.shは、master_openworm.py実行前にコンテナへログインして、チェックアウト済みコードベースやインストール済みシステム内部を確認または修正する用途- インストール項目を変更するには
Dockerfile、実行項目を変更するにはmaster_openworm.pyを修正し、その後ローカルイメージ再ビルドのためにbuild.shの実行が必要 - デフォルト出力では一部の画像と動画のみをホストシステムへ書き出し、完全なシミュレーション出力や
worm_motion_log.txtのようなデータはDockerコンテナからコピーする必要がある stop.shはコンテナと関連ファイルを削除するため、データを取り出す前に実行してはいけない- 追加ドキュメントは http://docs.openworm.org で提供されており、リポジトリにはプロジェクト全体を追跡するためのhigh-level issuesとmilestonesがある
1件のコメント
Hacker Newsの意見
302個のニューロンは、70億超のパラメータを持つニューラルネットワークに慣れた人には大したことがないように見えるかもしれない
しかし、そのようなニューラルネットワークと生物学的ニューロンの共通点は、自転車と馬の共通点くらいのものだ。どちらもかなり速く移動できるが、一方は10億年以上の過酷な自然選択によって進化し、もう一方は単一の目的に合わせて精密に調整された金属製の機械である
ニューロンも同様に、行動を制御する数十億のDNA塩基対を持つ非常に精巧な生物学的機械であり、生物学的システムとAIシステムの両方において、ニューロンの創発的挙動はかなり興味深い
「これらのニューロンは活動電位を発火せず、電位依存性ナトリウムチャネルも発現しない」[1]
だからこそ、ニコチン依存が起こりうるという事実がいっそう興味深い
「C. elegansは哺乳類に似たニコチン行動反応を示すため、ニコチン依存性の研究にも利用できる。これには急性反応、耐性、離脱、感作が含まれる」[1]
[1] https://en.m.wikipedia.org/wiki/Caenorhabditis_elegans
これらの回路はある意味でニューラルネットワークに似ており、何より短期および長期にわたって持続する記憶と状態を持つ。各ニューロンは、学習と行動が可能な生きた個体に近く、モデル内のパラメータではない
一方で仮想的な「ニューロン」は非常に単純な数学的抽象化であり、生物学的ニューロンより計算複雑性が圧倒的に低い。コネクトームはニューロンがどう接続されているかについての非常に粗い地図にすぎず、完全な「ニューラルネットワーク」の設計図とは程遠い
生物学的ニューロンを、より大きなニューラルネットワーク内で状態を持つ下位ニューラルネットワークとしてモデル化できるかもしれないが、計算的に等価だと仮定しても、生物学的ニューロンの計算的に重要な挙動全体を表現するのに仮想「ニューロン」が何個必要なのかはまったく分からない
したがって、302個の生物学的ニューロンを持つ線虫が、計算的には数十億個の仮想ニューロンに相当する可能性もあり、本当に分からない
ニューロンに記憶があるという点ではLSTMネットワークに少し似て見えるかもしれず、生物学的ニューラルネットワークは単純な順伝播ではないので、確かに再帰型ニューラルネットワークにより近い
こういう理由で、マインドアップロードを語る人たちを見ると笑ってしまう。生物学的ニューロンの関連する挙動を理解してモデル化でき、生きたニューロンから利用可能な状態を抽出できるようになるまでは、笑うのをやめられない。今のところ100%サイエンスフィクションであり、私たちが近いうちに心をアップロードできると考える人は生物学を分かっていない
似た原理で動作するなら、線虫はどうやってあれほど小さな資源でそのような行動ができるのだろうか。たとえば線虫の能力に基質の詳細な特性が必須ではないことが明らかになれば、AI研究にとってはよい知らせかもしれない
1990年代にRalph Siegelの研究室でプログラミングの仕事をする機会があり、彼はこの種の線虫のコネクトームモデルも研究していた
https://en.wikipedia.org/wiki/Ralph_Siegel_(scientist)
彼はコネクトーム上でニューロン応答をシミュレーションするためにHodgkin-Huxley方程式を使っていた。誰かが説明してくれたところによれば、Hodgkin-Huxleyモデルは人間の脚を蝶番でつながれた3つの硬いブロックとしてモデル化するのに似ている。多くのモデルで有用であるには十分だが、完全な説明ではない
また線虫のニューロンはスパイクを出さず、HH方程式はスパイク列を作るニューロンを記述するので、線虫ニューロンには適したモデルではないかもしれない。そのようなニューロンはより複雑な神経系に存在する
HH方程式は私たちが持っている数理モデルなのでシミュレーションに使われており、OpenWormプロジェクトでもまだ使われているように見える。線虫ニューロンの性質についてはかなり前に聞いた話なので、情報が古い可能性がある
この作業が続いているのは素晴らしく、神経系の働きについての洞察を与えるかもしれない。しかし難易度は途方もなく高く、巨大な未知の領域の中を非常にゆっくり苦労しながら前進している
それなら人間のニューロンとはかなり違うのだろうか。どう動作するのか、どこで読めるのか気になる
このボトムアップのアプローチが好きだ。私たちが生命についてまだどれほど知らないかを非常によく示しているからだ
ここでCraig Venterの最小細胞プロジェクト syn3.0にも触れる価値がある。このチームは473個の遺伝子から成る生きた合成細胞を作ったが、かなりの部分は試行錯誤によるもので、そのうち多くの遺伝子の機能は今なお分かっていない
同じチームの最近のレビューは https://doi.org/10.1016/j.cell.2022.06.046 にある
システムが崩壊しない範囲でどのピースを取り除けるかを見るやり方だ
ゲノムを人工的に合成したという技術的事実は、ある種の見せ物に近く、結局は既存の細胞の中に入れなければならなかった
既存のチップをコピーして数ビットだけ抜いたり差し替えたりしたうえで、「ウインカーは動かないがだいたい運転できる」と言いながら、車をゼロから作ったと主張するようなものだ
Noam Chomskyは、AIには2種類あると述べている。
1つ目のAI研究は、自動運転車、言語翻訳、物体認識のように、工学に近いものだ。
2つ目のAI研究は、認知科学者が持つモデルと整合する形で、生物、たとえば人間や線虫の知能を複製しようとするものだ。
たとえば、子どものようにごくわずかな教示だけでどんな人間の言語でも習得するシステムは、そのタイプに当たる。
OpenWormは2番に近いように見える。こうした2番目のタイプのAIをさらに探求するうえで興味深い資料があれば知りたい。
[0]: https://youtu.be/TAP0xk-c4mk
数年前にこれを調べたことがあり、いつもKurzweil的な終末論にある程度の妥当性があってほしいと思っていた。
まずC. elegansをシミュレーションし、次に規模を大きくすれば人間もシミュレーションできて、そうなればシンギュラリティが来る、という話だ。
実際、間抜けな線虫をシミュレーションするのがどれほど難しいというのか。コネクトームもあり、すべてのニューロンと接続も分かっているのだから、簡単なはずだと思っていた。
ところが調べてみて衝撃を受けた。動かなかった。基本的な動きの一部は再現できても、実際の線虫が見せる多くの行動は依然として謎のままだった。文書を見ても、人々がすぐに解明できそうには見えず、数年後に見たら結局は放棄されたようだった。
私の知る限り、過大に宣伝されていたヨーロッパの脳エミュレーション・プロジェクトも、不正疑惑の中で頓挫した。
私たちはこれをまったく理解できておらず、まだ非常に遠いところにあるようだ。しばらくはSFに戻るしかなさそうだ。
各シナプスには特定の神経伝達物質があり、距離、大きさ、形状、受容体数、関与するグリア細胞が伝達に非常に大きな影響を与える。軸索の距離や太さも伝わる信号の強さに影響し、これらすべてを測定するのは非常に難しい。
ニューロンは信号の強さやタイミングにも非常に敏感だ。たとえば抑制性シナプスは、細胞壁に穴を開け、時間とともに電荷が漏れるようにすることで機能する。その速度が少しでもずれると、細胞の振る舞いは大きく変わりうる。
コネクトームは、いわば狂気じみた複雑さを持つ学習前モデルに近く、各ニューロンには信号への直接的な応答だけでなく、時間に伴う振る舞いを記述する複数の重みがある。その重みなしではエミュレーションできない。
Devsの第1話を思い出した。
https://www.imdb.com/title/tt8134186/
AIエンジニアが線形動物の動きを同期させたあと、将来の動きを予測するデモを見せる場面がある。ちなみに本当に良いドラマだ。
情報に基づいて非常に正確に外挿するという概念がこのドラマの核心なのだが、ここではそれ以上は言わない。
ショウジョウバエの脳のコネクトームモデルが最近公開された[1]。
[1] https://hub.jhu.edu/2023/03/09/scientists-complete-first-map...
それが可能であることを証明する段階にすら、まだほど遠い。
だから、neurokernel [1] のようなプロジェクトは少し野心過剰に見える。それでも幸運を祈る。
[1] http://neurokernel.github.io/
数年前、ロンドンで開かれたOpenWormのミニカンファレンスのようなイベントに行った。
数日間にわたって線虫の運動について話す場だった。線虫や動物の運動全般について何も知らず、生命シミュレーションにアマチュア的な関心があるだけの完全な門外漢だったので、ほとんど理解できなかった。
それでも本当に興味深く、このテーマに情熱を持つ人たちに会えたのはとてもよかった。
シミュレーションを終了したら、その線虫を殺したことになるのだろうか?
OpenWormの創設メンバーとして、ほぼ10年前にコネクトームをエミュレーションしてロボティクスに応用した。
https://youtu.be/YWQnzylhgHc
この実験では、各ニューロンを1つのプログラムとして表現し、個々のニューロンプログラム間の通信にはUDPメッセージを使った。いくつか問題があったが、最大の問題はコネクトームが非常に循環的で、その結果、実験で「UDPスタッキング」と呼んでいた現象が起きたことだった。つまり、活性化信号であるUDPメッセージが、プログラムが処理できる速度よりも速く流れ込んできた。
現在は、これまでに完成したDrosophilaコネクトームをダウンロードしてエミュレーションを作っている。ニューロンやニューロピルをエミュレートするためにハイパーベクターを探っているが、まだ概念を練っている段階だ。
隣接行列、関数型プログラミングなど、いろいろなアイデアも試した。各関数が動物神経系の一部を表す方式で、C. elegansなら感覚ニューロン、中間ニューロン、運動ニューロンを3つの別個の関数とプログラムとして見るようなものだ。
C. elegansエミュレーションは単一のPythonアプリとしても実装され、複数の他のプログラミング言語にも移植され、複数のロボット上で明確なエミュレーションを示した。切除実験は、エミュレートされた神経系が生物学的神経系と、観察可能な行動を通じて一致することを示した。
神経系の進化的連続体では、一方の端に線虫の脳があり、もう一方の端に人間の脳がある。しかし、線虫の神経系だけを見ても、汎用知能とAGIへ向かう入口ははっきり見えている。