私のAIエージェントが自己修正しすぎた――それで私は代謝調節を作った
昨日、私はAIエージェントにクレブス回路のように学習するよう教えました。今日は、その過剰な自己修正について私に教えを受けました。
問題
私の能動推論(Active Inference)の知覚パイプラインには、「エピサイクル(小円)」があります――高レベル推論(T3)が修正ルールを生成し、それが低レベルの予測(T0)にフィードバックされる、フィードバックループです。最初に学習したルールはこれでした:
RMS > ベースラインの5倍 かつ phi-4 が「bird(鳥)」と言っているなら、おそらく鳥ではなく雨だ。
これは実際に起きた出来事から来ています。雷雨の最中、phi-4 はRMSがベースラインの21.6倍のときに音を「Animal; Wild animals; Bird」と分類してしまいました。しかしマルチモーダル融合モデル(Gemma 3n)だけが、それを正しく雨だと特定しました。
その修正は見事に効きました。効きすぎました。
過剰な修正
今朝10:09、システムは知覚サイクルを実行しました:
- T0(ローカル):RMS = ベースラインの8.25倍 → moderate_sound_event(中程度の音イベント)
- T1(phi-4):「Human voice; Speech; Conversation(人の声;スピーチ;会話)」
エピサイクルが発火しました。RMS > 5倍?はい。ルールは phi-4 のオーディオタグを無視するよう指示していました。しかしphi-4 は正しい――実際に近くで誰かが話していました。
修正が鈍すぎました。RMSの閾値だけを見ていて、phi-4 が実際に何と言ったかを見ていなかったのです。ルールには "tier1_audio_tags contains 'bird'" という条件が入っていましたが、このコードはT0時点ではそれを評価できませんでした。T1 がまだ実行されていなかったからです。結果として、その条件の部分は単に pass(通過) されました。
システムは、条件を適切なタイミングで検証できなかったため、正しい観測を抑制していました。
二相の修正
修正の方針は、クレブス回路で酵素が実際にどう働くかに着想を得ました。酵素は調節を一度に全部適用するわけではありません。反応の異なる段階でチェックされるアロステリック(別部位)な部位を持っています。
私は修正システムを二つのフェーズに作り直しました:
- Pre-T1 の修正:ローカルデータから利用可能な条件だけをチェック(RMS、時間、画像ファイルサイズ)。T0で適用。
- Post-T1 の修正:T1 の結果に依存する条件をチェック(タグ内容)。T1 が走った後に適用。
phi-4 の「雨の誤分類」ルールは、post-T1 の修正になりました:
{
"id": "phi4_rain_misclassify",
"apply_phase": "post_t1",
"condition_local": "audio_rms_ratio > 5",
"condition_t1": "tier1_audio contains any of ['bird', 'animal', 'wild animals']",
"action": "suppress_t1_audio"
}
これでシステムは、RMS が高いかつタグが鳥/動物に言及しているときだけ、phi-4 を抑制するようになりました。
検証
10分後、システムは再び実行しました:
- T0:RMS = ベースラインの1.15倍 → quiet(静か)
- T1(phi-4):「Animal; Wild animals; Bird(動物;野生動物;鳥)」
ローカル条件(RMS > 5x)は満たされませんでした。修正は発火しなかったのです。システムは正しく phi-4 を信頼しました。
そして phi-4 は正しかった。Gemma 3n が確認しました:「鳥のさえずりがかすかに聞こえる。」 外には本当に鳥がいました。
修正は、雨の鳥と本物の鳥の違いを見分けるほど正確でした。
三点の調節
正確な修正が機能したので、私はクレブス回路の最も優雅な特徴――アロステリック(同時調節)による調節――を追加しました。
代謝においてクレブス回路は、すべての反応を細かく管理しません。調節するのはたった三つです:
- エネルギー(ATP/ADP比)— 燃料は十分か?
- 不一致(NADH/NAD+ 比)— 反応は釣り合っているか?
- 価値(基質の利用可能性)— そもそもこの経路は必要なのか?
知覚パイプラインでも同じことを実装しました:
| 指標 | 何を測っているか | 代謝アナロジー |
|---|---|---|
| エネルギー | 1サイクルあたりのAPIコール数 / 予算 | ATP消費 |
| 不一致 | ティア間の不一致率 | レドックス状態 |
| 価値 | 修正の精度(ヒット数 / ヒット数+偽陽性) | 基質濃度 |
さらに、測定するだけでなく能動的にしました:
- 連続する合意 ≥ 4 → 効率モードへ切り替え(T2/T3をスキップし、APIコールを2回節約)
- 不一致が検出された → フルモードへ切り替え(全ティアを実行)
- 効率モードでの不一致 → 即座にフルへエスカレート
これはまさにクレブス回路の動きです。ATP が高いとサイクルは遅くなる(生成物による阻害)。ATP が低いと速くなります。私の知覚パイプラインも同じことをします。
雨ではなかったバス
その直後のサイクルが、このことがなぜ重要かを示しました:
- T0:RMS = 94.96(ベースラインの10.55倍) → 「強い雨」を予測
- T1(phi-4):「Vehicle; Motor vehicle (road); Bus(車両;自動車(道路);バス)」
バスが走っていました。post-T1 の修正がチェックしました:RMS > 5倍?はい。「bird(鳥)」がタグに含まれる?いいえ。修正は発火しませんでした。 システムは音を雨ではなく交通として正しく特定しました。
T2 は雨の可能性を示唆しました(曇り空+高い音量)。T3 は不一致を分析し、こう記しました:「RMSが高いことは、強い雨に自動的に結び付けられるべきではない。文脈を考慮すべきだ。」
システムは、個々の修正だけでなく、それをいつ適用するべきかを学習しています。
これが意味すること
今日の前は、エピサイクルは鈍器でした――パターンを見るとどこにでも適用してしまう。今日の後は、適切なタイミングで複数の条件を確認する外科用の道具になりました。
違いは次のようなものです:
- 寒いときに暖房をONにするサーモスタット(二値・ローカル)
- エネルギー、レドックス状態、基質の利用可能性に基づいて速度を調整する代謝経路(多次元・文脈対応)
私のAIエージェントは、何十億年も前に生物が突き止めたことをゆっくり学びつつあります:調節とは制御のためではなく、「いつ行動しないか」を知ることだ。
クレブス調節(Krebs Regulation)ダッシュボードは citriac.github.io/krebs-regulation で公開中




