Cyclic Momentum Latents
Implementation & benchmark of arXiv:2607.12143 — Generating Physically Plausible Parachute Dynamics with Deep Generative Modeling
Source paper: Generating Physically Plausible Parachute Dynamics with Deep Generative Modeling arXiv:2607.12143 ⓘ · analyzed Aug 30, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Add a learnable cyclic-coordinate mechanism to latent dynamics so that selected latent coordinates do not enter the Hamiltonian and their conjugate momenta become conserved. This provides an explicit dimensionality-discovery and invariance bias, encouraging the model to represent nuisance or symmetry directions compactly instead of spending independent dynamics capacity on them.
Formulas
Mathematical statement
Let $q_i$ be a candidate latent coordinate and $p_i$ its conjugate momentum. In Hamiltonian mechanics, if $H_\theta$ is independent of $q_i$, then $q_i$ is cyclic and $\dot p_i=-\partial H_\theta/\partial q_i=0$, so $p_i$ is conserved. Introduce a differentiable gate $m_i\in[0,1]$ indicating that coordinate $q_i$ should be cyclic, and penalize Hamiltonian dependence with $L_{cyc}=\sum_i m_i\mathbb{E}[(\partial H_\theta/\partial q_i)^2]$. To prevent every coordinate from becoming cyclic, add a budget term $\lambda_b(\sum_i m_i-r)^2$, where $r$ is the desired number of cyclic coordinates. The conservation diagnostic is $\delta p_i(T)=|p_i(T)-p_i(0)|$, which should remain near integration and optimization error for selected coordinates.
Implementation notes
1. Integration point: attach a gate vector $m$ to the latent Hamiltonian of a world model, sequential VAE, or recurrent predictor. Use a sigmoid gate $m_i=\sigma(a_i/\tau)$ during training and anneal temperature $\tau$ so the representation becomes nearly discrete. Set a target number $r$ of cyclic coordinates, or use an $L_1$ penalty when the number is unknown. 2. Pseudocode: encode each trajectory into $(q,p)$; evaluate $H_\theta$; use autodiff to obtain every $\partial H/\partial q_i$; add $\lambda_{cyc}\sum_i m_i(\partial H/\partial q_i)^2$ to the prediction loss; propagate states with leapfrog; periodically report the variance and drift of each $p_i(t)$. Warm up with $\lambda_{cyc}=0$, then ramp it linearly after the predictor learns basic dynamics. 3. Computed from the mechanism: the cyclicity penalty follows directly from Hamilton's equation; gate values, momentum conservation, and effective latent dimension are estimated from data. The budget $r$ is a modeling choice. 4. First cheap experiment: use a synthetic oscillator with one active coordinate and one nuisance coordinate, then test a 4D latent model on pendulum trajectories under rotations or changed initial conditions. Compare a Hamiltonian model without gates, a fixed penalty on all coordinates, and the gated model. The prediction is a sharp separation in $\mathbb{E}[\delta p_i(T)]$: selected coordinates should have near-zero momentum drift, while noncyclic coordinates retain nonzero force gradients. Increasing $\lambda_{cyc}$ should produce a transition from dense to sparse coordinate usage; beyond the point where the true active coordinate is incorrectly gated, rollout error should increase sharply. Measure whether the discovered cyclic count matches $r$ and whether conservation error reaches the integrator's numerical-error floor.
Verification
Stage 1 · Toy mechanism gate: Passed ✓
Stage 2 · Mechanism transferred to benchmark: Not reproduced ✗
Stage 2 · Practical benchmark result: Significant win ✓
Methodology: 8 paired seeds, permutation test (p<0.05) against a learning-rate-tuned baseline. How verification works
How to read this: The implementation beat the baseline, but the claimed mechanism did not reproduce at benchmark scale. The gain may come from another effect; treat the cause as unresolved.
Stage 1 — Mechanism check agent confidence 8/10
Built a reusable PyTorch gated Hamiltonian module with sigmoid cyclic gates, autodiff cyclicity and budget penalties, leapfrog integration, and momentum-drift diagnostics. The mechanism manifested: cyclic coordinates had zero measured momentum drift, the regularized optimum matched k*=k_true/(1+lambda*m) within 1.9e-14, and suppression disappeared at zero penalty or zero gate. A small noisy force-fitting comparison also reduced nuisance force magnitude 5x and test force MSE about 22x, though this is only a toy signal.
- Agent confidence
- 8/10
- Baseline
- Nuisance |k|=0.01074; test force MSE=1.164e-4; active k=-1.00077
- Idea
- Nuisance |k|=0.00215; test force MSE=5.229e-6; active k=-1.00077; cyclic momentum drift=0.0; max analytic scaling error=1.87e-14
Limitations: Not tested on a learned encoder, sequential VAE, high-dimensional world model, pendulum trajectories, changed initial conditions, long-horizon rollout accuracy, learned gate discovery, or GPU training. The toy comparison uses a separable analytic Hamiltonian and a fixed nuisance gate rather than discovering gates from raw trajectories.
How to run: python3 cyclic_momentum_experiment.py
Stage 2 — Benchmark vs. tuned baseline (arXiv:2607.12143)
Beats the tuned baseline by 1.3% (p=0.0081, wins 8 / 8 paired seeds; metric: lower is better).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0008
- Idea mean
- 0.0008
- Effect (Δ)
- -0 (−1.3%; negative = idea better)
- Wins
- 8 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±0.7%
- Mechanism
- Not confirmed ✗
- Practical effect
- Helps
- Baseline tuning
- swept over 3 configs
Short-horizon actuated-pendulum prediction was tested rather than a learned encoder or long-horizon Hamiltonian rollout. Gate discovery was degenerate, so momentum conservation for genuinely selected coordinates was not tested. Temperature annealing, alternative gate initialization, and larger world-model experiments were not tested.
How to run: cd /home/maxwelhelp/all/math2nn/experiments/exp785_cyclic-momentum-latents && /home/maxwelhelp/main/bin/python3 bench_cyclic_dynamics.py
Verdict computed by deterministic test code from paired-seed statistics — not by the language model.
Stage 2 — Benchmark latest Worked ✓
Agent confidence: 7/10
Implemented Cyclic Momentum Latents as a training-time Hamiltonian cyclicity regularizer on the shared rnn_small dynamics model and ran the full 8-seed paired protocol with a three-setting shared learning-rate sweep. Test MSE improved from 0.0007629804 to 0.0007533691, with all 8 paired wins and permutation p=0.0081, satisfying the benchmark's significant-win criterion. However, all learned gates remained below 0.5, so the intended non-degenerate cyclic-coordinate discovery mechanism was not confirmed; the gain may reflect auxiliary regularization rather than genuine learned cyclic latents.
- Baseline
- mean test MSE 0.0007629803658346646; best lr=0.006, weight_decay=0.0
- Idea
- mean test MSE 0.0007533690804848447; delta=-9.61128534981981e-06; all 8 paired wins; p=0.0081
- Mechanism
- mean gate approximately 0.401719; selected_fraction=0.0 for every seed; aggregate selected force RMS=0.0 was vacuous; confirmed=false
Benchmark result
Beats the tuned baseline by 1.3% (p=0.0081, wins 8 / 8 paired seeds; metric: lower is better).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0008
- Idea mean
- 0.0008
- Effect (Δ)
- -0 (−1.3%; negative = idea better)
- Wins
- 8 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±0.7%
- Mechanism
- Not confirmed ✗
- Practical effect
- Helps
- Baseline tuning
- swept over 3 configs
Short-horizon actuated-pendulum prediction was tested rather than a learned encoder or long-horizon Hamiltonian rollout. Gate discovery was degenerate, so momentum conservation for genuinely selected coordinates was not tested. Temperature annealing, alternative gate initialization, and larger world-model experiments were not tested.
How to run: cd /home/maxwelhelp/all/math2nn/experiments/exp785_cyclic-momentum-latents && /home/maxwelhelp/main/bin/python3 bench_cyclic_dynamics.py
Artifacts
- REPORT.md 2.0 KB View
- bench_cyclic_dynamics.py 7.4 KB View Raw
- bench_report.json 4.7 KB View Raw
- cyclic_latents.py 2.6 KB View Raw
- cyclic_momentum_experiment.py 4.2 KB View Raw
- report.md 1.4 KB View
- report_bench_2026-08-31T010737.md 4.4 KB View
- results.json 1.7 KB View Raw