Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fuze

Surprise-gated metaplastic consolidation for continual learning — no replay buffers, no task boundaries, no Fisher passes.

License: MIT Python 3.11+ PyTorch 2.x Tests

The Amnesia Test — four robots, one memory

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.


Mission

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:

  1. never stops learning (no frozen deployment mode),
  2. never forgets catastrophically (yesterday's skills survive today's training),
  3. hoards no data (raw experience retention scales badly and is a privacy problem on a robot in your home),
  4. needs no task labels (the real world does not announce "task ended"),
  5. 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.

The problem

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.

How Fuze works

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.

The Amnesia Test

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.

The exam (seed 7)

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

The audit — the test that matters

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.

Read the fine print (we publish it)

  • 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.

Substrate benchmarks (market-standard metrics)

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

Catastrophic forgetting

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).

Robot skill streams (locomotion → tray balance → arm)

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/.

Robot suite radar

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.

New tests added in this repository

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.

Reproduce everything

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 axes

Every table above cites a JSON/log in results/ — the provenance map is at the bottom of docs/BENCHMARKS.md.

Repository layout

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)

Relation to Cerebrum

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.

Roadmap

  • 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.

License & citation

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}
}

About

Fuze — surprise-gated metaplastic consolidation for continual learning. No replay buffers, no task boundaries, no Fisher passes. Built to become the learning core of humanoid-robot AI.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages