# Residual-screened Koopman latent bottleneck

- ID: 1389
- Canonical URL: https://synthcore.org/idea/1389/residual-screened-koopman-latent-bottleneck
- API JSON: https://synthcore.org/api/idea/1389.json
- API Markdown: https://synthcore.org/api/idea/1389.md
- Verification status: mech_ok_no_baseline
- Source: [arXiv:2607.25086](https://arxiv.org/abs/2607.25086)
- Category: dynamics
- Solves: stability, accuracy, generalization
- ML areas: world-model, ssm, rnn, regularization
- Math tags: dynamical-systems, spectral-theory, linear-algebra, numerical-analysis
- Ratings: usefulness 7/10; difficulty 5/10; novelty 6/10

## Idea description

Add a small linear latent transition to a neural encoder-decoder and use normalized Koopman eigenfunction residuals to identify unreliable latent modes. Rather than retaining every eigenmode of the learned transition, reconstruct forecasts only from modes whose one-step residual is small on held-out temporal windows. This turns spectral decomposition into an explicit denoising and model-selection mechanism for neural state-space models.

## Mathematical statement

For a dynamical map T and Koopman operator K defined by (K phi)(x)=phi(T(x)), the paper measures an approximate eigenpair (lambda_i, phi_i) using the normalized residual ||K phi_i-lambda_i phi_i||/||phi_i||. In an encoder-based model, x_t is mapped to an observable vector z_t=phi_theta(x_t) in R^m, and the learned latent transition is K_theta in R^{m x m}. The empirical analogue of the paper's L2 residual is rho_i^2=sum_{t=1}^{N-1} w_t |u_i^* z_{t+1}-lambda_i u_i^* z_t|^2 divided by sum_t w_t |u_i^*z_t|^2, where lambda_i and u_i are an eigenvalue and right eigenvector of K_theta, u_i^* is the conjugate transpose, and w_t are optional confidence weights. Modes with residual above a validation quantile are discarded or downweighted. The local Taylor bound in the paper motivates separately monitoring whether large residuals arise from strongly nonlinear local regions.

## Key formulas

- $$\frac{\|r_i\|}{\|\phi_i\|}=\frac{\|\mathcal{K}\phi_i-\lambda_i\phi_i\|}{\|\phi_i\|}=\frac{(\int_{\mathcal{X}}|(\mathcal{K}\phi_i)(\mathsf{x})-\lambda_i\phi_i(\mathsf{x})|^2d\mu(\mathsf{x}))^{1/2}}{(\int_{\mathcal{X}}|\phi_i(\mathsf{x})|^2d\mu(\mathsf{x}))^{1/2}}$$
- $$\widehat{\rho}_i^2=\frac{\sum_{t=1}^{N-1}w_t\left|u_i^*z_{t+1}-\lambda_i u_i^*z_t\right|^2}{\sum_{t=1}^{N-1}w_t\left|u_i^*z_t\right|^2+\varepsilon}$$
- $$K_\theta=Z_+Z_-^\dagger,\qquad Z_-=[z_1,\ldots,z_{N-1}],\quad Z_+=[z_2,\ldots,z_N]$$
- $$\mathcal{L}=\mathcal{L}_{\mathrm{recon}}+\alpha\|Z_+-K_\theta Z_-\|_F^2+\beta\sum_{i=1}^{m}\operatorname{stopgrad}(s_i)\widehat{\rho}_i^2$$

## Implementation notes

Integrate this into a recurrent world model or neural state-space model. Use an encoder E_theta(x_t)=z_t in R^m, a linear latent transition z_{t+1}=K_theta z_t, and a decoder D_theta(z_t) for reconstruction. During each training epoch, collect a minibatch of contiguous sequences, form Z_- and Z_+, and compute K_theta=Z_+Z_-^dagger using a differentiable least-squares solve or a periodically refreshed detached solve. Eigendecompose K_theta to obtain eigenvalues lambda_i and right eigenvectors u_i. For numerical stability, normalize each mode denominator with epsilon and combine conjugate-paired modes into real-valued channels. Compute rho_i using the displayed empirical formula over a held-out temporal minibatch rather than only the training batch. Define s_i=1[rho_i<=tau] for hard pruning, or s_i=exp(-rho_i^2/tau^2) for soft weighting, where tau is the 75th percentile of validation residuals during warmup. Forecast by transforming z into the eigenbasis, multiplying retained mode amplitudes by lambda_i at each step, then decoding. The paper supplies the normalized residual criterion; K estimation, eigendecomposition, and tau selection are empirical choices. Start with a 2-layer MLP encoder/decoder and m=32 on Lorenz-63, pendulum, or a small video-prediction dataset. Compare a vanilla latent linear model and an unconstrained recurrent baseline at equal parameter count. Measure one-step MSE, 50-step rollout error, spectral radius, and retained-mode count. Success is lower long-horizon error at equal one-step loss, fewer active modes, and reduced sensitivity to observation noise.

## Verification

- Status: mech_ok_no_baseline
- Mechanism evidence: yes
- Mechanism confirmed: yes
- Practical verdict: inconclusive
- Verdict: Built a NumPy MVP for normalized Koopman modal residuals, quantile screening, and spectral forecasting. Clean eigenmodes had zero residual; observed residual energies closely matched analytic predictions across noise-variance and corruption-rate sweeps; screening removed the corrupted mode and reduced 50-step rollout MSE from 0.004739 to 0.0000290. This is a clear toy-setting win, but not yet evidence from a trained neural encoder-decoder.

### Mechanism check

- Verdict: Built a NumPy MVP for normalized Koopman modal residuals, quantile screening, and spectral forecasting. Clean eigenmodes had zero residual; observed residual energies closely matched analytic predictions across noise-variance and corruption-rate sweeps; screening removed the corrupted mode and reduced 50-step rollout MSE from 0.004739 to 0.0000290. This is a clear toy-setting win, but not yet evidence from a trained neural encoder-decoder.
- Confidence: 9/10
- Limitations: Only a controlled two-mode synthetic linear latent system was tested. A neural encoder-decoder, RNN baseline, equal-parameter comparison, nonlinear Lorenz dynamics, confidence weighting, complex conjugate handling, and computational overhead were not tested.

### Practical benchmark

- Paired seeds: 8
- Baseline mean: 0
- Idea mean: 0
- p-value: 0.05535
- Paired wins: 6/8
- Benchmark verdict: no significant win

## Artifacts

- [bench_report.json](https://synthcore.org/code/540/bench_report.json)
- [report.md](https://synthcore.org/code/540/report.md)
- [report_bench_2026-08-31T171917.md](https://synthcore.org/code/540/report_bench_2026-08-31T171917.md)
- [residual_screened_koopman.py](https://synthcore.org/code/540/residual_screened_koopman.py)
- [results.json](https://synthcore.org/code/540/results.json)
- [run_experiment.py](https://synthcore.org/code/540/run_experiment.py)
- [stage2_koopman_bench.py](https://synthcore.org/code/540/stage2_koopman_bench.py)
- [Download all files as ZIP](https://synthcore.org/download/540)

## Disclaimer

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