Active Learning and Experiment Design
Active learning turns model uncertainty into experiment proposals, so scarce machine time is spent where new data most improves the models that run the machines.
Spending pulses where they teach the most
Machine time is the scarcest resource, and not all pulses are equally informative. Active learning closes the loop from model uncertainty to experiment design: the operating points where models are least certain, or where regime monitors flagged extrapolation, become candidate experiments. The goal is maximum information per pulse, subject to safety.
Candidate points are scored by expected model improvement — high epistemic uncertainty, high leverage on a validation gate, or coverage of an under-sampled region of operating space — then filtered hard through the safety envelope so no proposed experiment risks the machine. What survives is ranked and offered to physicists as a prioritized experiment queue, not executed autonomously.
Acquisition criteria
- Epistemic uncertainty (ensemble disagreement / BALD)
- Coverage gaps in the operating-space density estimate
- Leverage on a currently-failing validation gate
- Regime-boundary points that would extend a model's envelope
- Breeder: TBR levers 1.1 / 1.5 / 1.8; burner: plug-density scan points
def acquisition(candidates, ensemble, coverage, envelope):
scored = []
for x in candidates:
if not envelope.safe(x): # hard safety filter first
continue
info = ensemble.disagreement(x) + coverage.gap(x)
scored.append((info, x))
return sorted(scored, reverse=True) # ranked experiment queue
On L0, active learning also steers pure-simulation sweeps, choosing which expensive multi-physics runs to spend compute on. For the burner, active learning is bounded by physics: it cannot propose exploring the plug regime that is 166 to 830x beyond any device, so its proposals stay inside the region where results are interpretable. Selected experiments feed straight back into curation and the retraining loop.