技術約13分で読めます

ショウジョウバエ全脳LIFモデルをM1 Maxで動かしてみた

いけさん目次

前回の記事「ショウジョウバエ全脳コネクトームの公開とLLMとの違い」で扱った配線データを用い、Shiuらの全脳LIF(漏れ積分発火)モデル(Nature 2024)をM1 Max 64GBで動かしてみた。

糖の味覚ニューロンを刺激したときに口吻の運動ニューロンMN9まで興奮が伝わるか、13.9万ニューロンの回路をシミュレータBrian 2で1秒分計算したときの実行時間とメモリを実測した。さらに、中心複合体(CX)の実配線をマスクにした方位積分課題の重み学習も検証してみた。

検証環境

項目内容
マシンMacBook Pro M1 Max / RAM 64GB(CPU 10コア: 高性能8+高効率2)
OSmacOS(Darwin 27.0.0)
モデルphilshiu/Drosophila_brain_model(コミット 91bdd1e、2024年9月14日)
シミュレータBrian 2.10.1(Python 3.12 / Apple clang 21.0.0)

Shiuらの全脳LIFモデルの再現

モデルコードと接続データの内訳

モデル本体は philshiu/Drosophila_brain_model リポジトリの model.py を使用した。接続データはリポジトリ内に同梱されており、FlyWireのログインやCAVE(注釈基盤)認証トークンなしで利用できた。論文で使われたFlyWire v630と、公開版v783のデータが含まれている。

項目v630(論文)v783(公開版)
ニューロン数(completeness CSV)127,400138,639
接続ペア数(connectivity Parquet)14,687,17815,091,983
シナプス数(Connectivity列の合計)52,793,63954,492,922
興奮性の接続ペア8,800,5329,059,302
抑制性の接続ペア5,886,6466,032,681

前回の記事で触れた139,255ニューロン・約5,450万シナプスに対して、v783のモデル用CSVは138,639個となっている。Brian 2に指定するのは接続ペア単位(1ペアに重み1本)であり、約5,450万本のシナプスを個別に保持するわけではない。

シミュレーションの主なパラメータ(default_params)は以下のとおり。

  • 静止電位: -52mV、閾値: -45mV、膜時定数: 20ms、シナプス時定数: 5ms、不応期: 2.2ms、伝達遅延: 1.8ms
  • 1シナプスあたりの重み: 0.275mV(接続ごとの重みはシナプス数×興奮/抑制の符号×0.275mV)
  • 刺激入力: ポアソン入力(既定150Hz)

論文の environment.yml は Python 3.10 / brian2 2.5.1 / numpy 1.24 固定だったが、今回はuvを用いて Python 3.12 環境(brian2 2.10.1 / numpy 2.5.3 / pandas 3.0.5)を作り、XcodeのApple clang 21.0.0でコード生成を行った。

単一試行での動作確認とリソース実測

まずは runs/one_trial.py を用意し、配布ノートブック(example.ipynb)と同様に右半球の糖ニューロン21個を150Hzで刺激して1秒分シミュレーションした。測定項目は、実行時間、プロセスのピークメモリ、全スパイク数、発火ニューロン数、および口吻の運動ニューロンMN9の発火数(1秒間のためそのままHz)。

コード生成実行時間ピークメモリ全スパイク発火ニューロンMN9
v630Cython(初回コンパイル込み)36.9秒3.19GB13,21037579Hz
v630Cython(2回目以降)4.0秒2.94GB14,00539489Hz
v783Cython4.3秒2.90GB13,03036878Hz
v630NumPy11.3秒2.95GB13,79640377Hz

初回のCythonコンパイルには37秒を要したが、2回目以降はキャッシュが効いて1秒分の計算が約4秒で完了した。ポアソン入力による乱数刺激のため試行ごとにスパイク数は多少ばらつくが、MN9は77〜89Hzで活動し、糖刺激から口吻の運動ニューロンまで興奮が伝わった。13万ニューロンのうち発火したのは約400個で、ノートブックの記述と合致している。

なお、公開版v783では指定されていた糖ニューロン21個のうち1個(ID 720575940620900446)のIDが存在しなかった。FlyWireのIDは版によって更新されるため、v783の試行では20個で刺激している。

30試行の並列実行と直列実行の比較

続いて、論文で行われている30試行の実験(150Hz、1秒×30試行)を再現した。事前に結果保存用のディレクトリを作成した上で、全コア並列(joblib、n_proc=-1)と直列(n_proc=1)の双方で実行時間を比較した。

項目全コア並列(n_proc=-1)直列(n_proc=1)
実行時間23秒(1試行あたり約0.8秒)842秒(1試行あたり約28秒)
全スパイク数407,363405,957
発火したニューロン426個438個
MN9の発火率83.2Hz(標準偏差 4.2Hz)81.9Hz(標準偏差 5.2Hz)
最大RSS(物理メモリ合計)約28.2GB-

全コア並列では23秒で30試行が完了した。Pythonプロセスの最大RSS合計は約28.2GBで、64GBのRAMがあれば全コア並列でも安定して動作する。一方、直列実行では1試行あたり約28秒かかり、単一試行単独で回したとき(約4秒)の約7倍の時間を要した。同一プロセス内で試行ごとにネットワークを再構築するオーバーヘッドが蓄積したと考えられる。

先行研究における配線図と制御課題

全脳配線図をそのまま、あるいは固定マスクとして用いて自律行動やゲームプレイを行わせる研究動向を整理した。

  • FlyGM(arXiv 2602.17997、2026年2月): FlyWire v783全脳の重みを固定したGNN。flybody環境上の歩行・旋回・飛行を模倣学習およびPPOで学習した。次数を保存した再配線(リワイヤ)やランダムグラフ(ER)、MLPとの数値比較を行い、直進の角度誤差において本物の配線が有利な結果(FlyGM 4.96、リワイヤ 7.84、ER 12.11、MLP 6.76)を示している。
  • BPU(arXiv 2507.10951): 幼虫ショウジョウバエの全配線(約3,000ニューロン)を固定し、入出力層のみを学習した。MNISTで98%、CIFAR-10で58%を報告しているが、ランダム配線との比較は行われていない。
  • nfly: 成体ショウジョウバエ視覚系のレート型RNNでCartPoleやPongを学習させた実装。CartPoleでは3シード中1つしか学習が進まず、Pongでも高得点は得られていない。READMEにも実配線の優位性は未検証と記載されている。
  • その他の事例: 欧州宇宙機関(ESA)のFlyWire由来リザバーによる時系列予測や、三目並べを行うFLYT3などがある。

また、Therianosらの報告(arXiv 2606.17745)では、回路応答の大半は次数や重みの統計的性質で決まり、厳密な個別配線が寄与するのは一部にとどまると指摘されている。配線を固定してゲームや制御を解かせる試みにおいて、本物の配線がランダム配線に対して明確に優位性を示した査読・プレプリントの一次資料は、歩行制御を扱ったFlyGMなどに限られているのが現状である。

中心複合体の配線を用いた方位積分課題

固定配線によるリザバー計算と限界

全脳モデルの再現に続き、成体ショウジョウバエの方位コンパスを担う中心複合体(CX: Central Complex)の配線データを切り出し、角速度の積分課題を解かせられるか検証した。細胞型のアノテーションには flywire_annotations のデータを用いている。

モデル用データ(138,639個)のうち中心複合体に属するニューロンは2,875個あった。主な内訳は、方位角の表現を担うEPG(47個)とEPGt(4個)、角速度入力を受けるPEN(PEN_a 20個、PEN_b 22個)、PEG(20個)、Delta7(42個)、および視覚入力を受けるリング型ニューロン(EL/ER系 約300個)である。

まずはBrian 2のスパイクモデルではなく、PyTorchの誤差逆伝播(BPTT)で重みを学習できるよう、各ニューロンの発火率を扱う離散時間レートモデルで構成した。

x(1α)x+αtanh(Wx+Bω)x \leftarrow (1-\alpha)x + \alpha \tanh(W x + B \omega)

ここで WW は符号付きシナプス数行列で、最大固有値の絶対値(スペクトル半径)が gg になるよう正規化した。角速度 ω\omega(回転の向きと速度)はPENニューロンに対し、右半球側に +ω+\omega、左半球側に ω-\omega として入力した。ネットワークの重み WW は固定し、読み出し層のみをリッジ回帰で学習させるリザバー計算の構成とした。なお、角度そのものをスカラー値で出力させると 00^\circ360360^\circ の境界で誤差が不連続になるため、単位円上の (cosθ,sinθ)(\cos \theta, \sin \theta) を線形変換で推定している。

平滑なランダム回転と停止区間を混在させた系列(3万ステップ)を入力し、スペクトル半径 g{0.9,1.0,1.2}g \in \{0.9, 1.0, 1.2\} と入力強度 b{10,50,200}b \in \{10, 50, 200\} を振って本物の配線とランダム配線(ER)で比較した。

しかし全条件において平均誤差は74〜100°にとどまり、ランダム推定(円周上で均等に推測した場合の期待値90°)と大差ない結果となった。本物の配線は活動の平均絶対値が0.002〜0.010と小さく、活動が全体へ十分に伝播しなかった。角速度の累積積分のみを固定重みの反響に委ねる構成では、配線の優劣を比較する以前に課題そのものを保持できなかった。

視覚目印を追加した方位追従

実際のハエが視覚の目印を用いて定期的に方位のズレを補正している点に着目し、課題設定を変更した。50ステップの間だけ目印となる視覚入力を与え、その後の100〜800ステップを暗闇(目印なし・回転は継続)として、目印が消えてからの経過ステップごとの推定誤差を測定した。目印はリング型ニューロン(EL/ER系)へ担当角度 ϕ\phi に応じた入力を与えている。

EPGニューロンから方位を読み出したときの誤差(度)は以下のようになった。

配線gg活動平均絶対値目印中暗闇 0-50暗闇 50-100暗闇 100-200暗闇 200-400
再帰なし-0.012100°96°101°108°112°
本物の配線1.20.00713°25°110°98°93°
本物の配線4.00.14214°22°33°53°61°
本物の配線8.00.31620°30°72°86°82°
接続先シャッフル(シード0)1.20.15130°22°35°74°104°
接続先シャッフル(シード1)1.20.16127°31°39°55°64°
接続先シャッフル(シード2)1.20.20724°26°34°53°79°
符号シャッフル(シード0)2.00.12014°19°30°89°80°
符号シャッフル(シード1)2.00.09316°21°68°90°93°
符号シャッフル(シード2)2.00.15315°18°36°59°56°

同一の g=1.2g=1.2 では、本物の配線は活動が0.007とシャッフル条件の約20分の1にとどまり、50ステップを過ぎると方位の保持が急速に失われた。本物の配線に含まれる局所ループの強い固有値に合わせて全体を正規化した結果、大部分の結合が弱くなりすぎたと推測される。

活動の大きさを揃えた場合(本物 g=4g=4 で0.142、シャッフル g=1.2g=1.2 で約0.15)、暗闇50〜100ステップの誤差は本物が33°、シャッフルが34〜39°と同等であった。また課題の乱数シードを変えると同じ条件でも誤差が大きくばらつき、固定重みのリザバー計算の範囲では有意な差を見出せなかった。

配線マスクを用いた重み学習

固定行列による反響ではネットワークが課題に適応できないため、実在するシナプス接続のみを学習可能にする「配線マスク学習」へ移行した。

  • 接続マスク: 実在する結合のみ勾配を流し、強さを学習(softplus で正値を維持し、興奮/抑制の符号は固定)。
  • バイアス、PENへの角速度入力ゲイン、目印入力、およびEPGからの読み出し層も学習対象とした。
  • 学習手法: 時間方向の誤差逆伝播(BPTT)。1系列1,200ステップ、バッチサイズ16、Adam(学習率 3e-3)、勾配クリッピング1.0。損失関数は (cosθ,sinθ)(\cos \theta, \sin \theta) との平均二乗誤差。
  • 初期化: 各ニューロンへの入力絶対値合計で行ごとに正規化した。

MacBook Pro M1 Max上での1反復(2,875ニューロン・約30万接続)の所要時間を比較した。

実装方式1反復の所要時間備考
CPU / 疎行列(torch.sparse.mm約10秒スレッド並列化が効かず低速
CPU / 密行列約3.3秒-
MPS / 密行列約1.3秒PyTorch 2.14.0でCPUと損失推移が完全一致

このMPS密行列実装を用いて各条件500反復(1条件約7分半)を学習させた。

マスク条件接続数(重複合算後)最終損失目印中暗闇 0-50暗闇 50-100暗闇 100-200暗闇 200-400暗闇 400-800
本物の配線300,2340.39919°25°49°59°71°82°
接続先シャッフル287,6650.41018°29°52°63°75°87°
ERランダム配線294,8550.41218°29°51°66°94°88°

目印提示中は全条件で18〜19°まで方位を推定できた。しかし暗闇に入ると200ステップ以降は当てずっぽうの水準に戻り、通常のレートモデルでは500反復の学習を経ても長期の方位保持回路を形成できなかった。

暗闇での方位保持とニューロンモデルの制約

暗闇区間(目印なし)での方位保持性能を高めるため、学習条件を変更して検証した。

  • v1: 学習系列を1,200ステップとし、暗闇の最大長を学習の前半60%で200から1,200ステップへ徐々に延ばすカリキュラム学習(600反復)。
  • v2: v1に加えて、ニューロンごとの時定数(α\alpha、初期値0.2)も学習対象とした。時定数が大きい(α\alpha が小さい)ニューロンが形成されれば、情報を長く保持できる可能性がある。

あわせて、配線制約のない通常の全結合RNN(GRU 256ユニット、tanh RNN 256ユニット)も同一課題・反復数で比較した。

モデルパラメータ数学習時間最終損失目印中暗闇 0-50暗闇 50-100暗闇 100-200暗闇 200-400暗闇 400-800
本物配線マスク(標準)約30万7.5分0.39919°25°49°59°71°82°
本物配線マスク v1(カリキュラム)約30万17.7分0.41314°26°53°72°80°77°
本物配線マスク v2(時定数学習)約30万18.4分0.41813°28°51°67°79°76°
配線制約なし GRU 256200,9625.9分0.13212°16°27°38°52°55°
配線制約なし tanh RNN 25667,3303.5分0.46169°77°73°90°103°

系列長を延ばしてカリキュラムを導入しても、通常のレートモデルでは暗闇の誤差は改善しなかった。また時定数 α\alpha の学習後の中央値は0.20のままで、減衰の遅いニューロンはごく一部しか形成されなかった。

一方、全結合GRUは暗闇200〜400ステップでも52°まで誤差を抑制でき、課題そのものは再帰型モデルで学習可能であることが確認できた。これに対し全結合tanh RNNは暗闇に入ると即座に誤差が悪化し、本物配線マスクよりも低い精度となった。

このことから、ボトルネックは配線構造の制約ではなく、ゲートを持たない単純なレートモデルをBPTTで学習させたことによる勾配消失に起因していると考えられる。

ゲート付きニューロン(GRU型)による保持性能の比較

そこで、各ニューロンの更新式をGRU型に変更した。

z=σ(Wzx+bz+入力)z = \sigma(W_z x + b_z + \text{入力}) r=σ(Wrx+br)r = \sigma(W_r x + b_r) x(1z)x+ztanh(W(rx)+入力)x \leftarrow (1-z) \odot x + z \odot \tanh(W (r \odot x) + \text{入力})

重み行列 WW は実在結合マスク(符号固定・強さ学習)とし、更新ゲート WzW_z およびリセットゲート WrW_r も同一の配線マスク上にのみパラメータを配置した(符号は自由、初期値0)。接続先シャッフルおよびERランダム配線についても重複結合を整理し、3条件とも結合数を300,234本に揃えた。

各条件で3つの乱数シード(シード0, 1, 2)を実行し、暗闇区間ごとの平均誤差と標準偏差を算出した。

マスク条件目印中暗闇 0-50暗闇 50-100暗闇 100-200暗闇 200-400暗闇 400-800
本物の配線7.3±1.2°9.3±1.8°19.3±2.5°29.9±1.4°48.5±3.0°56.3±6.0°
接続先シャッフル6.6±0.9°15.4±0.8°37.8±2.0°54.2±1.4°74.1±2.2°72.6±3.4°
ERランダム配線6.7±0.5°17.9±0.8°41.7±1.6°57.8±2.2°74.2±5.7°82.2±11.0°

ゲート付きニューロンを採用したことで、配線マスクの制約下でも暗闇での方位保持が学習可能となった。

目印提示中はどの配線でも6〜7°と差が出なかったが、目印が消えた後の暗闇区間では、本物の配線がシャッフルおよびERに対して全区間で20°前後優れた精度を示した。この差はシード間の標準偏差の数倍に達しており、乱数のばらつき以上の有意な開きが生じている。また、入次数・出次数の分布を保持した接続先シャッフルとERの間に大きな差はなく、本物の配線固有のトポロジーが保持性能に寄与していることが確認できた。

EPGニューロンの方位同調解析

学習済みモデルにおいて、コンパス細胞であるEPGニューロンが実際に方位情報を表現しているかを解析した。目印が消えて100ステップ以降の区間において、各EPGの活動と真の方位との同調度(平均ベクトルのノルム、0〜1)を算出し、各EPGの最適方位で重み付けした集団ベクトルから方位を推定したときの誤差を評価した。

マスク条件シード暗闇の同調度(中央値)集団ベクトル誤差目印中の同調度
本物の配線10.4253°0.77
本物の配線20.4354°0.83
接続先シャッフル10.2965°0.71
接続先シャッフル20.2767°0.80
ERランダム配線10.2768°0.75
ERランダム配線20.2768°0.74

本物の配線では、暗闇に入った後もEPGニューロンの方位同調度(0.42〜0.43)が高く維持されていた。これに対し、シャッフルやERでは0.27〜0.29まで低下した。目印提示中の同調度はどの配線でも0.71〜0.83と同等であり、暗闇での内部表現の維持において本物の配線が機能していることが示された。

興奮・抑制符号のシャッフル比較

配線の結合パターン(どのニューロン同士がつながっているか)と、興奮性・抑制性の符号配置のどちらが効いているかを切り分けるため、実配線の接続関係を保ったまま符号のみをランダムに入れ替える「符号シャッフル」条件を追加した(3シード)。

マスク条件目印中暗闇 0-50暗闇 50-100暗闇 100-200暗闇 200-400暗闇 400-800
本物の配線7.3±1.2°9.3±1.8°19.3±2.5°29.9±1.4°48.5±3.0°56.3±6.0°
符号シャッフル6.2±0.3°10.5±1.4°23.8±2.4°36.2±3.2°55.0±3.0°62.3±4.3°
接続先シャッフル6.6±0.9°15.4±0.8°37.8±2.0°54.2±1.4°74.1±2.2°72.6±3.4°
ERランダム配線6.7±0.5°17.9±0.8°41.7±1.6°57.8±2.2°74.2±5.7°82.2±11.0°

符号を入れ替えた場合、暗闇50〜100ステップの誤差は本物配線に対して約4.5°悪化する程度にとどまった。一方、接続先を入れ替えたシャッフル条件では約18.5°悪化した。方位保持に大きく寄与しているのは主に結合トポロジーであり、符号の配置による影響はそれよりも小さいことが分かった。

実験結果の要点

  • Shiuらの全脳LIFモデルはM1 Max 64GB環境で問題なく動作した。1秒分の全脳シミュレーションが約4秒、論文の糖刺激30試行が23秒で完了し、運動ニューロンMN9への発火伝達を確認できた。
  • 固定結合のリザバー計算や単純なレートモデルでは、BPTTによる暗闇での方位保持を学習できず、配線構造の差を評価できなかった。
  • ニューロンモデルにGRU型のゲート機構を導入すると暗闇での保持が可能となり、本物の配線が接続先シャッフルやランダム配線に対して明確な精度差(暗闇50〜100ステップで本物19.3°対シャッフル37.8°)を示した。
  • 暗闇におけるEPGニューロンの方位同調度も本物の配線で高く維持され、符号の配置よりも結合トポロジー自体が保持性能に寄与していることが確認された。
  • なお、本検証は中心複合体(2,875ニューロン)を対象とし、人工的なGRUゲートを組み合わせた条件での実測値に基づいている。配線構造が生物学的な挙動や一般的な記憶課題に与える影響については、今後のさらなる検証が必要である。