言語 / Language: 日本語 · English
静止した検査に全部通ったモデルが、歩き出した瞬間に全滅した ―― ハエの視覚モデルを体に載せて測る
↑ まず動いているところから。物理シミュレータ上のショウジョウバエが、複眼に映る像だけを頼りに茶色の的へ歩いていきます(3 倍速、外から撮影)。舵を足しているのは、コネクトームで配線を固定した視葉モデルの出力。脚の運びは三脚歩容に見えますが、歩行は運動学で脚の力学で歩いているのではありません —— どこまでが実物でどこからが手書きかは、下の表で先に開示します。
↑ 何をさせようとしているのかの全体像。① 与えるのは複眼の像だけ(GPS も慣性センサも地図も無い)。② 歩きながら自分の回転を読ませ、その向きで的へ歩き、貯めた向きと距離で巣へ帰る。③ 採点は与えた回転との相関で、12 の場所のうち 2 か所(C・D)は選択にも調整にも一度も使わない。ゼロ点は 1956 年の教科書的な運動検出器。
TL;DR
-
学習済みの視覚モデル(ショウジョウバエの視葉、コネクトームで配線を固定したもの)を、物理シミュレータ上のハエの体に載せ、複眼 → 視葉 → 操舵を閉ループで回して測りました。その場で回して作った検査(単調性・対称性・遅れ)には全部通ったのに、歩きながら同じ量を読ませたら相関 0.06〜0.51 で全滅しました。 検査は「本番と同じ運動条件」で作らないと、通っても何も保証しません。
-
落ちた原因はモデルではなく世界でした。前進で生じる像の流れは距離に反比例し、回転で生じる流れは距離に依りません。目が床から 1.2 mm の高さにあると床が 330〜1000°/s で流れ、運動検出器の帯域を超えた雑音になります。地平線より上だけ読むと相関 0.98。ただし遠景に模様が無い世界では、どんな運動検出器も回転を読めません。脳を疑う前に刺激の統計を測る。
-
センサとして良い ≠ 行動が良くなる。 同じ推定を操舵に入れても、目標への到達は 12 本中 7 → 6 本(差は誤差の範囲)。手書きの固定行動が支配的でした。センサの忠実度と行動の成績は別々に測り、別々に書く必要があります。
-
進化で自由パラメータを動かすと、自由度が多いほど少データで般化が消えました。配線固定の 734 次元を 2 景色で進化させると訓練は +0.76 まで上がるのに未使用の場所は −0.35(進化前より悪い)。同じ課題を細胞型ごとの変調 260 次元に圧縮すると +0.70。景色を 10 に増やすと両者はほぼ並びます(0.916 対 0.914)。読み出し側を線形回帰で解いても同じ形が出ました(5768 重み対 80 重み)。
-
行動の成績が上がっても、生物らしさは壊れます。10 景色で般化した解でも、T4/T5 細胞の方向選択性は合格 3/8 → 1/8 に減りました。行動の目的関数だけでは、神経の性質は出てきません。
-
視覚から推定した角速度で**中枢複合体(リング・アトラクタ + 経路積分)を駆動すると巣に帰れますが、誤差の主因は利得のずれ(3.8 ポイント)ではなく相関 0.977 の残差ノイズ(12.4 ポイント)**でした。較正をどれだけ丁寧にやっても直りません。
-
目そのものも設計対象です。 複眼の光学(個眼間角 Δφ・受容角 Δρ・本数)を閉じた式の op で回すと、標本化の限界より細かい縞を入れたとき、受容角が細い眼は入力に無い粗い縞を作ることまで数字で出せます(予測 16.1° / 実測 16.2°、ハエの受容角なら振幅 223 分の 1)。§0 に図と数行のコードを置きました。
この記事は「ハエの脳を再現しました」という話ではありません。学習済みのモデルを自分の系に載せたとき、どこで嘘をつくかを数字で置く話です。同じ罠は、他人の学習済みモデルを自分のロボットやラインに載せるときにそのまま出ます。
実験の一覧(ここに足していきます)
1 実験 = 1 つの問いです。この記事は実験が終わるたびに追記します。表の「いまの答え」は、その時点の実測でひっくり返ることがあります(実際に 1 件ひっくり返って §8 に残してあります)。
| 問い | いまの答え | 節 |
|---|---|---|
| その場で回して作った検査は、歩行中の性能を予告するか | しない。相関 0.06〜0.51 で全滅 | §1 |
| 遠景に模様を入れれば歩きながら回転を読めるか | 読める。相関 0.98(帯なしは 0.06) | §2 |
| センサが良くなれば行動も良くなるか | 変わらない。到達 7 → 6 / 12 | §3 |
| コネクトームの配線は、性能として何ポイント分か | 0.14〜0.20。前処理だけで 0.6 → 0.8 | §4 |
| 自由パラメータ 734 を進化させると般化するか | 2 景色は過適合(−0.25)、10 景色で般化(+0.92) | §5 |
| 細胞型ごと 260 次元に圧縮すると | 少データで勝ち(+0.71)、多データで同等(+0.91) | §5 |
| 読み出しを回帰で解くと | 同じ形。80 重み ≫ 5768 重み | §5 |
| 行動が良くなれば生物らしさも出るか | 逆。方向選択性 3/8 → 1/8。学習前は 0/8 | §6 |
| 視覚推定で中枢複合体を駆動すると帰巣できるか | できる。初版の数字は較正忘れで撤回(§8 の 2 件目)。較正後: 視覚推定そのままで 2.1 %、振幅補正はむしろ悪化 12.4 % | §7 → 追記 |
| 減速を入れると記憶の更新と干渉するか | しない。干渉に見えた 2 つは別物 —— コンパスの利得誤差 10.8 % と、操舵も速度も | H |
| 目を肥大化させると壊れるか | 壊れない(最初の結論は撤回) | §8 |
| 配線をシャッフルすると性能は落ちるか | 測れない。シャッフル同士の差のほうが 3 倍大きい | 追記 |
| 課題を段階的に与えれば方向選択性は出るか | 出る(0/8 → 5/8)。ただし最後の行動課題が壊す(→ 1/8) | 追記 |
| 遮断は光の流れの順に効くか | 効かない。受容器 6 型を全部止めても 0.869 残るのに、髄質 Mi1 を 1 型止めると 0.031(11.5 倍) | 追記 |
| 11 体を束ねると最良の 1 体に勝つか | 勝つ。ただし後知恵で選んだ最良の 1 体(0.9766)とほぼ同じ —— 利得は選択の失敗を埋めた分 | 追記 |
用語(先に読むと楽)
- コネクトーム —— 神経細胞どうしのつなぎ方の地図。電子顕微鏡の連続切片から再構築します。ショウジョウバエは全脳規模で公開されており、「どの型がどの型に何本つながっているか」が既知です。
- コネクトーム拘束モデル —— 配線(誰と誰がつながり、興奮性か抑制性か)を実測のコネクトームで固定し、残りの連続値(細胞ごとのバイアス・時定数・シナプス強度)だけを学習で決めたモデル。ここでは視葉(optic lobe)のモデル flyvis(Lappalainen et al. 2024)を使っています。自由パラメータは 734 個。
- 個眼(ommatidium) —— 複眼を構成する 1 本の筒。ここでは 721 本、視軸の間隔 Δφ = 4.63°、受容野の幅 Δρ = 8.23°(ガウス)。
- T4 / T5 —— ハエの運動検出の主役。T4 が明るくなる縁、T5 が暗くなる縁を担当し、それぞれ 4 方向(a/b/c/d)に分かれます。
- DSI(方向選択性指数) —— 好む向きと反対向きの応答差を正規化した値。「その細胞が本当に向きを見分けているか」の指標で、ここでは 0.3 以上を合格としました。
- EMD(基本運動検出器) —— Hassenstein と Reichardt が 1956 年に出した教科書的な運動検出の式。隣り合う 2 画素の片方を遅らせて掛け算する、それだけの構造。比較のゼロ点として使います。
- 自己回転(ヨー角速度) —— 自分がどれだけの速さで向きを変えているか。視覚だけからこれを読むのが本記事の主課題です。
- ホールドアウト —— 選択にも調整にも一度も使わない条件。ここでは 12 個の「場所」(背景の配置が違う世界)のうち 2 つ(C・D)を最後まで見ずに残しました。
- 経路積分 —— 自分の向きと速さを積算して「巣はどっちにどれだけ」を保持するしくみ。昆虫では中枢複合体(central complex)が担います。
- ゲノム的ボトルネック —— 脳の配線の詳細はゲノムに収まらないので、遺伝子が持てるのは「細胞の種類ごとの規則」程度である、という制約(Zador 2019)。本記事の後半の主題です。
何が実物で、どこからが手書きか
最初にここを書きます。これを曖昧にしたまま数字を並べると、読む側は「ハエの脳がやった」と受け取ってしまうからです。
| 部分 | 中身 | 出どころ |
|---|---|---|
| 体 | ショウジョウバエの全身モデル(質量 0.98 mg、cm/g/s 単位系)を物理シミュレータ上で動かす | 公開モデル(flybody) |
| 歩行 | 脚の接地パターンは運動学。脚の力学で歩いているのではない | 手書き |
| 目 | 体の目カメラ 3 台 → 六角格子の個眼 721 本に重み付きで写す(斜め方向の 1.118 倍の歪みも再現) | 手書き(幾何は公開モデルに合わせた) |
| 視葉 | 65 種の細胞型・配線固定・自由パラメータ 734 の学習済みネットワーク | 公開モデル(flyvis) |
| 読み出し | 「地平線より上で、好む向き − 反対向き ÷ 和」という 1 本の式 | 手書き(パラメータ 0 個) |
| 行動 | 「空より暗いものを正面に捉える」固定行動 + 視運動の帰還 + 遠心性コピー | 手書き |
| 世界 | 床・空・的・囮。的は糞の代わりに結び目の陰関数(knot_sdf、どの向きから見ても輪郭が変わる有機的な形)、囮は歯車(gear_sdf)と格子球(gyroid_sphere_sdf)。空の模様は合成 |
手書き |
↑ 信号の流れと「実物 / 手書き」の境目。青い箱だけが実測のコネクトームで配線が決まっている部分(視葉 flyvis、65 細胞型、光の流れ順に 受容器 R1–R6 → ラミナ L1/L2/L3 → 髄質 ON Mi1・Tm3 / OFF Tm1・Tm2・Tm4・Tm9 / 修飾 Mi4・Mi9 → T4a–d(ON)→ T5a–d(OFF))。橙の箱は全部こちらで書いたもの。進化で動かすのは青い箱の中の連続値だけで、結線は 1 本も足しません。
↑ その視葉の中身を立体で回したもの。721 の列が同じ並びのまま 7 段を貫いているのが「柱」構造で、段ごとに色を変えてあります(受容器 → ラミナ → 髄質の ON / OFF / 修飾 → T4 = ON の方向選択 → T5 = OFF の方向選択)。列の位置は実際の六角格子ですが、段の奥行きは模式です —— flyvis は「列 × 細胞型」のネットワークで、解剖学的な 3 次元座標は持ちません。後半で「細胞型ごとに自由度を畳む」と言っているのは、この色の単位でまとめる、という意味です。
では、その「実測の配線」とは具体的に何なのか。配線そのものを描いてみます。
↑ 左が実測のコネクトーム(fib25-fib19、65 細胞型・605 本の型間結線)。節が細胞型で、光の入る順に層へ置いてあります。青が興奮、赤が抑制、線の太さは受け手 1 個あたりのシナプス数です。右は次数保存シャッフル —— 各型の出次数・入次数・符号をすべて保ったまま、受け手だけ入れ替えたもの。本数も次数も同じですが、層をまたぐ向きの内訳が変わります: 層内の結線が 179 → 99 本に減り、後ろ向き(光と逆方向)が 148 → 208 本に増える。
右の図で赤い線(抑制)が層を無視して飛び交っているのが、あとで出てくる「配線をシャッフルした対照群」で実際に壊したものです。同じ本数・同じ次数でも、層構造は保存されません。
つまり視葉だけが本物のコネクトーム由来で、その前後(目の幾何・読み出し・行動)は全部こちらで書いています。以下の数字は「視葉の入口と出口をこう繋いだとき」の話です。
なお、ハエの中枢神経系は頭の中だけではありません。胸部には腹側神経索(VNC)という約 23,000 ニューロンの構造があり、歩行のパターン生成はそこにあります(脳から VNC への下行ニューロンは 1,328 本)。頭を切り離したハエが歩けることは 1997 年に報告されています。この記事で「歩行は運動学」と書いているのは、本来 VNC が作るものを手書きで代用しているという意味です。脳 + VNC を含むコネクトーム(BANC、MaleCNS)は 2026 年に公開されたので、ここは将来もっと本物に寄せられます。
0. 目そのものを設計する —— 複眼の光学を、閉じた式の op で回す
上の表で「目」は手書きに分類されています。その手書きの中身を先に開きます。複眼は設計対象で、ノブは 3 つしかありません。
- Δφ(個眼間角) —— 視軸を何度おきに並べるか。標本化の細かさ。
- Δρ(受容角) —— 1 本の個眼がどれだけ広い角度を受けるか(ガウスの半値全幅)。にじみの幅。
- 半径 —— 何本並べるか(n = 3R(R+1)+1、R=15 で 721 本)。
この 3 つを決めると、何が見えて何が見えなくなるかが式で決まります。自作のビジョンライブラリ Fullseye の flyvision 族はこの経路を閉じた式の op にしてあるので、設計を変えて測り直すのは数行です。
import flyvision as fv
lat = fv.fly_hex_lattice(radius=15, dphi_deg=4.63, geometry="boxeye") # 721 本の視軸
sky = fv.fly_sky_1f(width=1440, height=720, amp=0.45, seed=7) # 1/f の空(合成)
sig = fv.fly_hex_resample(img, lat, drho_deg=8.23, fov_deg=110) # 眼が見た 721 個の値
↑ すべて op を実際に回した実測で、模式図はひとつもありません。A 721 本の視軸(右上は中心 ±12° の拡大で、橙が受容野の広がり)。公開モデルの画素格子に合わせると斜め方向が 1.118 倍に歪み、その歪みも再現しています。B 隣とどれだけ重ねるか。ハエの比 Δρ/Δφ = 1.78 だと、総感度のむらは 0.0052 % —— 視野に穴もこぶも出ません。C 受容角を決めると何が見えなくなるか。線が閉じた式 exp(−π²Δρ²/(4 ln2 λ²))、点が op の実測で、ずれは最大 0.0017。D 標本化の限界(λ = 2Δφ = 9.26°)より細かい縞を入れるとどうなるか。
D がこの節のいちばんの見どころです。入力は λ = 6.5° の細かい縞(D1)。受容角を 2° まで細くすると、個眼の列には入力に存在しない粗いうねりが現れます(D2 の赤)。これが折り返し(エイリアシング)で、その波長は予測できます —— λ = 1/|1/6.5 − 1/4.63| = 16.1°。実測は 16.2°(D3)。ハエの受容角 8.23° で同じ縞を見ると、偽の縞の振幅は 223 分の 1(0.357 → 0.0016)に落ちます。
つまり Δρ/Δφ ≈ 1.8 は「ぼけている」のではなく、標本化の限界に合わせて偽の信号を消しにいった設計です。細くすれば解像度が上がるように見えて、実際には無い模様を作ります。太くすれば消えますが、今度は本物の模様も溶けます(C の桃色の曲線)。
この節を先に置いたのは、後で「脳が読めなかった」と言う前に、目が何を落としたのかを知っておく必要があるからです(§2 で実際にそれが効きます)。そして式はハエ専用ではありません。Δφ と Δρ を変えれば、蜂でも蟻でも同じ道具で設計して測れます。
ここからは実測ではなく期待として書きます。イベントベースカメラ(明るさの変化だけを画素ごとに非同期で出す撮像素子)は、ハエの視覚前段が最初にやること —— DC を落として変化だけを送る(ラミナの L1/L2 の帯域通過。Fullseye の PoC で測ると、この一段を省くだけで自己回転の相関が 0.785 → 0.504 に落ちます —— 相関器が「DC × 高域通過」の揺れを出し、それが運動の平均応答の 10 倍になるため)—— を素子で実装したもの、と読めます。だとすれば次に来てほしいのは、そのさらに手前、光学の側です。個眼間角と受容角を設計値として持ち、折り返しを素子の段階で殺してから変化を送る撮像素子。いまのイベントカメラは正方格子で、受容角は光学系の付け足しですが、六角格子と Δρ/Δφ ≈ 1.8 を最初から持つ素子ができれば、§0 の D で見た「無い模様を作る」問題は後段の処理を一切使わずに消えます。ハエは 5 億年前からその設計を使っています。こういう道具が出てきたら、この記事の測り方はそのまま実機に移せます。
1. 静止した検査に全部通ったのに、歩くと落ちた
最初にやったのは、ハエをその場で回して視葉の出力を較正することでした。作った検査は 3 つ:
- 単調性 —— 回転を速くすると出力も単調に増えるか
- 対称性 —— 左右で原点対称か
- 遅れ —— 立ち上がりの遅れが生理的な範囲か
結果は全部合格でした。出力は ±2 rad/s まで単調で原点対称、遅れ(63 % 到達)は 0.11 秒。場所を変えても利得の差は正規化後 ±35 % に収まりました。ここで「使える」と判断しかけました。
ところが歩きながら同じ量を読ませると、全ての読み出し候補で相関が 0.06〜0.51 になりました。全滅です。 その場回転で通った 3 つの検査は、歩行中の性能を一切予告していませんでした。
理由は後で分かりますが、教訓の形はここで確定します。
検査は、事故が起きる場所に立てる。 静止した刺激で作った合否は、運動中の性能について何も言っていない。
これはハエに限りません。データセット上の精度が良いモデルを自分のロボットに載せて、実際の運動が混ざった瞬間に落ちるのは、同じ形です。
2. 脳を疑う前に、世界を測る
落ちたとき、最初に疑ったのはモデルでした。「学習済みの重みがこの体に合っていないのでは」「読み出しの式が悪いのでは」。どちらも外れです。
原因は刺激の統計でした。像の流れは 2 つの成分に分かれます。
- 回転で生じる流れ = 角速度そのもの。距離に依らない。
- 前進で生じる流れ = 速度 ÷ 距離。近いものほど速い。
ハエの目は床から 1.2 mm の高さにあります。歩行速度 2.8 cm/s でも、足元の床は 330〜1000°/s で流れます。T4/T5 が読める帯域を大きく超えており、回転の信号はこの雑音に埋もれます。
対策は 1 行でした。地平線より上だけを読む。 遠景の流れは距離が大きいので前進成分が消え、回転成分だけが残ります。これで歩行中の自己回転推定は 相関 0.98 になりました。
↑ 選択に一度も使っていない場所 C での、歩行中の自己回転推定。黒が与えた回転、赤が視葉の T4/T5 から読み出した推定。相関 0.98、偏り +0.022 rad/s。ただし振幅は真値の 6 割ほどに小さく出ている(後述)。
ただし、ここにもう 1 つの落とし穴があります。遠景だけを読むようにしても、遠景に模様が無ければ何も読めません。最初の世界は空が単色のグラデーションだったので、地平線より上はほぼ一様で、流れの手がかりがゼロでした。仰角 20〜60° に雲の帯(方位方向に 1/f、振幅 0.12)を入れて初めて 0.98 が出ます。帯なしでは 0.06 でした。
↑ そのときハエの複眼(個眼 721 個、視軸の間隔 4.63°)に映っている世界。左が個眼ごとの輝度、右が「地平線より上で暗いもの」の顕著さ。空の帯があるかないかで、回転の読み取りが 0.06 から 0.98 に変わる。
世界の欠陥は、脳の欠陥に見える。 モデルの性能を測る前に、刺激の側に手がかりが存在するかを測る。
正直に書くと、この「空に模様を足す」は都合の良い改変にも見えます。実際の屋外には雲・樹冠・地形の輪郭があり、ハエが飛ぶ環境で遠景が完全に一様であることの方が珍しい、というのが根拠です。とはいえ「模様の量」を自分で決めている以上、0.98 は世界の設定込みの数字であって、モデル単体の性能ではありません。
3. センサとして働くことと、行動が良くなることは別
自己回転が読めるようになったので、次はそれを操舵に入れました。3 条件で 12 本ずつ歩かせています。
- 固定だけ —— 「空より暗いものを正面に捉える」手書きの行動のみ
- + 視運動 —— 視覚から推定した回転を打ち消す向きに舵を足す
- + 遠心性コピー —— 自分で出した旋回指令の分を推定から差し引いてから舵を足す
↑ 12 本の軌跡。中央の色付きの円が目標、灰色が囮(歯車・格子球)。左から、固定だけ / + 視運動 / + 遠心性コピー。到達は 7 / 6 / 6 本。
(この 3 条件のうち「+ 遠心性コピー」が実際に動いているところが、冒頭の GIF です。茶色の的に寄っていく動きそのものは手書きの固定行動で、視葉が足しているのは舵の微調整だけ、というのがこの節の話です。)
結果は 7 / 6 / 6 本。外乱を 3 倍にすると 7 / 4 / 6 本 で、遠心性コピーの無い帰還は悪化しました(自分の旋回を外乱と誤認して打ち消し合うため)。
つまり、相関 0.98 のセンサを足しても、この課題では行動がまったく良くなりません。固定行動が支配的で、視運動は冗長でした。
センサの忠実度と行動の成績を別々に測り、別々に報告する。 片方が良いことは、もう片方について何も言わない。
これは目的関数の設計に直接効きます。「行動が良くなること」を目的にすると手書きの部分が勝ってしまい、モデルはほとんど動きません。「センサの精度」を目的にすると、次節のように過適合します。
4. 配線の取り分はいくらか ―― 教科書の式と同じ土俵で比べる
コネクトーム拘束モデルの売りは「実測の配線を使っていること」です。ではその配線は、性能として何ポイント分なのか。これを測るには、同じ刺激・同じ読み出しで、配線を使わない古典的な運動検出器と比べる必要があります。
比較相手は 1956 年の EMD(隣接 2 画素、片方を遅らせて掛ける)。実装は自作の画像処理ライブラリの op を使い、パラメータ(時定数・高域通過の時定数)は訓練側の場所だけで選んで、C・D は見ずに残しました。
| 運動検出器 | A | B | C(未使用) | D(未使用) |
|---|---|---|---|---|
| EMD・生の輝度(τ 0.05 s) | 0.45 | 0.57 | 0.62 | 0.77 |
| EMD + 高域通過(τ 0.1 s、τ_hp 0.2 s) | 0.79 | 0.88 | 0.84 | 0.78 |
| flyvis(コネクトーム拘束・学習済み) | 0.90 | 0.94 | 0.98 | 0.98 |
読み取れることは 2 つあります。
- 前処理だけで大半が埋まる。 網膜の次の層(ラミナ)に相当する高域通過を足すだけで、EMD は 0.6 台から 0.8 台に上がりました。「コネクトームだから読める」のではなく、まず明るさの緩やかな成分を落とすことが効いています。
- 残り 0.14〜0.20 が配線の取り分。 ON/OFF 経路の分離・正規化・空間統合といった、コネクトーム由来の構造がここを稼いでいます。ゼロではないが、桁で違うわけでもない。
この「取り分」の数字は、学習済みモデルを採用するかどうかの判断に直接使えます。0.84 で足りる用途なら、10 行の EMD で済みます。
5. 自由度を増やすほど、少データでの般化は消える
ここからが本題です。配線は固定したまま、自由パラメータだけを進化させたら何が起きるか。
設定: CMA-ES で 1500 回評価、探索幅 σ0 = 0.1、目的関数は「訓練場所での歩行中の自己回転推定の相関」。ホールドアウト C・D は選択に一切使いません。
↑ 訓練 2 場所での進化。左が訓練の推移、中央が進化前後のホールドアウト成績、右が事前学習の重みからどれだけ動いたか。開始点 007 は訓練が上がる一方でホールドアウトが負に落ち、開始点 000・001 は 1 歩も動かなかった(距離 0)。
起きたことは 2 つです。
- 良い開始点は動かない。 すでに汎化していた個体(000・001)からは、1500 回評価しても事前学習の点より良い解が出ませんでした。移動距離はぴったり 0。強い局所最適です。探索幅を 0.2 に上げると今度は壊れました(平均 0.13)。
- 悪い開始点は過適合する。 開始点 007 は訓練が −0.37 / +0.31 から +0.76 / +0.49 に上がる一方、ホールドアウトは +0.27 / −0.30 → −0.35 / −0.14。進化前より悪くなりました。景色の特徴を覚えただけです。
では、どうすれば般化するのか。試したレバーは 2 つあります。
レバー A: 環境を増やす。 訓練場所を 2 から 10 に増やすと、同じ 734 次元の進化でホールドアウトが C 0.887 / D 0.944 に届きました。過適合は消えます。素直な結論です。
レバー B: 自由度を圧縮する。 こちらが面白い方です。734 個の自由パラメータは「シナプス 1 本ごと」に付いています。しかし生物のゲノムは、シナプス 1 本ごとの値を持てません(Zador 2019 のゲノム的ボトルネック)。持てるのはせいぜい「細胞の種類ごとの規則」です。
そこで、進化させる変数を次の 260 次元に畳みました。
- 細胞型ごとのバイアス(65)
- 細胞型ごとの時定数の対数(65)
- 送り手の細胞型ごとのシナプス利得(65)
- 受け手の細胞型ごとのシナプス利得(65)
個々のシナプス強度は「送り手の利得 × 受け手の利得 × 事前学習値」で決まります。新しい結線は 1 本も作りません(作ろうとしたら止まるようにしてあります)。
↑ 左が進化(脳のパラメータを動かす)、右が読み出し(脳は固定して線形の重みを解く)。どちらも縦軸は「選択に一度も使っていない場所 C・D での相関の平均」。赤が訓練 2 場所、青が訓練 10 場所。
数字で書くと:
| 自由度 | 訓練 2 場所 | 訓練 10 場所 |
|---|---|---|
| フリー 734 次元(シナプスごと) | −0.25 | +0.92 |
| ボトルネック 260 次元(細胞型ごと) | +0.71 | +0.91 |
2 つの勝ちがあります。
- 少データで勝つ。 同じ 2 景色・同じ開始点・同じ評価回数で、フリーは過適合して負に落ち、ボトルネックは +0.71 に般化しました。自由度を 1/3 に削ったのに、成績は逆転します。
- 多データで同等。 10 景色ではフリー 0.916、ボトルネック 0.914。1/3 の自由度で同じ般化に届きます。
同じ形は、脳を一切触らずに読み出し側を解いたときにも出ました(図の右半分)。T4/T5 の活動から自己回転を線形回帰で解く実験です。
| 読み出し | 訓練 2 場所 | 訓練 10 場所 |
|---|---|---|
| 手書き(パラメータ 0) | +0.98 | +0.98 |
| 構造化(細胞型 × 仰角帯 = 80 重み) | +0.96 | +0.98 |
| 自由(細胞型 × 列 = 5768 重み) | −0.03 | +0.83 |
5768 重みは 2 景色で完全に景色を覚え(ホールドアウト C 0.13 / D −0.19)、10 景色でもまだ D が 0.72 で追いつきません。一方、仰角の帯ごとにまとめただけの 80 重みは 2 景色でも 0.96。そして解析解の重みを開いてみると、手書きの式の構造をそのまま再発見していました —— T4a が負・T4b が正、雲の帯に当たる仰角帯 6〜8 に集中、下半分はほぼ 0。
帰納バイアスは少データで勝ち、多データでは損をしない。 自由度を削る場所を「構造の単位」(細胞型、仰角帯)に合わせると、削った分がそのまま般化になる。
正直な注釈をいくつか。(a) 手書きの読み出しがすでに 0.98 なので、この課題では数理最適化に価値がありません。価値があったのは「手書きが最適に近いことの確認」と「重みを開いて構造を読めたこと」です。(b) ボトルネックの 260 次元という切り方は生物学から演繹したものではなく、「細胞型ごと」という粒度を選んだ設計判断です。(c) 2 場所条件はフリー側が特に不利な開始点(007)から始めています。開始点を変えれば差の大きさは変わります。
6. 行動が良くなっても、生物らしさは壊れる
もう 1 つ、進化のたびに測っていたものがあります。**T4/T5 細胞の方向選択性(DSI)**です。動く縁を 6 通りの速さで見せ、好む向きと反対向きの応答差を測ります。
- 2 景色で過適合した解: 合格 3/8 → 2/8。T4a は 0.59 → 0.00(方向選択性が消えた)
- 10 景色で般化した解: 訓練も保留も上がったのに、合格 3/8 → 1/8
- もともと汎化していた個体をさらに進化させた場合: 合格 7/8 → 4/8
行動の成績と生物学的リアリズムが、はっきり分離しました。 自己回転を読むという 1 つの課題だけでは、T4/T5 が向きを見分ける必要がありません。実際、T5(暗い縁の検出)がほとんど無選択な個体でも、自己回転の推定は 0.96 出ます。その課題では T5 は冗長なのです。
ついでに、学習前(配線だけ、パラメータは初期分布)のモデルも測りました。方向選択性は 0/8、自己回転推定はほぼ 0(乱数の種を変えても同じ)。配線は機能そのものを与えず、学習の足場を与えている、という形です。
単一の課題で進化させると、その課題に不要な性質は必ず削られる。 生物らしさを残したいなら、それを必要とする課題を目的関数に混ぜる(識別課題の段階列など)。
7. 見る → 向く → 動く を閉じる
最後に、視覚の推定を航法に繋ぎました。昆虫の中枢複合体には、向きを表す「リング・アトラクタ」(バンプが円環上を動く)と、巣の方向と距離を貯める「経路積分」があります。閉形式の検証つきで実装し(位相誤差の上限、閉路の残差、帰路の距離の単調性を全部検査)、そこに flyvis の推定角速度を差しました。
訂正(2026-09-15): この節の数字(7.4 / 23.5 / 19.8 %)、「誤差の内訳」、「7.4 % は周回のせい」は撤回しました。リング・アトラクタを較正せずに使っていました(§8 の 2 件目)。較正後の数字と減速の実験は追記「減速つきの帰巣」にあります。本文と図は初版のまま残します。
↑ 初版の図(較正忘れ)。左が真値のコンパス(視覚誤差ゼロ)、中央が視覚推定をそのまま使った場合、右が歩行で較正して振幅だけ補正した場合。灰色が往路、色付きが帰路、星が巣。
- 真値コンパス: 帰巣誤差 7.4 %(往路 28.8 cm に対する最接近距離)
- 視覚推定そのまま: 23.5 %(帰れない)
- 振幅を較正: 19.8 %
視覚推定は真値の 0.63 倍の振幅しか持たないので、素直に考えれば「利得を 1.54 倍すれば直る」はずです。ところが較正しても 19.8 % までしか戻りません。誤差を分解すると:
- 振幅のずれによる分: 3.8 ポイント
- 相関 0.977 の残差ノイズによる分: 12.4 ポイント
残差が主因で、その比は 3.4 倍。 経路積分は誤差を積算するので、瞬時の相関が 0.977 でも、数秒積めば効いてきます。つまり次に効くレバーは較正ではなく、読み出しの相関そのものを上げることです。これで前節までの進化の話と航法の話が 1 本の線で繋がりました ―― 相関を 0.977 から上げる手段(環境多様性、自由度の圧縮、課題の段階列)は、そのまま帰巣の精度になります。
なお真値コンパスでも 7.4 % 残るのは、前進速度を一定にしているからです(巣の上で周回する)。昆虫は巣に近づくと減速します。減速を入れると記憶の更新と干渉するので、別の実験が要ります。
8. 撤回した話
1 つ、間違えて、撤回した結論があります。
目を肥大化させる実験(個眼を 721 → 1951 本に増やし、同じ学習済み重みを載せる)で、最初はこう書きました ――「個眼を増やしたのに受容野の幅を据え置くと性能が崩れる。光学の共適応が必要だ」。もっともらしい話です。実際、数字も崩れていました(相関 −0.11 〜 0.45)。
原因は光学ではありませんでした。同じプロセスの中で 2 つ目に作った目の像が壊れる、道具の不具合でした。列ごとの分散がほぼ 0 になり、比較用の EMD が nan を返していたのが手がかりです。別のプロセスで作り直すと、据え置きでも正常(0.96〜0.99)でした。
確定した結論はこうです。目の肥大化は再学習なしでも壊れず、少し上がって飽和する(0.98 → 0.98〜0.99)。萎縮(331 本)は落ちる。受容野の共適応はこの範囲では効かない。
驚く結果が出たら、物理で説明する前に道具の順序効果を疑う。 同じプロセスで 2 つ目に作ったもの、2 回目に呼んだ関数、キャッシュが効いた 2 回目 ―― 単独で再現してから解釈する。
2 件目(2026-09-15)。 §7 の帰巣の数字(真値 7.4 % / 視覚推定 23.5 % / 振幅補正 19.8 %)と、そこから引いた「誤差の内訳は振幅 3.8 pt + 残差 12.4 pt」「7.4 % は定速で周回するため」を撤回します。リング・アトラクタを較正せずに使っていて、バンプが角速度より 10.8 % 速く回っていました。較正後は 1.7 % / 2.1 % / 12.4 % —— 視覚推定はそのままで帰れ、振幅補正はむしろ悪化します(追記「減速つきの帰巣」)。「律速は相関の残差」という向きは残りましたが、それを支えていた数字は全部差し替えです。見つかったのは減速の実験で、減速しても止まる場所が 9 cm ずれるのを「干渉」と読みかけて、原因を追ったら較正でした。
部品を較正したかは、部品の側でなく使う側で確かめる。 較正関数があることと、その経路で呼ばれていることは別。§7 は「較正できる部品」を較正せずに使っていた。
持ち帰れる規則
書き手を消しても残る形に畳むと、6 つです。
- 検査は事故の起きる場所に立てる。 静止した刺激の合否は、運動中の性能を予告しない。
- 脳を疑う前に世界を測る。 手がかりが刺激に存在しないなら、どんなモデルも読めない。性能の数字は世界の設定込みである。
- センサの忠実度と行動の成績を分けて報告する。 片方が良いことは、もう片方について何も言わない。
- 自由度は「構造の単位」で削る。 細胞型ごと・仰角帯ごとに畳んだ変数は、少データで勝ち、多データで損をしない。削る場所が構造と合っていることが条件。
- 単一の課題で最適化すると、その課題に不要な性質は必ず消える。 残したい性質があるなら、それを必要とする課題を混ぜる。
- 驚く結果は、物理の前に道具の順序効果を疑う。
どれもハエに固有ではありません。他人の学習済みモデルを自分の系に載せる作業には、そのまま出てきます。
測っていないこと・限界
- 歩行は運動学です。脚の力学で歩いているのではないので、床反力や滑りに由来する像の揺れは入っていません。
- 視葉より下(LC 細胞・下行路・運動指令)は全部手書きです。「ハエの脳が操舵した」とは言えません。
- 細胞型を段階的に黙らせる実験では、応答が完全にゼロでも指標が 0.0 になります(「選択性を失った」と「そもそも応答が無い」が区別できない)。型ごとの応答の大きさを別に確認する必要があり、これは未了です。
- 進化は開始点 007(汎化していない個体)を中心に回しています。開始点を変えれば差の大きさは変わります。
- コネクトームで固定しているのは視葉の配線だけで、ハエの全脳ではありません。
- 学習済み個体 50 体を選別したところ、8 型すべてで方向選択性が出る個体は上位 10 体の中に 0 体でした(1 体だけ 7 型)。2 体は T4 の向きが丸ごと 180° 逆です。「このモデルは方向選択性を再現する」は個体差が大きく、使う前に検査で選ぶ必要があります。
使った公開モデルと、下敷きにした論文
- flyvis —— コネクトーム拘束の視葉モデル(Lappalainen et al., 2024)。配線・シナプス数・符号を実測から固定し、連続値だけを課題学習で決めたネットワーク。本記事の「視葉」はこれです。
- flybody —— ショウジョウバエの全身物理モデル(Vaxenburg et al., 2025)。体・関節・目カメラを提供します。
- Hassenstein & Reichardt (1956) —— 基本運動検出器(EMD)。比較のゼロ点。
- Stone et al. (2017) —— 解剖学的制約つきの経路積分モデル(ハチの中枢複合体)。第 7 節の経路積分はこの構造に倣っています。
- Zador (2019) —— ゲノム的ボトルネック。第 5 節の「細胞型ごとに畳む」の根拠。
この PoC は Fullseye の何を使い、何を Fullseye に返したか
視覚の前段は、自作のビジョンライブラリ Fullseye の flyvision 族(8 op)で組んであります。どれも閉じた式で、真値つきの検査が付いています:
| op | 役割 | 本記事での出番 |
|---|---|---|
fly_hex_lattice |
六角格子の視軸(n = 3R(R+1)+1) | §0 の A、複眼の幾何 |
fly_hex_resample |
ガウス受容野で像を個眼に落とす | §0 の C・D(MTF と折り返し) |
fly_sky_1f |
1/f の帯を持つ合成の空 | §2 の「遠景の模様」 |
fly_emd_response |
Hassenstein–Reichardt 相関器 | §4 のゼロ点 |
fly_hs_readout |
広視野の対向和(HS 型) | 読み出しの形 |
fly_dsi |
方向選択性指数 | §6 の 8 型の検査 |
fly_lgmd_eta / fly_tau_from_expansion
|
衝突検出(η と余裕時間 τ) | 本記事では未使用(同じ眼から測れる) |
Fullseye に返したものは 2 つです。(1) 評価台: 運動検出器を差し替えても刺激・読み出し・採点が同じままになるので、§4 の「コネクトーム拘束モデルは教科書の式に対して何ポイント上乗せするか(0.14〜0.20)」という比較が成立しました。先行実装は「モデルを動かす」ことはできても、同じ刺激で別の検出器と並べるようには作られていません。(2) 反例: §0 の折り返しや §2 の床の流れは、op の検査を「静止した合成画像」から「歩行中の実測」に引き上げるべきだ、という具体的な要求として戻ってきます。
逆に、体・物理・コネクトームモデルは外部依存のままです(flybody / flyvis)。ここを自作する予定はありません —— 価値があるのは「載せて測る台」の側だからです。
追記: その後の実験
ハエと脊椎動物で「同じ仕事をしている場所」(2026-09-14)
「これはヒトの脳でいうとどこなのか」は自然な問いです。ただし昆虫と脊椎動物の最終共通祖先は 5.5 億年前で、視覚回路の細胞系譜は共有していません。ですから答えは全部「相同」ではなく、**別々に同じ答えへ辿り着いた対応(収斂)**になります。一次文献で裏が取れたものだけを図にしました。
*↑ 左がハエ、右が脊椎動物。**点線は「相同ではない対応」*という意味です。赤い行(光受容体)は役割が同じでも細胞系譜が別で、蝿は光で脱分極・脊椎動物は過分極と、応答の向きまで逆です。いちばん確かなのは L1(ON)/ L2(OFF) と ON / OFF 双極細胞、いちばん強い計算レベルの一致は 中枢複合体のリングと頭方向細胞系(どちらもリング・アトラクタが実測されている)。右下には「調べたが根拠が足りないので描かなかった対応」を並べてあります —— 格子細胞の昆虫版や、中枢複合体と基底核の相同は、書けば推測になります。
この図で、記事の前半が少し言い換えられます。ラミナで ON と OFF に分ける・動態の違う 2 入力を空間的にずらして掛け合わせる・その出力を大視野細胞で束ねて姿勢を安定させる —— これは「ハエのやり方」ではなく、5.5 億年の隔たりを越えて 2 回別々に採用された設計です。§4 で測った「配線の取り分 0.14〜0.20」は、その設計を実測の配線で持っているモデルが、教科書の式に対してどれだけ上乗せするかの数字、ということになります。
配線をシャッフルしても差が出ず、しかも「差が無い」とも書けなかった(2026-09-14)
§4 では、学習済みの重みを載せたまま配線だけを取り替えて「コネクトームの取り分 0.14〜0.20」を出しました。今回はもっと厳しい条件で測り直しました。学習前の同じ初期値から、本物の配線と、次数を保ったまま接続先を入れ替えた配線(シャッフル)2 本を、同じ課題・同じ予算(734 次元、1500 評価、1 条件あたり約 3 時間)で進化させます。事前学習による交絡を外すための手順です。
| 条件 | 訓練 | 保留の平均 | C | D |
|---|---|---|---|---|
| 本物の配線 | +0.196 | +0.171 | −0.292 | +0.633 |
| シャッフル 0 | +0.205 | +0.198 | −0.138 | +0.535 |
| シャッフル 1 | +0.145 | +0.039 | −0.215 | +0.294 |
本物とシャッフル平均の差は、保留で +0.052。ところがシャッフル 2 本どうしの差は 0.159 あり、その 3 倍です。つまりこの実験は、配線の差を測れるだけの感度を持っていません。
ここで踏みとどまった経緯を残しておきます。シャッフルが 1 本しか終わっていない時点では「シャッフルのほうがわずかに良い(−0.028)」という数字が出ていて、「配線の取り分はゼロだった」と書きたくなる形をしていました。2 本目が終わると符号が反転します。n = 1 の比較は、差の大きさどころか符号も当てになりません。
感度が足りない理由は 3 つ挙げられます。(1) 探索が事実上バイアスだけに縮退していました —— テンソルごとの標準偏差でパラメータを正規化する実装が、定数に近い初期値(時定数は一律 0.05)に対してスケールを 3.75e-09 まで潰し、std > 0 というガードをすり抜けていたためです。3 条件とも時定数の移動距離は 1e-8、つまり 1 ミリも動いていません。実効下限を入れて直しましたが、上の 3 条件は旧コードの結果なので、この注記は外しません。(2) 各条件 1 シードで誤差棒がありません。(3) §6 で見たとおり学習前の方向選択性は 0/8 で、配線だけでは機能が出ません。配線の差が現れる前に、学習の差で潰れている可能性があります。
次にやるのは結論を書くことではなく、実験の感度を上げることです —— 実効下限つきのスケール、各条件 3 シード以上、シャッフルの本数を増やす。
課題を順番に与えれば方向選択性は作れる。ただし最後の課題が壊す(2026-09-14)
§6 で「行動の目的だけを最適化すると、方向選択性(T4/T5 が向きを見分ける性質)が壊れる」と書きました。その対策として考えたのが、識別を要求する課題を順番に与えることです。4 段 —— 明暗 → ON/OFF → 向き → 回転。各段 400 評価で、前の段の解を次の段の出発点にします。出発点を 2 つ変えて回しました。
| 段 | 学習前から始める | 学習済み(007)から始める |
|---|---|---|
| S1 明暗 | 0.353 | 1.000 |
| S2 ON/OFF | 0.796 | 0.964 |
| S3 向き(DSI) | 0.002 | 0.377(8 型中 5 型が合格) |
| S4 回転(M4) | 0.061 | 0.799(保留 C 0.823 / D 0.811、合格 1/8) |
読み取れることが 2 つあります。
(1) 課題の順番は方向選択性を「作れる」。ただし学習済みの出発点からだけ。 007 から始めると、向きの段で 0/8 → 5/8 まで増えます。ところが学習前から始めると、4 段登っても 0/8 のままで、向きの段の成績そのものが 0.002 —— まったく登れません。配線は足場ですが、足場だけでは登れない。前の節(配線シャッフル)や §6 の「学習前の方向選択性は 0/8」と同じことを、別の角度から言っています。
(2) 作った性質は、最後の行動課題が壊す。 向きの段で 5/8 まで増えた選択性は、回転推定の段を学ぶと 1/8 に落ちます。同時に回転推定そのものは、一度も使っていない場所で 0.82 まで上がります。性能と生物らしさのトレードオフが、同じ探索の中を時間を追って進んでいるわけです。前の段の成績も落ちます(ON/OFF は 0.874 → 0.536)。
対策は分かっています —— 段 k の目的を「段 1〜k の平均」にする(累積目的)。回しました。結果は下の「忘却は目的関数の書き方で消えた」にあります —— この節の (2) は、あとで自分でひっくり返すことになります。
なお、この実験は前の節で見つけたスケールの潰れを直した後に走った最初のものです。報告ファイルに「時定数のスケールが 3.75e-09 だったので下限 0.001 を使った」と記録が残っており、直したことが動作として確認できています。
ハエの目から見た世界を、そのまま別のセンサーで見る(2026-09-14)
§0 で複眼の光学を設計しました。ではその目が実際に何を見ているのかを出してみます。歩いた軌跡をそのまま再生し、ハエの公開モデルが最初から持っている眼のカメラ(視野 140°)から描いたものです。
↑ 左から ① 世界の中のハエ(中央の小さな橙色)、② その複眼の位置から見た世界(手前の太い棒は自分の脚、上に伸びる黒い櫛は触角、地平線の向こうの塊が目標)、③ 深度(手前が青緑 → 遠くが橙。空は色域から外してあります)、④ 疑似イベント(明るくなった画素が青緑、暗くなった画素が赤)。同じ 1 つの視点から、3 種類のセンサーで同時に見ています。
④ が §0 の話と繋がります。前へ進むと、床の模様が下から外へ向かって流れるのがイベントとして出ます。§2 で「床が 330〜1000°/s で流れて運動検出器の帯域を超える」と書いた、あの流れです。イベントカメラは変化だけを送るので、この流れがそのまま素子の出力になります。
もうひとつ、①②の床に出ている干渉縞(モアレ)は絵の欠陥ではなく、§0 で測った折り返しそのものです。床のテクスチャが画素の間隔より細かいので、レンダラの標本化が「無かった粗い縞」を作っています。§0 の D3 で波長まで予測して測ったのと同じ現象が、実際の描画で起きている —— どんな目でも、標本化より細かい模様を見ようとすると嘘の模様が生まれます。
honest な注記: 胴の軌跡は視覚の閉ループが決めた本物ですが、脚の運びは見た目用の三脚歩容で、脚の力学で歩いているのではありません(記事の最初の表のとおりです)。深度と疑似イベントは描画からの合成で、実機のセンサーの出力ではありません。
どの層を黙らせると自己回転の推定が壊れるか(発生の梯子、2026-09-15)
視覚経路を下流から順に黙らせて、自己回転の推定(§5 の M4)がどの段で壊れるかを並べました。34 条件 —— 対照 + 受容器 R1〜R6 + ラミナ L1〜L3 + メデュラの Mi/Tm 9 型 + T4/T5 各 4 方向 + 束ねた段 6 つ。該当する細胞型の出力を 0 に固定し、同じ刺激で 12 か所を測ります。8 スレッドで 3 時間 23 分、34/34 完走。
| 黙らせた段 | 最悪の条件 | 相関 | 対照からの低下 |
|---|---|---|---|
| (対照) | none |
0.9487 | — |
| 受容器 R1〜R6 | R6 | 0.5742 | 0.375 |
| ラミナ L1〜L3 | 束ねて全部 | 0.4853 | 0.463 |
| メデュラ Mi/Tm | 束ねて全部 | -0.0057 | 0.954 |
| T4/T5 | T4 を束ねて | 0.5182 | 0.431 |
自己回転の推定はメデュラ層に集中していました。 ここを全部落とすと相関が -0.0057、つまりほぼ無相関まで落ちます。受容器・ラミナ・T4/T5 を落としても 0.37〜0.46 の低下で済むのと対照的です。単一の細胞型では Mi1(0.031)と Mi4(0.064) が最も効きます —— どちらも ON 経路の中継です。T4/T5 は方向選択性の教科書的な担い手ですが、回転の推定に対しては単独では決定的ではない。34 条件のうち 24 条件が対照より 0.01 以上低下しました。
ただし、この実験で測れたのは半分だけです。 方向選択性(DSI)のほうは 34 条件すべてが測定不能でした。応答に非有限が 1,009 万要素中およそ 400 万。しかも何も黙らせていない対照条件ですら非有限なので、原因は遮断ではなく応答生成そのものです。前回「非有限の条件は測定不能として記録して先へ進む」と直しましたが、それは測定不能を正しく報告するようにしただけで、非有限そのものは直っていなかった —— 修正が入ったことを「実験が通った」と読んではいけない、という例になりました。
教訓が 1 つあります。2 つの指標を 1 本の実行に相乗りさせると、片方の故障が全条件を無効にします。 M4 は 34/34 取れたのに DSI は 34/34 失われました。指標ごとに独立に走らせるか、少なくとも対照条件で指標そのものの健全さを先に確かめるべきでした。
追記(同日午後)— 非有限の正体。 最小再現(モデル 000、遮断なし、hook 登録なし、速度 19 と 25 の 2 種だけ)で、速度 25 の応答がフレーム 465 から非有限になり、刺激が有限なフレームの中の非有限は 0 でした。一次情報は flyvis の moving_bar.py の _resample: 速度ごとに長さの違う刺激を最遅速度の長さまで NaN で末尾詰めしていて(コードの注記にそう書いてある)、網がその NaN を層の遅れつきで伝えます。6 速度では列あたり 62,616 要素が構造的に非有限 —— 本番の対照条件の 4,057,080 / 10,090,080 と一致し、遮断条件がちょうど 62,616 少ないのも同じ構造で説明がつきます。flyvis 公式の DSI は時間窓しか読まないので影響は無く、壊れていたのは梯子の「全要素が有限」という門だけでした。速度 19 だけの smoke には末尾詰めが無いので、原理的に見つけられなかった。刺激が有限なフレームだけを門にかける形に直し、selftest は既存の参照値と 8 型すべて ΔDSI 0.0000。梯子の 34 条件は DSI 込みで再投入します。教訓 = 「有限であること」の門は、道具が意図的に NaN を使う場所を知らないと誤警報になる。
忘却は目的関数の書き方で消えた(2026-09-15)
前の節で、課題を順番に与えると方向選択性は作れるが最後の行動課題が壊す(5/8 → 1/8)と書きました。対策として挙げた累積目的 —— 段 k の目的を「段 1〜k の平均」にする —— を、同じ出発点・同じ予算・同じ課題で回しました。
| 段 | 明暗 | ON/OFF | 向き | 方向選択性の合格 |
|---|---|---|---|---|
| S1 | 1.000 | 0.372 | 0.123 | 1/8 |
| S1+S2 | 1.000 | 0.997 | 0.056 | 1/8 |
| S1+S2+S3 | 0.987 | 0.979 | 0.365 | 4/8 |
| S1+S2+S3+S4 | 0.999 | 0.961 | 0.392 | 6/8 |
最終段での回転推定は、一度も使っていない場所で 0.875 / 0.814。
忘却は消えました。しかも行動性能を落とさずに。 順番に与えるだけ(非累積)では最後の段で方向選択性が 5/8 → 1/8、ON/OFF が 0.874 → 0.536 と壊れました。累積目的では方向選択性が 4/8 → 6/8 とむしろ増え、ON/OFF は 0.979 → 0.961 と保たれます。回転推定の成績も前回(0.823 / 0.811)と同等以上です。
つまり 性能と生物らしさのトレードオフは、原理的な二律背反ではなく、目的関数の書き方の問題でした。 前の節で「最後の課題が壊す」と書いたのは現象としては正しいのですが、原因の読みが足りていませんでした —— 壊れたのは、保ちたい性質を最後の段の目的に入れ続けなかったからです。
代償ははっきりしています。1 回の評価で段の数だけ測るので、最終段は 1 世代あたり 239.8 秒 —— 非累積の約 7 倍、全体で 140 分(前回は約 40 分)。保ちたい性質の数だけ評価が重くなるので、何を保つかは設計判断として明示的に選ぶ必要があります。
減速つきの帰巣 —— 「干渉」に見えたものは 2 つとも別物だった(2026-09-15)
§7 の末尾に「減速を入れると記憶の更新と干渉するので別の実験が要る」と書きました。その実験をしたら、干渉ではなく §7 の数字そのものが間違っていたことが分かりました。
1 つ目: コンパスの較正忘れ。 減速(前進速度 = v0 · |H| / r_slow、|H| は記憶が復号する home vector の長さ。脳が持たない真の位置は使わない)を入れても、真値コンパスの停止誤差が往路の 31〜41 %(定速の最接近 7.4 % より悪い)で、記憶は「巣に着いた」と言うのに真の位置は 9 cm 離れていました。原因を追うと、§7 のリング・アトラクタは較正なし(g = 1)のまま使われていて、バンプが角速度より 10.8 % 速く回っていました(較正後は 1.000、純粋な時間遅れは 0.002 rad)。帰路の最初の旋回 ≈ π rad で 0.34 rad ずれます。較正して §7 を測り直すと:
| 条件 | §7 初版(較正なし) | 較正後 |
|---|---|---|
| 真値コンパス | 7.4 % | 1.7 %(帰れた) |
| 視覚推定そのまま | 23.5 %(帰れない) | 2.1 %(帰れた) |
| 利得 1.54 で振幅補正 | 19.8 % | 12.4 %(視覚推定そのままより悪い) |
↑ 較正後の §7。視覚推定をそのまま繋いでも帰れる(中央)。振幅補正は帰路を大きく外す(右)。
§7 の「誤差の内訳 = 振幅 3.8 pt + 残差 12.4 pt」「律速は較正でなく相関」「7.4 % は周回のせい」は全部この較正忘れの産物で、撤回します(§8 の 2 件目)。較正後の読みはこうです —— 振幅の過小 0.63 倍が効くのは正味の回転(この往路では −0.26 rad、総回転量 4.6 rad)を通してだけで、最小二乗の利得 1.54 は雑音のうち向きに積もる成分も 1.54 倍します。瞬時の残差(std)は 0.226 → 0.119 rad/s と減るのに、積分した向きの誤差 ∫(ŵ − ω)dt は rms 0.124 → 0.210 rad と増え、折返し時点で記憶が抱える誤差は 2.8 cm → 5.3 cm。経路積分に効くのは後者です。帰巣を決めるのは向きに積もる残差であって振幅ではない —— 結論の向きは同じですが、根拠の数字は別物です。
2 つ目: 規則の不安定平衡。 較正後に減速を入れると、r_slow = 2 cm だけで停止誤差 6.9 cm に暴走しました。測定の穴ではなく規則の穴です: 操舵 w = k |H| sin ε(ε は進行方向から見た巣の角)も速度も |H| に比例するので、経路の曲率 w / v は |H| に依らず、巣を背にして止まった瞬間(sin ε ≈ 0)は旋回せず、残った記憶の誤差ぶんの速度で真っすぐ歩き出し、歩くほど |H| が増えて速くなる(時定数 r_slow / v0 の指数)。どの r_slow で当たるかは止まったときの向き次第で、2 cm は偶然です。「巣が前方にあるときだけ歩く」(v に max(0, cos ε) を掛ける。ハエの体サッケード = 旋回中は歩かない、に対応)を足すと、全 r_slow で停止誤差 0.03 cm(真値コンパス)、到着時間は r_slow に単調(10.8 → 25.1 s)、視覚推定の条件では停止誤差 0.59 cm(そのまま)/ 3.81 cm(振幅補正)が停止時に記憶が抱える誤差とぴったり一致しました。
↑ 左: 減速半径 r_slow の掃引。点線(gate なし)は 2 cm で暴走、実線(巣が前方のときだけ歩く)は全域で止まる。破線は定速で 30 s 後の距離。中: 停止位置の誤差 = 停止時の記憶の誤差(恒等線に乗る)。右: r_slow = 2 cm の帰路(印が停止位置)。
減速は記憶の更新と干渉しません。減速は誤差を隠さず、記憶に積もった誤差をそのまま停止位置に写す —— 定速の「最接近」は軌跡がたまたま巣のそばを通った楽観値だったので、減速のほうが正直な指標になります。4 回走らせて事前の予測は 3 回外れ、その記録はスクリプトの docstring に残してあります。
壊れたのは深さではなく合流点だった(発生の梯子、本番、2026-09-15)
門を直して 34 条件を回し直しました(対照の相関 0.9487、3 時間 27 分)。今回は 34 条件すべてで方向選択性も測れています(刺激が有効なフレーム内の非有限はゼロ)。
予想は「入口から順に効く」でしたが、外れました。
| 黙らせたもの | 推定の相関 | 対照との差 |
|---|---|---|
| 髄質すべて | −0.006 | −0.954 |
| Mi1 だけ(髄質の 1 型) | 0.031 | −0.918 |
| Mi4 + Mi9 | 0.083 | −0.866 |
| T4 の 4 型(ON の方向選択) | 0.518 | −0.431 |
| L3 だけ(ラミナの 1 型) | 0.485 | −0.463 |
| 受容器 6 型すべて | 0.869 | −0.080 |
| T5 の 4 型(OFF の方向選択) | 0.915 | −0.034 |
入力を全部断つより、中継の 1 型を抜くほうが 11.5 倍効きます。 受容器を全部止めても推定が残るのは、この網に R7 / R8 が残っているからですが、それにしても「入口の冗長さ」と「合流点の脆さ」の差がはっきり出ました。急所は深さでなく、多くの型が通る合流点にあります。
もうひとつ、ON と OFF で効き方が大きく違いました。読み出しの式は ON と OFF を対称に扱っているのに、実際の依存は ON 側(T4)に偏っています(−0.431 対 −0.034)。そして教科書的には ON / OFF の主経路である L1 と L2 は、単独で黙らせても推定がまったく動かず(±0.000)、効いたのは L3 だけでした。学習済みのこの個体は、教科書とは別の配線の使い方をしています。
11 匹を束ねると賢くなるのか(2026-09-15)
別々に育てた 11 体の推定を平均すると、未知の場所での相関は 0.9749。訓練成績で選んだ最良の 1 体は 0.9235 なので、束ねは勝ちました。
ただし、後知恵でホールドアウト最良の個体を選ぶと 0.9766 で、束ねとほぼ同じです。つまりここで起きたのは「集団が個を超えた」ではなく、**「訓練成績で 1 体を選ぶ判断が外れやすく、束ねるとその失敗を受けずに済む」**ということでした。訓練で選んだ個体は、未知の場所では 11 体中 3 位でした。
頭打ちは K=2 で、予想した 4〜8 より早く来ました。未知の場所で推定が逆向きになる個体(相関 −0.246)を混ぜても、平均は落ちませんでした。
次に測ること
結果が出たら上の「実験の一覧」に行を足し、この一覧から消します。
- 冗長化でなく役割分担 —— 全員が同じ量を推定して平均するのでなく、個体ごとに別の量を担当させて束ねる。
作り手について
問いと方向は私が決め、実装・掃引・対照群の追加・予想の反証は Claude Code に回しました。第 8 節の撤回は、その反証の記録です。
この実験群は Claude Code と一緒に回しました。 問いと方向決めは私、実装・掃引・夜間の長時間ジョブの管理・敵対レビューは Claude Code、という分業です。試してみたい方は、こちらの招待リンクから 1 週間の無料トライアル が使えます: claude.ai/referral/0sqPw8E_lw
「学習済みモデルを自分の系に載せたら、静止した検査に通ったのに本番で落ちた」―― 同じ経験のある方の話がいちばん聞きたいです。いいね・ストックをもらえると、次にどの実験を記事にするかの判断材料になります。















