# Disturbance-Augmented Neural State Space

- ID: 1208
- Canonical URL: https://synthcore.org/idea/1208/disturbance-augmented-neural-state-space
- API JSON: https://synthcore.org/api/idea/1208.json
- API Markdown: https://synthcore.org/api/idea/1208.md
- Verification status: failed_benchmark
- Source: [arXiv:2607.20939](https://arxiv.org/abs/2607.20939)
- Category: dynamics
- Solves: stability, accuracy, generalization
- ML areas: rnn, ssm, world-model, training-dynamics
- Math tags: control-theory, dynamical-systems, stochastic-processes, linear-algebra
- Ratings: usefulness 7/10; difficulty 5/10; novelty 6/10

## Idea description

Augment a neural recurrent or state-space model with an explicit slowly varying disturbance state that absorbs contact effects, friction, hysteresis, actuator mismatch, and other systematic residuals. The network predicts nominal dynamics, while the disturbance channel provides offset-free correction without forcing the main model to memorize every operating-condition-dependent bias.

## Mathematical statement

The paper starts from the mechanical decomposition $M(\kappa)\ddot{\kappa}+C(\kappa,\dot{\kappa})\dot{\kappa}+K(\kappa)=u+d_{\mathrm{cat}}$, where $\kappa$ is curvature, $u$ is tendon input, $M$ is effective inertia, $C$ is damping, $K$ is stiffness, and $d_{\mathrm{cat}}$ aggregates contact, friction, backlash, and hysteresis. Transfer this decomposition to a learned discrete-time model $x_{t+1}=f_\theta(x_t,u_t)+E d_t$, $y_t=g_\theta(x_t)$, with disturbance evolution $d_{t+1}=\rho d_t+w_t$. Here $x_t$ is the learned latent state, $u_t$ is the input, $y_t$ is the observed output, $E$ maps disturbance into state dynamics, $\rho\in[0,1]$ controls disturbance persistence, and $w_t$ is process noise. An augmented Kalman filter or differentiable recurrent observer estimates $[x_t,d_t]$ from observations. For $\rho$ close to one, persistent modeling bias is represented as a state rather than repeatedly injected prediction error. The measurable signature is offset decay: after a constant unknown bias is introduced, the steady-state output error should approach zero, whereas the unaugmented model retains a nonzero residual.

## Key formulas

- $$M(\kappa)\ddot{\kappa}+C(\kappa,\dot{\kappa})\dot{\kappa}+K(\kappa)=u+d_{\mathrm{cat}}$$
- $$x_{t+1}=f_\theta(x_t,u_t)+E d_t,\qquad d_{t+1}=\rho d_t+w_t,\qquad y_t=g_\theta(x_t)+v_t$$
- $$z_{t+1}=\begin{bmatrix}f_\theta(x_t,u_t)+E d_t\\ \rho d_t\end{bmatrix}+\begin{bmatrix}0\\w_t\end{bmatrix},\qquad z_t=\begin{bmatrix}x_t\\d_t\end{bmatrix}$$
- $$\lim_{t\to\infty}\|y_t-y_t^{\mathrm{target}}\|\approx 0\quad\text{under a constant unknown bias, provided the augmented pair is observable and the observer is stable}$$

## Implementation notes

1. Integration point: use a small GRU, MLP state-space model, or diagonal SSM as the nominal predictor $f_\theta$. Add a disturbance vector $d_t\in\mathbb{R}^r$, initially with $r=1$ or $r=4$, injected through a learned matrix $E$ into the latent transition or output head. Maintain the augmented state $z_t=[x_t;d_t]$ with an observer update after each measurement. 2. Pseudocode: predict $x^-_{t+1}=f_\theta(x_t,u_t)+Ed_t$ and $d^-_{t+1}=\rho d_t$; compute $y^-_{t+1}=g_\theta(x^-_{t+1})$; form innovation $e=y_{t+1}-y^-_{t+1}$; update $[x_{t+1},d_{t+1}]=[x^-_{t+1},d^-_{t+1}]+Le$, where $L$ is a learned or Kalman-style gain. Train with multi-step prediction loss plus $\lambda_d\|d_{t+1}-\rho d_t\|^2$ and constrain the observer transition spectral radius below one. 3. Computed versus estimated: the disturbance decomposition and persistence mechanism are taken from the paper; $E$, $L$, $\rho$, and the neural dynamics are estimated from data. 4. First cheap experiment: train a GRU on Pendulum, CartPole, or a one-dimensional mass-spring dataset, then add an unobserved constant force and slowly varying sinusoidal force at test time. Compare a standard GRU, an augmented model with $\rho=0.99$, and one with learned $\rho$. The quantitative prediction is that the augmented model's post-perturbation mean output bias will fall by at least 80%, and with observer correction its residual will converge near sensor-noise level. With correction disabled, disturbance magnitude should decay approximately as $\rho^t$. Sweep observer gain and report divergence when the estimated augmented-transition spectral radius reaches one.

## Verification

- Status: failed_benchmark
- Mechanism evidence: yes
- Mechanism confirmed: no
- Practical verdict: inconclusive
- Verdict: Built a scalar disturbance-augmented state-space observer and verified the mechanism numerically. The three predicted behaviors manifested: disturbance decay matched rho^t exactly, the observed stability boundary was lx≈2.22 versus the analytic 1+1/a≈2.22, and rho=0.99 reduced constant-bias RMSE by 95.8% versus the nominal observer. This is a clear toy-level win, though not yet evidence for a learned neural model.

### Mechanism check

- Verdict: Built a scalar disturbance-augmented state-space observer and verified the mechanism numerically. The three predicted behaviors manifested: disturbance decay matched rho^t exactly, the observed stability boundary was lx≈2.22 versus the analytic 1+1/a≈2.22, and rho=0.99 reduced constant-bias RMSE by 95.8% versus the nominal observer. This is a clear toy-level win, though not yet evidence for a learned neural model.
- Confidence: 9/10
- Limitations: Only a scalar, known nominal linear system was tested; there was no trained GRU/MLP, learned rho, multidimensional disturbance, slowly varying sinusoidal disturbance, FLOP/speed comparison, or broad gain/noise sweep. The persistence verification is an exact recurrence check rather than an independently simulated noisy observer trajectory.

### Practical benchmark

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

## Artifacts

- [bench_experiment.py](https://synthcore.org/code/488/bench_experiment.py)
- [bench_report.json](https://synthcore.org/code/488/bench_report.json)
- [experiment.py](https://synthcore.org/code/488/experiment.py)
- [report.md](https://synthcore.org/code/488/report.md)
- [report_bench_2026-08-31T153618.md](https://synthcore.org/code/488/report_bench_2026-08-31T153618.md)
- [results.json](https://synthcore.org/code/488/results.json)
- [Download all files as ZIP](https://synthcore.org/download/488)

## Disclaimer

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