Non-Gaussian Perron–Frobenius Latent Filter
Implementation & benchmark of arXiv:2607.26632 — An extended Perron-Frobenius operator filter for nonlinear state estimation
Source paper: An extended Perron-Frobenius operator filter for nonlinear state estimation arXiv:2607.26632 ⓘ · analyzed Aug 31, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Replace Gaussian covariance propagation in a neural state-space model with a finite Perron–Frobenius operator acting on coefficients of a learned density basis. A neural encoder maps observations to latent states, while an eDMD-derived matrix transports the full coefficient vector and supports multimodal or skewed uncertainty. This creates a cheap deterministic uncertainty layer that can be rolled forward for long horizons without repeatedly sampling particles.
Formulas
Mathematical statement
For a measurable nonlinear map $x_{k+1}=T(x_k)$ and density $p_k$, the Perron–Frobenius operator satisfies $p_{k+1}=\mathscr{P}p_k$ and is defined by $\int_{T^{-1}(A)}f(x)\,d\mu=\int_A(\mathscr{P}f)(x)\,d\mu$ for every measurable set $A$. Choose nonnegative basis functions $\{\psi_i\}_{i=1}^{m}$ and approximate a density by $p(x)\approx\sum_{i=1}^{m}c_i\psi_i(x)$, where $c_k\in\mathbb{R}^{m}$ is the density-coefficient vector. Learn a matrix $K_P$ such that $c_{k+1}\approx K_Pc_k$ from trajectory or particle-density snapshots. If $C=[c_0,\ldots,c_{N-1}]$ and $Y=[c_1,\ldots,c_N]$, a ridge estimate is $K_P=YC^\top(CC^\top+\lambda I)^{-1}$, with regularization $\lambda>0$. Enforce probability-mass preservation using $q_i=\int_X\psi_i(x)d\mu$ and $q^\top K_P=q^\top$. The spectral-radius condition $\rho(K_P)\leq1$ is the discrete-time stability signature; eigenvalues with modulus greater than one predict exponentially growing density coefficients.
Implementation notes
Integrate this as the uncertainty state of a small neural state-space model. Use an encoder $z_k=E_\theta(o_{0:k})$ for the observed latent state and represent uncertainty over $z_k$ with coefficients $c_k$ in a basis of radial functions, tensor-product splines, or Gaussian radial basis functions. Use nonnegative normalized basis functions so that the reconstructed density is nonnegative and has unit mass. First collect short trajectories from a known simulator or from a trained deterministic latent model. At each time, draw particles from the empirical latent distribution, fit coefficients $c_k$ by nonnegative least squares, and construct $C$ and $Y$. Compute $K_P$ with the ridge formula above, then project or optimize it onto the affine mass-preserving set $q^\top K_P=q^\top$; optionally clip unstable eigenvalues to modulus $1-\epsilon$. During inference, update the neural mean state with the learned latent transition and update uncertainty by $c_{k+1}=K_Pc_k$, reconstructing density values only when needed. Pseudocode: encode observations; initialize $c_0$; for each horizon step, set $c\leftarrow K_Pc$; renormalize coefficients; decode density moments or samples; and score the observation likelihood. The paper mechanism is the Perron–Frobenius transport and flexible eDMD basis. Empirical quantities are basis coefficients, $K_P$, and the spectral radius. The first cheap experiment should use a 2-D nonlinear double-well or Henon-map dataset, comparing an EKF-GRU, particle filter, and this model at equal compute budgets. Measure held-out negative log likelihood, Wasserstein distance, and mass error over 1, 5, 10, and 25 steps. The quantitative prediction is that density coefficient norms remain bounded when the fitted $\rho(K_P)<1$, while models with $\rho(K_P)>1$ show exponential coefficient growth; the asymptotic growth rate should approach $\log\rho(K_P)$, and mass error should remain near numerical tolerance after enforcing $q^\top K_P=q^\top$.
Verification
Stage 1 · Toy mechanism gate: Passed ✓
Stage 2 · Mechanism transferred to benchmark: Confirmed ✓
Stage 2 · Practical benchmark result: Significantly worse ✗
Methodology: 8 paired seeds, permutation test (p<0.05) against a learning-rate-tuned baseline. How verification works
Stage 1 — Mechanism check agent confidence 8/10
Built a finite nonnegative RBF Perron–Frobenius latent-density filter with ridge operator learning and affine mass-preserving projection. The spectral sweep confirmed the predicted boundary gamma*=1/0.93=1.0753: gamma=1.075 gave rho=0.99975 and bounded coefficients, while gamma=1.10 gave rho=1.023 and growth; observed log-norm slopes matched log(rho) to numerical precision. Mass error fell from 4.51e-3 before projection to 6.66e-16 after projection. On the nonlinear multimodal toy map, PF W1 was lower than Gaussian closure at all tested horizons and separations, but the learned operator had fitted spectral radius 1.083, so long-horizon stability was not automatically achieved.
- Agent confidence
- 8/10
- Baseline
- Gaussian moment closure W1 at horizons 1,5,10,25 = [0.4678, 0.5405, 0.5722, 0.5897], mean 0.5426
- Idea
- RBF PF W1 at horizons 1,5,10,25 = [0.1501, 0.1746, 0.2342, 0.7857], mean 0.3361; separation sweep PF W1=[0.1073,0.1322,0.1708,0.1855] versus Gaussian=[0.4696,0.5226,0.5422,0.5390]; projected mass error=6.66e-16; fitted rho(K)=1.0832
Limitations: Only a 1-D nonlinear toy map was tested; no neural encoder, GRU, particle-filter baseline, 2-D Henon/double-well system, held-out observation likelihood, FLOP benchmark, or eigenvalue clipping experiment was included. The spectral sweep uses a controlled diagonal operator, so its exact slope agreement is a verification of the stated linear-algebra claim rather than evidence that noisy eDMD estimates are always stable.
How to run: python3 pf_latent_experiment.py > results.json && cat results.json
Stage 2 — Benchmark vs. tuned baseline (arXiv:2607.26632)
Significantly WORSE than the tuned baseline (+492.7%, p=0.0081, wins 0 / 8 paired seeds).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0003
- Idea mean
- 0.0018
- Effect (Δ)
- 0.0015 (+492.7%; negative = idea better)
- Wins
- 0 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- n/a
- Mechanism
- Confirmed ✓
- Practical effect
- Hurts
- Baseline tuning
- swept over 0 configs
Only the built-in dynamics track was tested; no long-horizon rollout likelihood, particle-filter baseline, or alternative PF basis sizes were evaluated.
How to run: python3 stage2_pf_bench.py
Verdict computed by deterministic test code from paired-seed statistics — not by the language model.
Stage 2 — Benchmark latest Failed ✗
Agent confidence: 10/10
Implemented the PF latent filter as a nonnegative unit-mass 25-component RBF expectation head on the matched dynamics GRU benchmark. Baseline MSE was 0.00029596 versus idea MSE 0.00175427; paired delta was +0.00145831 with permutation p=0.0081 and 0/8 idea wins, so the idea was significantly worse. The mechanism signature was confirmed: trained coefficient mass error averaged 2.16e-7, maximum coefficient norm was 0.768, and the spectral sanity slope matched log(rho) within 7.66e-16.
- Baseline
- best_cfg={lr:0.01, weight_decay:0.0}; mean MSE=0.0002959608482; std=0.0001316782688
- Comparison
- delta_mean=0.0014583070642, p_value=0.0081, idea_wins=0/8, verdict=idea worse (significant)
- Idea
- best_cfg={lr:0.01, weight_decay:0.0}; mean MSE=0.0017542679125; std=0.0004301555307
Benchmark result
Significantly WORSE than the tuned baseline (+492.7%, p=0.0081, wins 0 / 8 paired seeds).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0003
- Idea mean
- 0.0018
- Effect (Δ)
- 0.0015 (+492.7%; negative = idea better)
- Wins
- 0 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- n/a
- Mechanism
- Confirmed ✓
- Practical effect
- Hurts
- Baseline tuning
- swept over 0 configs
Only the built-in dynamics track was tested; no long-horizon rollout likelihood, particle-filter baseline, or alternative PF basis sizes were evaluated.
How to run: python3 stage2_pf_bench.py
Artifacts
- bench_report.json 7.6 KB View Raw
- math_check.json 0.2 KB View Raw
- pf_latent_experiment.py 5.2 KB View Raw
- report.md 1.8 KB View
- report_bench_2026-08-31T181415.md 3.4 KB View
- results.json 2.5 KB View Raw
- run_output.json 7.6 KB View Raw
- stage2_pf_bench.py 5.4 KB View Raw