Identifiability-Gated Latent Dynamics
Implementation & benchmark of arXiv:2608.00466 — SPIRAL-PO: Symbolic Identification of Partially Observed Nonlinear Dynamics with Application to Rotating Machinery
Source paper: SPIRAL-PO: Symbolic Identification of Partially Observed Nonlinear Dynamics with Application to Rotating Machinery arXiv:2608.00466 ⓘ · analyzed Aug 31, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Augment a latent neural state-space model with an observable-coordinate residual that is first learned flexibly and then projected onto a constrained library of interpretable coupling terms. Train or collect data only after checking that the trajectory sufficiently excites the candidate terms; this prevents a latent model from fitting arbitrary hidden-state effects that are unidentifiable from the observations.
Formulas
Mathematical statement
Let $z_o(t)\in\mathbb{R}^{d_o}$ be observed coordinates, $z_h(t)\in\mathbb{R}^{d_h}$ hidden coordinates, $u(t)$ known inputs, and $p$ physical parameters. The measured dynamics are decomposed as $\dot z_o=F_o^{\mathrm{obs}}(z_o,u,p)+\Delta(z_o,z_h,u,p)$. Represent the coupling as $\Delta\approx B\Phi(z_o,u)$, where $\Phi\in\mathbb{R}^{K}$ is a fixed candidate-library vector and $B\in\mathbb{R}^{d_o\times K}$ is learned. Identifiability of the projected coefficients requires a persistently rich feature matrix $\Phi_T=[\Phi(t_1)^\top;\ldots;\Phi(t_N)^\top]$; a directly testable sufficient condition is $\lambda_{\min}(N^{-1}\Phi_T^\top\Phi_T)>\gamma>0$. If this eigenvalue is near zero, different hidden couplings produce the same observed trajectory and no estimator can reliably distinguish them. Use a neural latent state $h$ for reconstructing hidden effects, but apply the library constraint only to the observable derivative residual.
Implementation notes
Use a latent neural ODE or recurrent state-space model. The encoder maps a recent observation window $y_{t-L:t}$ to a latent hidden state $h_t$; the decoder predicts $y_t$, while the transition contains two branches: a known or learned measured-coordinate base $F_o^{obs}(y_t,u_t)$ and a coupling branch $B\Phi(y_t,u_t)$. A separate small MLP may predict latent-state evolution $\dot h=G_\theta(h,y,u)$, but its contribution to the observed derivative must pass through the constrained coupling branch. Pseudocode: (1) encode $h_t$; (2) compute $r_t=\dot y_t-F_o^{obs}(y_t,u_t)$ using finite differences or an automatic-differentiation observation model; (3) compute $\phi_t=\Phi(y_t,u_t)$; (4) update the neural model on prediction loss plus $\|r_t-B\phi_t\|^2$; (5) every $M$ epochs solve the ridge or elastic-net regression for $B$ and zero coefficients whose confidence intervals include zero; (6) reject a symbolic update when $\lambda_{\min}(N^{-1}\Phi^\top\Phi)<\gamma$. Quantities inherited from the paper are the measured/hidden partition and residual decomposition. Estimate derivatives, feature covariance, standard errors, and $\gamma$ empirically using minibatch or held-out trajectories. The first cheap experiment is a Duffing-like partially observed oscillator or CartPole with one hidden velocity, comparing a vanilla latent neural ODE against this model on trajectory prediction. Sweep excitation: constant input, random input, and a frequency/speed sweep. The quantitative prediction is that constant-input data will yield a near-zero minimum Gram eigenvalue and unstable coefficient estimates across seeds, whereas the sweep will increase $\lambda_{\min}$ and sharply reduce coefficient variance; prediction error and coefficient variance should improve primarily once $\lambda_{\min}>\gamma$, not smoothly with training time.
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 9/10
Built a reproducible identifiability-gated observable residual estimator with library phi=[1,x,u,xu], Gram-eigenvalue rejection, and a flexible polynomial baseline. The mechanism manifested: constant input produced lambda_min≈0 and 0% acceptance; weak-excitation scaling followed the predicted lambda_min proportional to amplitude^2 with observed exponent 1.994 versus predicted 2.0; the gate crossed between amplitudes 0.1 and 0.3, with interpolated threshold 0.215. Accepted coefficient uncertainty also followed the predicted 1/sqrt(N lambda_min) behavior, with normalized values 0.53–0.59, and the gated model had lower test MSE than the flexible baseline at N=500 (0.00642 vs 0.00689).
- Agent confidence
- 9/10
- Baseline
- Degree-5 unconstrained polynomial residual model: test MSE 0.00643 constant-input, 0.00689 at amplitude 0.3, and 0.01695 at N=125.
- Idea
- Gated library estimator: constant-input acceptance 0%; amplitude-0.3 acceptance 100%, coefficient RMSE 0.0142, test MSE 0.00642; small-amplitude Gram scaling exponent 1.994 vs predicted 2.0; normalized information-scaling spread 0.53–0.59.
Limitations: This is a controlled linear residual toy study rather than a neural latent ODE or recurrent state-space model, and it uses synthetic measured coordinates with directly observed residuals rather than finite-difference trajectory derivatives. No real physical dataset, hidden-state encoder/decoder, elastic-net confidence intervals, or long-horizon latent prediction was tested; the flexible baseline is a fixed degree-5 ridge model.
How to run: python3 identifiability_experiment.py
Stage 2 — Benchmark vs. tuned baseline (arXiv:2608.00466)
Significantly WORSE than the tuned baseline (+76945.6%, p=0.0081, wins 0 / 8 paired seeds).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0001
- Idea mean
- 0.0632
- Effect (Δ)
- 0.0632 (+76945.6%; negative = idea better)
- Wins
- 0 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±2814.2%
- Mechanism
- Confirmed ✓
- Practical effect
- Hurts
- Baseline tuning
- swept over 3 configs
Only the built-in dynamics track was tested. No learned latent encoder/decoder or extended long-horizon latent rollout was added beyond the fixed benchmark task. The residual library and auxiliary-loss weight were not broadly swept; the full 8-seed paired protocol and shared learning-rate parity were completed.
How to run: python3 bench_stage2.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 identifiability-gated observable residual library as an end-to-end auxiliary loss on the matched dynamics benchmark using the same rnn_small architecture and paired training protocol. The mechanism signature was confirmed at neural-network scale: lambda_min=0.489>gamma=0.001, gate accepted, and predicted-versus-observed residual correlation was 0.886. However, the idea was significantly worse on independent pendulum test MSE (0.06324 vs 0.0000821; paired delta +0.06316; permutation p=0.0081), so it is not a performance win.
- Baseline
- rnn_small, best lr=0.01; 8-seed test MSE mean 0.0000820874, std 0.0000608367
- Idea
- rnn_small plus gated library residual loss, best lr=0.01 and gamma=0.001; 8-seed test MSE mean 0.0632447, std 0.00254583; paired delta +0.0631626, 0/8 wins, permutation p=0.0081
- Mechanism signature
- map[accepted:true confirmed:true gamma:0.001 lambda_min:0.48913857340812683 library_fit_rmse:0.18720942735671997 observed_residual_std:3.6180782318115234 predicted_observed_residual_corr:0.8859931981541005 predicted_residual_std:0.471657395362854]
Benchmark result
Significantly WORSE than the tuned baseline (+76945.6%, p=0.0081, wins 0 / 8 paired seeds).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0001
- Idea mean
- 0.0632
- Effect (Δ)
- 0.0632 (+76945.6%; negative = idea better)
- Wins
- 0 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±2814.2%
- Mechanism
- Confirmed ✓
- Practical effect
- Hurts
- Baseline tuning
- swept over 3 configs
Only the built-in dynamics track was tested. No learned latent encoder/decoder or extended long-horizon latent rollout was added beyond the fixed benchmark task. The residual library and auxiliary-loss weight were not broadly swept; the full 8-seed paired protocol and shared learning-rate parity were completed.
How to run: python3 bench_stage2.py
Artifacts
- bench_report.json 2.9 KB View Raw
- bench_stage2.py 6.7 KB View Raw
- identifiability_experiment.py 4.8 KB View Raw
- report.md 1.8 KB View
- report_bench_2026-08-31T152243.md 5.0 KB View
- results.json 4.6 KB View Raw