Contraction-budgeted MPPI policy head
Implementation & benchmark of arXiv:2607.06945 — Stochastic Stability of Nonlinear MPPI via Contraction Theory and Control Lyapunov Functions
Source paper: Stochastic Stability of Nonlinear MPPI via Contraction Theory and Control Lyapunov Functions arXiv:2607.06945 ⓘ · analyzed Aug 30, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Attach a sampling-based rollout correction head to a neural policy or learned world model, and adapt its temperature and number of rollouts so that approximation error stays within the contraction margin of a nominal policy. The controller should spend samples only when the local state-dependent error gain is close to violating the small-gain condition, instead of using a fixed MPPI sample count everywhere.
Formulas
Mathematical statement
The paper decomposes MPPI action approximation error as \(\|u^{\mathrm{MPPI}}_k-\pi^*(x_k)\|\leq \beta_\infty\|x_k-x^*\|+e_M(\eta)\), with \(e_M(\eta)=\beta_0+\varepsilon_M(\eta)\). Here \(u^{\mathrm{MPPI}}_k\) is the sampled controller action, \(\pi^*(x_k)\) is a nominal stabilizing policy, \(x_k\) is the current state, \(x^*\) is the equilibrium, \(\beta_\infty\) is the state-dependent approximation gain, \(\beta_0\) is the infinite-sample finite-temperature bias, and \(\varepsilon_M(\eta)\) is the finite-sample Monte Carlo error for \(M\) rollouts and confidence parameter \(\eta\). The paper gives \(\varepsilon_M(\eta)=O(M^{-1/2})\), while lowering MPPI temperature \(\lambda\) reduces \(\beta_0\). Its small-gain condition is \(\Phi(\beta_\infty)=\sqrt{\bar\mu/\mu}\,L_u\beta_\infty\leq(1-\beta)/2\), where \(\mu\) and \(\bar\mu\) are lower and upper bounds on the contraction metric, \(L_u\) is the dynamics' local Lipschitz constant with respect to action, and \(\beta<1\) is the nominal contraction factor. The neural adaptation uses a learned policy \(\pi_\theta\) as the nominal reference and enforces \(\sqrt{\bar\mu/\mu}L_u\widehat\beta_\infty+\widehat e_M\leq(1-\widehat\beta)/2\).
Implementation notes
(1) Integration point: use a neural policy \(\pi_\theta(x)\) inside a model-based RL or world-model controller. At every state, generate action perturbations around the network's proposed action, roll them through a learned dynamics model, score each trajectory, and form an MPPI-weighted action. The nominal reference is \(\pi_\theta\); the output is the corrected action \(u^{\mathrm{MPPI}}\). This is primarily an inference-time module, with optional training losses for improving the contraction margin.
(2) Pseudocode:
input x, policy pi_theta, dynamics f_phi, temperature lambda
a0 = pi_theta(x)
for j = 1,...,M:
sample delta_j[0:H-1]
set a_j[t] = pi_theta(x_j[t]) + delta_j[t]
roll out x_j[t+1] = f_phi(x_j[t], a_j[t])
compute trajectory cost J_j
weights w_j = softmax(-J_j / lambda)
u = pi_theta(x) + sum_j w_j * delta_j[0]
estimate beta_inf, L_u, and beta from recent transitions
e_M = beta0_hat(lambda) + c_hat * sqrt(log(1/eta) / M)
if sqrt(mu_bar/mu)*L_u*beta_inf_hat + e_M > (1-beta_hat)/2:
increase M, or decrease lambda if beta0_hat decreases
execute u
(3) Estimate the mathematical quantities empirically. Estimate \(L_u\) with finite differences through the learned dynamics: \(\widehat L_u=\max_i\|f_\phi(x_i,u_i+\delta u_i)-f_\phi(x_i,u_i)\|/\|\delta u_i\|\). Estimate \(\widehat\beta_\infty\) as a robust upper-quantile slope of \(\|u^{\mathrm{MPPI}}-\pi_\theta(x)\|\) versus \(\|x-x^*\|\). Estimate \(\widehat\beta\) from the 95th-percentile ratio of successive state distances under the nominal policy. Estimate \(\widehat c\) by running independent rollout batches and fitting action-estimate standard deviation against \(1/\sqrt M\). Estimate \(\widehat\beta_0(\lambda)\) using a very large rollout batch at each candidate temperature. Initially use Euclidean state distance, so \(\bar\mu/\mu=1\); later replace it with bounds from a learned positive-definite metric.
(4) First cheap experiment: use a 2-layer MLP policy and a small learned ensemble dynamics model on Pendulum-v1 or CartPole swing-up. Compare fixed-sample MPPI, fixed-temperature MPPI, and this adaptive controller at equal average rollout FLOPs. Measure success rate, action variance, catastrophic departures from a safe state set, reward, and executed rollouts. The expected signal is fewer unstable episodes and lower action variance at the same average sample count, with adaptive rollout increases concentrated near difficult states. At equal failure rate, it should require fewer rollouts than a conservative fixed-sample baseline.
Verification
Stage 1 · Toy mechanism gate: Passed ✓
Stage 2 · Mechanism transferred to benchmark: Not reproduced ✗
Stage 2 · Practical benchmark result: No measurable effect
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 contraction-budgeted MPPI toy controller with adaptive rollout allocation and numerical checks of the claimed mechanism. The predicted Monte Carlo exponent (-0.5) was observed as -0.523, the quadratic temperature-bias formula matched closely with bias/temperature correlation 0.996, the small-gain boundary was exactly detected at beta_inf=0.15, and budget size scaled with margin^-2 (observed exponent -1.988). The adaptive controller used 49.1 versus 128 mean rollouts with zero failures, but had worse toy reward (-1.188 versus -0.814), so the mechanism manifested without an overall performance win in this setup.
- Agent confidence
- 9/10
- Baseline
- mean reward -0.8140; failure rate 0.0%; mean rollouts 128.0; total rollouts 819200
- Idea
- mean reward -1.1882; failure rate 0.0%; mean rollouts 49.15; total rollouts 314532; MC slope -0.523 vs predicted -0.5; temperature-bias correlation 0.996; small-gain threshold 0.150 exact; budget slope -1.988 vs predicted -2
Limitations: This is an analytically structured scalar toy rather than Pendulum, CartPole, a neural policy, or a learned world model. It does not test real wall-clock/FLOP performance, learned estimates of beta_inf/L_u/beta, confidence calibration, process-noise robustness beyond the toy noise model, or whether adaptive sampling improves reward at matched rollout budget.
How to run: python3 experiment.py
Stage 2 — Benchmark vs. tuned baseline (arXiv:2607.06945)
No significant difference vs. the tuned baseline (+0.1%, p=0.1861, wins 2 / 8 paired seeds).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0009
- Idea mean
- 0.0009
- Effect (Δ)
- 0 (+0.1%; negative = idea better)
- Wins
- 2 / 8 paired seeds
- p-value
- 0.1861 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- n/a
- Mechanism
- Not confirmed ✗
- Practical effect
- No effect
- Baseline tuning
- swept over 3 configs
The built-in dynamics task is supervised next-state prediction rather than closed-loop reward or failure-rate evaluation. The head uses a hand-specified local pendulum surrogate rather than a learned world model, and the adaptive budget saturated at M=32. No wall-clock or FLOP advantage was established.
How to run: python3 bench_experiment.py
Verdict computed by deterministic test code from paired-seed statistics — not by the language model.
Stage 2 — Benchmark latest Failed ✗
Agent confidence: 9/10
Built and evaluated a contraction-budgeted MPPI-style correction head on the structurally matched dynamics track with independently trained identical rnn_small systems. The baseline mean test MSE was 0.0008587387 and the idea was 0.0008593460, giving paired delta +6.07e-7 and permutation p=0.1861; therefore there was no significant win. Budget scaling matched the predicted -2 exponent, but the Monte Carlo sanity check observed -0.976 rather than -0.5, so the mechanism signature is unconfirmed.
- Baseline
- Best sweep config lr=0.0045, lambda=0.3, M=32; 8-seed mean MSE 0.0008587387; std 0.0002165167.
- Idea
- Best tested config lr=0.0045, lambda=0.3, M=32; 8-seed mean MSE 0.0008593460; std 0.0002166154; paired delta +6.07e-7; p=0.1861; 2/8 seed wins; mean correction 0.04998; mean rollouts 32.
Benchmark result
No significant difference vs. the tuned baseline (+0.1%, p=0.1861, wins 2 / 8 paired seeds).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0009
- Idea mean
- 0.0009
- Effect (Δ)
- 0 (+0.1%; negative = idea better)
- Wins
- 2 / 8 paired seeds
- p-value
- 0.1861 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- n/a
- Mechanism
- Not confirmed ✗
- Practical effect
- No effect
- Baseline tuning
- swept over 3 configs
The built-in dynamics task is supervised next-state prediction rather than closed-loop reward or failure-rate evaluation. The head uses a hand-specified local pendulum surrogate rather than a learned world model, and the adaptive budget saturated at M=32. No wall-clock or FLOP advantage was established.
How to run: python3 bench_experiment.py
Artifacts
- bench_experiment.py 5.7 KB View Raw
- bench_report.json 3.0 KB View Raw
- experiment.py 4.5 KB View Raw
- report.md 1.6 KB View
- report_bench_2026-08-30T212730.md 3.3 KB View
- results.json 2.1 KB View Raw