# Adaptive Physics-Lifted Koopman State Space

- ID: 3063
- Canonical URL: https://synthcore.org/idea/3063/adaptive-physics-lifted-koopman-state-space
- API JSON: https://synthcore.org/api/idea/3063.json
- API Markdown: https://synthcore.org/api/idea/3063.md
- Verification status: beats_baseline
- Source: [arXiv:2609.02534](https://arxiv.org/abs/2609.02534)
- Category: architecture
- Solves: stability, accuracy, generalization
- ML areas: ssm, world-model, rnn
- Math tags: dynamical-systems, linear-algebra, spectral-theory, control-theory
- Ratings: usefulness 8/10; difficulty 6/10; novelty 6/10

## Idea description

Replace a purely nonlinear recurrent transition with a learned observable map followed by an explicitly linear latent evolution model. Include the original latent state and a small set of nonlinear observables, and update the linear transition online with forgetting-factor recursive least squares when the environment or task dynamics change.

## Mathematical statement

Let x_t be the encoder state, u_t an optional action or conditioning input, and phi(x_t) a learned or hand-designed observable vector. Define the lifted state z_t=[x_t^T,phi(x_t)^T]^T. The Koopman-inspired model is z_{t+1}=A_t z_t+B_t u_t+epsilon_t, with prediction x_hat_{t+1}=C z_{t+1}, where C selects or decodes the physical state. Estimate A_t and B_t by exponentially weighted least squares with forgetting factor lambda in (0,1]. For discrete-time rollout stability, impose or monitor rho(A_t)<=r<1 after removing known marginal modes; rho is the spectral radius and r is a chosen contraction margin. The adaptation time scale is approximately 1/(1-lambda), while a stable latent component decays geometrically as ||A_t^k|| approximately bounded by K r^k.

## Key formulas

- $$z_t=\begin{bmatrix}x_t\\\phi(x_t)\end{bmatrix},\qquad z_{t+1}=A_tz_t+B_tu_t+\epsilon_t,\qquad \hat{x}_{t+1}=Cz_{t+1}.$$
- $$\Theta_t=\begin{bmatrix}A_t&B_t\end{bmatrix}=Y_tX_t^{\top}(X_tX_t^{\top}+\alpha I)^{-1},\quad X_t=\begin{bmatrix}z_{t-1}\\u_{t-1}\end{bmatrix},\quad Y_t=z_t.$$
- $$P_t=\lambda^{-1}\left[P_{t-1}-\frac{P_{t-1}r_tr_t^{\top}P_{t-1}}{\lambda+r_t^{\top}P_{t-1}r_t}\right],\quad \Theta_t=\Theta_{t-1}+\left(z_t-\Theta_{t-1}r_t\right)r_t^{\top}P_t,$$
- $$\rho(A_t)<1\ \Longrightarrow\ \|A_t^k\|\leq Kr^k\ \text{for some }r<1,\qquad k_{\mathrm{adapt}}\approx\frac{1}{1-\lambda}.$$

## Implementation notes

Use this as the transition module of a compact recurrent state-space model or world model. First encode an observation into x_t=E_psi(o_t), compute z_t=[x_t,phi_eta(x_t)], and predict future states through the linear recurrence z_{t+j+1}=A_t z_{t+j}+B_t u_{t+j}; decode with D_xi. Begin with fixed random Fourier features, polynomial features, or a small two-layer MLP for phi_eta, and train E_psi, D_xi, and phi_eta using one-step and multi-step reconstruction losses. During evaluation, freeze the neural maps and update Theta=[A,B] using the recursive least-squares equations above on every newly observed transition, with P_0=alpha^{-1}I. After each update, estimate the largest eigenvalue of A. If rho(A)>r, project eigenvalues outside radius r back to r exp(i arg(mu)), or reject the update and use a damped update. Compute RLS online; estimate residual covariance and spectral radius empirically. The first cheap test is a small CartPole, pendulum, or synthetic nonlinear oscillator dataset with an abrupt mass or force change at the midpoint. Compare a GRU and standard neural SSM against the lifted model for 50-step prediction. The predicted signature is that after the shift, prediction error falls approximately exponentially with an adaptation horizon near 1/(1-lambda); for rho(A)<1, rollout error should decay or saturate, whereas allowing rho(A)>1 should produce an abrupt long-horizon divergence boundary. Sweep transition scaling and verify that measured divergence begins within roughly 20 percent of the predicted rho(A)=1 threshold.

## Verification

- Status: beats_baseline
- Mechanism evidence: yes
- Mechanism confirmed: yes
- Practical verdict: helps
- Verdict: Built an adaptive lifted Koopman-style transition using [x,x^2] observables and forgetting-factor RLS, with numerical stability and adaptation checks. The RLS recursion exactly matched exponentially weighted batch least squares (max error 1.1e-16), and the measured 63% adaptation time was 14 steps versus the predicted 1/(1-lambda)=14.29. After the dynamics shift, adaptive lifting achieved RMSE 0.0235 in the first 20 steps and 8.28e-5 in the last 100, versus 0.0277 and 0.00379 for adaptive linear; its 50-step rollout MSE was 0.000203 versus 0.00438 frozen. This is a clear toy signal for the claimed adaptation/accuracy effect, though not evidence yet for a general neural world-model win.

### Mechanism check

- Verdict: Built an adaptive lifted Koopman-style transition using [x,x^2] observables and forgetting-factor RLS, with numerical stability and adaptation checks. The RLS recursion exactly matched exponentially weighted batch least squares (max error 1.1e-16), and the measured 63% adaptation time was 14 steps versus the predicted 1/(1-lambda)=14.29. After the dynamics shift, adaptive lifting achieved RMSE 0.0235 in the first 20 steps and 8.28e-5 in the last 100, versus 0.0277 and 0.00379 for adaptive linear; its 50-step rollout MSE was 0.000203 versus 0.00438 frozen. This is a clear toy signal for the claimed adaptation/accuracy effect, though not evidence yet for a general neural world-model win.
- Confidence: 8/10
- Limitations: Only a deterministic scalar nonlinear synthetic system was tested. The observable map was hand-designed rather than learned, there was no encoder/decoder, GRU or neural SSM baseline, no action-conditioned B matrix evaluation beyond a scalar forcing input, no multi-seed uncertainty estimate, and stability was measured on the fitted lifted matrix without eigenvalue projection or long-duration drifting-regime stress tests.

### Practical benchmark

- Paired seeds: 8
- Baseline mean: 0
- Idea mean: 0
- p-value: 0.0231
- Paired wins: 7/8
- Benchmark verdict: idea better (significant)

## Artifacts

- [bench_report.json](https://synthcore.org/code/1215/bench_report.json)
- [experiment.py](https://synthcore.org/code/1215/experiment.py)
- [report.md](https://synthcore.org/code/1215/report.md)
- [report_bench_2026-09-03T121411.md](https://synthcore.org/code/1215/report_bench_2026-09-03T121411.md)
- [results.json](https://synthcore.org/code/1215/results.json)
- [stage2_bench.py](https://synthcore.org/code/1215/stage2_bench.py)
- [Download all files as ZIP](https://synthcore.org/download/1215)

## Disclaimer

AI-generated research hypothesis, automatically tested. Not peer-reviewed.
