The stabilisation idea
Recall the factorisation \mathbf x_t=\mathbf W_t\mathbf z_t. If the latent \mathbf z_t is stable, we do not need to retrain the decoder at all — we need to re-align today's activity onto yesterday's latent, then read it with a frozen decoder. This is latent-space stabilisation, and it turns a hard relearning problem into an easier alignment problem.
Stabilisation learns a per-day alignment A_t that pushes today's activity distribution onto a fixed reference latent p_ref, minimising a divergence D. A frozen decoder g then reads the aligned latent — the decoder itself never changes.
Crucially the alignment can be learned without labels. You only need today's neural activity to look like the reference distribution in latent space; you do not need to know what the user intended. That is what makes stabilisation a genuine route to unsupervised adaptation, not just cheap supervision in disguise.
How alignment is actually done
Several families exist. Subspace alignment: find latent axes each day with factor analysis or PCA and align them to a reference via a linear transform — the approach behind stabilising a cursor BCI over months with no recalibration. Distribution matching / adversarial: train an aligner so a discriminator cannot tell today's aligned activity from the reference — distribution matching and adversarial domain adaptation. Dynamics-based: require the aligned latent to obey the same learned dynamics as the reference, which pins the alignment down far more tightly than matching marginals alone.
A complementary route learns a representation that is already consistent across sessions, so little per-day alignment is needed. Contrastive methods (CEBRA) and self-supervised pretraining pull matching behaviour or time points together and push others apart, yielding embeddings that transfer across days and even subjects with minimal adjustment.
Watching it hold the line
The widget compresses a real result: in animal work and some human data, stabilised and self-recalibrating decoders have held usable performance across weeks to months where a frozen decoder would have failed. This is the demonstrated core of the field — the part you can point to as genuinely working, not merely proposed.
Test-time adaptation and the stability–plasticity knob
A lighter-weight cousin adapts the decoder, or just its normalisation statistics, on the fly from unlabelled test data — test-time adaptation. The simplest version updates running statistics or a few parameters as data streams in, with no calibration event at all.
Many online adapters are, at heart, a running average. The single knob alpha is the whole story: small alpha is stable but lags real drift; large alpha tracks drift but chases noise.
That single knob \alpha is the stability–plasticity dilemma in miniature: too small and the decoder lags real drift; too large and it chases noise and can wander off a good solution with no labels to pull it back. Unsupervised adaptation has no teacher, so an unlucky run can drift the decoder itself — the failure mode that makes people justifiably nervous about fully autonomous adaptation.
Zero-shot and the foundation-model bet
The most ambitious version skips per-user calibration entirely: a model pretrained across many subjects and sessions that a new session plugs into with little or no calibration — plug-and-play / zero-shot decoding, increasingly via neural foundation models and neural data transformers. In-context adaptation would let such a model adjust from a handful of unlabelled examples, the way a language model conditions on a prompt.