JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

The Two-Learner Problem and Co-Adaptation

The two-learner problem in depth: how the user's plasticity and the decoder's adaptation can converge into fluent control or chase each other into instability.

Two adaptive systems, one loop

A closed-loop BCI contains two learners with different clocks. The user learns through neural plasticity: with practice, motor and premotor cortex reshape their activity to make the decoder's job easier, the same way you learn any new tool. Over days this becomes genuine BMI skill learning, with consolidated, reproducible neural patterns. The decoder learns through adaptive decoding: it re-estimates its parameters from incoming data. The art of co-adaptive BCI is coordinating these two so they help rather than fight.

\min_{\theta_u}\ \mathbb{E}\big\lVert v^{\star}_k - \hat v_k\big\rVert^2 \quad\text{and}\quad \min_{\phi}\ \mathbb{E}\big\lVert v^{\star}_k - \hat v_k\big\rVert^2, \qquad \hat v_k = D_\phi\big(g_{\theta_u}(x_k)\big)

Two coupled objectives over the same error. The user controls the encoder g_{\theta_u}; the decoder controls D_\phi. A stable BCI is a joint fixed point of both — not the optimum of either alone.

Two players are minimizing the very same error: the user (tuning their neural encoder) and the decoder (tuning its parameters). A good BCI is where both are simultaneously satisfied — a joint fixed point — not where either one alone is perfect.

v^{\star}_k
The velocity the user actually intends.
\hat v_k
The velocity the system actually decodes.
\theta_u
The user's encoder parameters — what the brain adapts.
\phi
The decoder's parameters — what the algorithm adapts.

If both keep chasing the error at once they can fight each other, so stability needs them to agree on one shared solution.

When co-adaptation helps and when it fights itself

Co-adaptation is powerful but easy to destabilise. If both learners adapt quickly at the same time, each optimises against a moving target: the decoder fits a neural code the user is simultaneously abandoning, and vice versa. The classic remedy is a separation of timescales — let one adapt while the other is approximately fixed, then alternate — or make decoder adaptation deliberately slow relative to user learning, so the user always faces a stable-enough plant to learn against.

What the brain learns: the manifold view

What, concretely, can the user learn? A striking line of work says: not everything, and not equally fast. Neural population activity lives near a low-dimensional neural manifold set by the circuit's connectivity. When a decoder is perturbed within that manifold, users re-learn control within a single session; when it is perturbed outside the manifold — demanding activity patterns the circuit does not natively produce — learning is far slower or fails. This within- vs outside-manifold distinction is a practical constraint: adapt the decoder along directions the user can actually follow.

n_k \approx \bar n + L\,z_k, \qquad z_k \in \mathbb{R}^{d},\ \ d \ll \dim(n_k)

Population activity n_k near a d-dimensional manifold spanned by the columns of L. Within-manifold decoder changes reweight the latent z_k; outside-manifold changes demand new activity directions the circuit resists.

Even though thousands of neurons fire, their activity really lives near a low-dimensional sheet — the neural manifold. Decoder changes that stay on this sheet just reweight a few latent factors and feel easy to learn; changes that leave it demand brand-new firing patterns the circuit resists.

n_k
The full population activity — many neurons at once.
\bar n
The mean activity that the fluctuations sit around.
L
Matrix whose columns span the low-dimensional manifold.
z_k
The few latent factors that actually vary — the real control knobs.
d \ll \dim(n_k)
The manifold dimension is far smaller than the neuron count.

Hundreds of neurons might vary together along only about ten shared latent directions.

Credit assignment: whose fault was the error?

Every control error poses a credit-assignment question: was the cursor's miss the user's encoding error, or the decoder's mapping error? Behaviour alone cannot say — the two are confounded in the same observed trajectory. This ambiguity is why naive supervised adaptation is dangerous: if you retrain on the assumption that every deviation was decoder error, you 'correct' the decoder toward the user's mistakes. Resolving it requires an outside assumption about intent, which is exactly what intention estimation (next guide) supplies.

A co-adaptive schedule in practice

In practice these ideas become a calibration schedule that hands off adaptation from decoder to user over time.

  1. Open-loop seed: record neural activity while the user observes or imagines the target motion, and fit an initial decoder — imperfect, but good enough to move.
  2. Closed-loop with intention-corrected updates: hand control to the user and refit the decoder on intention-estimated labels (ReFIT-style), blending changes in slowly.
  3. Stabilise and freeze: once performance plateaus, stop adapting the decoder so the user can consolidate a stable motor skill against a fixed plant.
  4. Periodic recalibration: track slow nonstationarity with occasional light updates or unsupervised self-recalibration, not constant fast adaptation.