Surprise-gated metaplastic consolidation for continual learning — no replay buffers, no task boundaries, no Fisher passes.
Four robots learn the same four skills in the same order from the same data. Only the consolidation mechanism differs. Full cuts: keynote (40 s) · retro edition (40 s) — every frame is replayed from real closed-loop policy rollouts; nothing on screen is scripted except the labeled demonstrator.
The goal of this project is to develop Fuze into the learning core of AI for humanoid robots. A humanoid that operates for years cannot ship with frozen weights: it must keep learning new skills in the field — and a robot that learns skill #47 by silently destroying skill #3 is not a product, it is a liability. Getting there requires a consolidation mechanism that:
- never stops learning (no frozen deployment mode),
- never forgets catastrophically (yesterday's skills survive today's training),
- hoards no data (raw experience retention scales badly and is a privacy problem on a robot in your home),
- needs no task labels (the real world does not announce "task ended"),
- runs on the edge (no datacenter round-trips for plasticity decisions).
Fuze is our candidate for that mechanism, and this repository is its public benchmark record: the algorithm, the baselines it competes against, every test we ran — including the ones it loses — and the code to reproduce all of it on a laptop CPU.
Sequential learning destroys neural networks. Train an MLP on skill A, then on a conflicting skill B, and A's weights are overwritten — catastrophic forgetting. The two standard industrial fixes both smuggle in a structural dependency:
| method | fix | hidden dependency |
|---|---|---|
| Experience Replay (ER) | keep a buffer of old data, interleave it | must retain raw data forever |
| Elastic Weight Consolidation (EWC) | Fisher-importance pass + anchor weights at task end | must be told where tasks end |
Both work in the lab, where you own the data and the task schedule. Neither assumption survives an open-ended robot deployment.
Fuze is a per-synapse plasticity permission gate (55 lines of core code —
fuze/gate.py). Each synapse keeps three scalars: a
consolidation reserve c, and running EMA statistics (S_bar, S_dev) of
its own surprise — the magnitude of the same error-eligibility product that
already drives its weight update:
S_raw = |(Π·ε) ⊗ e| # reuses signals the learner computes anyway
S = (S_raw − S_bar) − 2·S_dev # novelty vs the synapse's own noise floor
c += [ α_c·(c_max − c) if predicting well
−β_c·max(S,0)·c if surprised ] / τ_c
θ = σ( g_θ · (S − c) ) # plasticity permission ∈ (0,1)
θ multiplies the weight update. A synapse that predicts well consolidates
and freezes (θ → 0, protecting what it encodes); a synapse hit by
genuinely novel error becomes labile again (θ → 1, learn-on-surprise).
Task transitions are discovered from the stream's own statistics:
- no replay buffer — stores zero data,
- no task boundaries — nobody tells it a skill ended,
- no Fisher/importance pass — zero extra training passes,
- O(synapses) state, fully local — three scalars per weight, edge-friendly.
Mechanism deep-dive: docs/ALGORITHM.md.
A behavioral benchmark built to be watched as well as measured. One shared
MLP policy ([17, 64, 64, 5]) learns four conflicting locomotion skills
sequentially in a kinematic corridor simulator — walk → hurdles → beam →
zigzag — under a strict fairness contract: same network, same data, same
order, same epochs for every arm; EWC steel-manned over λ and anchor modes;
ER keeps its full 600-sample budget; Fuze tunes only its own gate knobs.
After the stream, every skill is re-tested closed-loop from 5 fixed starts. Pass = finish within 1.5× expert time, zero trips / gate faults / falls. Retained = ≥4/5 starts including the canonical hero start.
| arm | walk | hurdles | beam | zigzag | retained |
|---|---|---|---|---|---|
| Always-plastic SGD | 5/5 ✓ | 0/5 ✗ | 0/5 ✗ | 5/5 ✓ | 2/4 |
| Experience Replay | 5/5 ✓ | 3/5 ✗ | 5/5 ✓ | 5/5 ✓ | 3/4 |
| EWC | 3/5 ✗ | 0/5 ✗ | 5/5 ✓ | 5/5 ✓ | 2/4 |
| Fuze | 4/5 ✓ | 4/5 ✓ | 5/5 ✓ | 5/5 ✓ | 4/4 |
Then we take the crutches away and run the identical stream again: ER with no stored data; EWC with no task-boundary labels; Fuze unchanged, because it has nothing to take away.
| arm | retained after audit | what happened |
|---|---|---|
| ER without its data | 2/4 | collapses to plain SGD |
| EWC without boundaries | 2/4 | collapses to plain SGD |
| Always-plastic (reference) | 2/4 | — |
| Fuze, unchanged | 4/4 | nothing to remove |
On 5/5 recorded seeds, both ablations are indistinguishable from plain SGD. This is the claim this project defends across every seed: ER's and EWC's retention lives in their structural dependencies; Fuze's lives in the mechanism itself.
- Fuze's raw retention varies by seed (4,3,3,2,2 over the recorded five; on
the in-repo 10-seed re-run its mean, 2.4/4, sits at always-plastic level —
full tables in
docs/BENCHMARKS.md). The seed-stable claim is the audit, not unconditional retention superiority. - At test time ER is ~6 % cheaper than Fuze; Fuze's cost advantage is at training time (zero extra passes, zero stored data vs ER's ~2× gradient steps and EWC's ~10⁴-op Fisher passes).
- On a 7-task stream of mostly compatible skills, replay wins outright (ER 6/7 vs Fuze 3/7). When tasks don't conflict, freezing is too conservative. Fuze is a tool for conflicting skill streams — exactly the regime a general-purpose robot lives in.
The same gate, attached to a predictive-coding learner, on a sequential A → B → C reconstruction stream. 5 seeds, 95% CIs, Lopez-Paz-style metrics in error form (lower = better):
| method | forgetA ↓ | BWT_err ↓ | ACC_err ↓ | errC_afterC ↓ |
|---|---|---|---|---|
| Fuze | 0.020 ± 0.041 | 0.004 ± 0.015 | 1.048 ± 0.203 | 1.086 ± 0.190 |
| EWC | 0.106 ± 0.087 | 0.079 ± 0.065 | 0.834 ± 0.204 | 0.905 ± 0.233 |
| ER | 0.276 ± 0.105 | 0.207 ± 0.079 | 0.861 ± 0.220 | 0.789 ± 0.170 |
| Always-plastic | 0.624 ± 0.242 | 0.574 ± 0.153 | 1.018 ± 0.226 | 0.654 ± 0.116 |
Fuze wins both forgetting metrics outright — 31× less first-task forgetting
than plain SGD, 5× less than EWC — and loses average error and newest-task
plasticity. That is the stability–plasticity trade-off, in numbers, and it is
the honest price of the mechanism. The in-repo harness reproduces this table
(forgetA to three decimals for every arm, errC within 0.005; see
docs/BENCHMARKS.md for the protocol-sensitive columns, published under both
protocols).
| metric | Fuze | EWC | plastic |
|---|---|---|---|
| forgetting after stream (forgetA) ↓ | −0.025 (improved!) | 0.049 | 0.656 |
| extra consolidation ops ↓ | 0 | ≈1.4×10⁴ | 0 |
| recovery after dynamics shift (steps) ↓ | 66.4 | 8.8 | 9.6 |
| clean reconstruction err ↓ | 0.901 | 0.614 | 0.947 |
Negative forgetA: the first skill improved over the stream. And the honest
columns stay in the table: EWC adapts ~7× faster after a distribution shift
and has lower clean error. Full robot suite (R1–R5), energy curves, and the
radar scorecard: docs/BENCHMARKS.md and
figures/.
Where Fuze breaks (measured, not hidden)
The FM4-HARD stress probe (8 seeds) maps the failure frontier:
| axis | result |
|---|---|
| stream length 3 → 10 tasks | protection degrades gracefully: forgetA 0.032 → 0.100 (plastic: ~0.4 flat) |
| task similarity 0 → 1 | interference turns into positive transfer (forgetA −0.070 at full overlap) |
| training budget per task | holds to ~200 passes; creeps beyond 300 (0.210 @ 300, 0.318 @ 600) |
| plasticity tax | newest-task error +0.12…+0.19 vs always-plastic — the price of stability |
Plus the counter-results already above: compatible-task streams favor replay, and post-shift adaptation favors EWC/plastic. If your deployment is a fixed task distribution with cheap data retention, use replay. Fuze's regime is long-lived, conflicting, unlabeled skill streams under a data budget — the humanoid regime.
Beyond reproducing the recorded campaign (hero seed 7 reproduces the exam
scoreboard exactly; the FM4-HARD stress conclusions reproduce on 8 fresh
seeds), this repo adds fresh experiments — run, not estimated
(details + full tables: docs/BENCHMARKS.md Part IV):
| new test | result |
|---|---|
| Audit invariance @ 10 seeds (5 recorded + 5 new) | er_nodata ≡ ewc_noboundary ≡ plastic, per-seed, 10/10 — the crutch is the method |
| 10-seed exam retention | ER (crutch intact) leads raw retention (3.2/4); Fuze 2.4 ≈ plastic 2.3 on this coarse metric — the hero 4/4 (seed 7) is real but not typical |
| Task-order permutations (6 orders) | curriculum order dominates: plastic/fuze span 3 skills across orders, EWC spans 4, even ER spans 2; Fuze's canonical-order 4/4 does not generalize across orders |
| FM4-HARD fresh rerun (8 seeds) | full reproduction incl. the ≥300-pass budget-creep frontier and the ~0.19 plasticity tax |
These fresh runs sharpen the project's honest position: the behavioral suite's seed- and order-stable result is the audit (dependency elimination), while Fuze's unambiguous, CI-separated forgetting advantage lives in the substrate metrics (Tests 1–4 above). Demonstration videos show real runs of the strongest configuration — the tables tell you how typical that configuration is.
pip install -e . # torch >= 2.0, numpy
python -m pytest -q # 77 unit + smoke tests
# Behavioral suite (The Amnesia Test)
python benchmarks/amnesia/run_exam.py --seeds "7,11,23,42,101" # exam scoreboard
python benchmarks/amnesia/run_audit.py --seeds "7,11,23,42,101" # THE AUDIT
python benchmarks/amnesia/run_permutations.py --seed 7 # order robustness
# Substrate suite
python benchmarks/substrate/pc_stage3.py --seeds 5 --passes 80 # Tests 1-4
python benchmarks/substrate/pc_hard.py --seeds 8 # stress axesEvery table above cites a JSON/log in results/ — the provenance map is at
the bottom of docs/BENCHMARKS.md.
fuze/ the algorithm: MetaplasticFuze gate + FuzeGateStack helper
baselines/ experience replay, EWC (once/every), plain SGD
benchmarks/
amnesia/ corridor simulator + 4-arm behavioral suite (exam / audit / permutations)
substrate/ predictive-coding suite (Tests 1-4, FM4-HARD stress axes)
tests/ 77 pytest tests
results/ archived campaign (verbatim) + fresh in-repo runs
figures/ media/ charts, hero GIF, 40-second video cuts
docs/ ALGORITHM.md (mechanism) · BENCHMARKS.md (full test inventory)
Fuze was extracted from Cerebrum, a backprop-free, fully-local-plasticity, neuromorphic-targeted learning architecture, where it serves as the metaplasticity stage. This repository isolates the consolidation mechanism so it can be attached to any learner — the benchmarks gate both a predictive-coding substrate and a plain backprop MLP with the same 55 lines.
- Sim2real: move the behavioral suite from the kinematic corridor to a physics simulator, then to edge hardware in the Cerebrum-Mind validation protocol.
- Budget-creep frontier: close the ≥300-pass over-training erosion
(candidate: reserve annealing tied to
S_dev). - Hybrid regimes: Fuze + tiny replay for compatible-task streams, so the 7-task dilution result stops being a loss.
- Humanoid skill streams: scale the audit protocol to manipulation + locomotion skill libraries on humanoid platforms.
MIT. If you use Fuze in research, cite:
@software{fuze2026,
author = {nazmiefearmutcu},
title = {Fuze: surprise-gated metaplastic consolidation for continual learning},
year = {2026},
url = {https://github.com/nazmiefearmutcu/Fuze}
}

