Lie-group forced dynamics layer
Implementation & benchmark of arXiv:2607.12627 — Learning Forced Multibody Dynamics on Lie Groups
Source paper: Learning Forced Multibody Dynamics on Lie Groups arXiv:2607.12627 ⓘ · analyzed Aug 30, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Replace additive neural state updates for rotations or rigid poses with a learned forced dynamical system whose configuration is updated by Lie-group multiplication. The network predicts body-frame force or acceleration in the Lie algebra, while the exponential map guarantees that every predicted configuration remains on SO(3) or SE(3).
Formulas
Mathematical statement
The paper starts from the forced Euler-Lagrange equation \(\frac{d}{dt}(\frac{\partial L}{\partial\dot q})-\frac{\partial L}{\partial q}=F\), where \(Q\) is a configuration manifold, \(L:TQ\to\mathbb{R}\) is a Lagrangian, \(q\in Q\) is configuration, \(\dot q\in T_qQ\) is velocity, and \(F:TQ\to T^*Q\) is an external covector-valued force. For a Lie-group configuration \(Q=G\), represent velocity by a Lie-algebra element \(\xi\in\mathfrak g=T_eG\) using \(\dot g=T_eL_g(\xi)\), where \(g\in G\), \(e\) is the identity, and \(L_g(h)=gh\) is left translation. The neural adaptation uses a learned force or acceleration map \(a_\theta(g,\xi,c)\in\mathfrak g\), with context \(c\) such as observations or controls, and integrates it using \(g_{k+1}=g_k\operatorname{Exp}(h\xi_k)\) and \(\xi_{k+1}=\xi_k+h\,a_\theta(g_k,\xi_k,c_k)\). Here \(h\) is the time step and \(\operatorname{Exp}:\mathfrak g\to G\) is the Lie exponential. The key property is closure: if \(g_k\in G\), then \(g_{k+1}\in G\) exactly, unlike an ambient additive update.
Implementation notes
Integrate this at the transition function of a rigid-body world model or robotics policy, specifically replacing the current Euclidean update for rotation matrices, quaternions, or six-degree-of-freedom poses. Use a network \(a_\theta\) that receives the current group state \(g_k\), Lie-algebra velocity \(\xi_k\), and control or context \(c_k\), and outputs an element of \(\mathfrak g\). For SO(3), represent \(g_k=R_k\in\mathbb{R}^{3\times3}\), \(\xi_k=\omega_k\in\mathbb{R}^3\), construct the skew matrix \([\omega_k]_\times\), and compute \(R_{k+1}=R_k\exp(h[\omega_k]_\times)\). For SE(3), represent the velocity by a six-dimensional twist and use the standard \(4\times4\) matrix exponential. Pseudocode: input \((g_0,\xi_0,c_{0:H-1})\); for \(k=0,\ldots,H-1\), compute \(a=a_\theta(\operatorname{Log}(g_k),\xi_k,c_k)\), set \(g_{k+1}=g_k\operatorname{Exp}(h\xi_k)\), then set \(\xi_{k+1}=\xi_k+h a\); decode \(g_k\) into observations. The paper contributes the forced Euler-Lagrange and trivialized Lie-group structure; the learned acceleration map and discretization are the ML adaptation. Train with geodesic error \(d_G(\hat g,g)=\|\operatorname{Log}(\hat g^{-1}g)\|_2\) plus optional acceleration regularization. The first cheap experiment should use a two-layer MLP on synthetic SO(3) rigid-body trajectories, comparing against an equal-size MLP with direct matrix or Euler-angle additions. Measure multi-step geodesic pose error, orthogonality violation \(\|R^TR-I\|_F\), and rollout stability for 100 to 1000 steps. Success means zero manifold drift and lower long-horizon error at equal FLOPs.
Verification
Stage 1 · Toy mechanism gate: Passed ✓
Stage 2 · Mechanism transferred to benchmark: Confirmed ✓
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
Stage 1 — Mechanism check agent confidence 8/10
Built a forced SO(3) dynamics MVP with an MLP acceleration model, exponential-map Lie updates, and an ambient Euler/matrix baseline. The mechanism manifested: Lie orthogonality error was 1.11e-13 versus 4.55 for ambient Euler after 1000 steps; fixed-time ambient orthogonality drift had log-log slope 1.26, consistent with first-order O(h) drift; and constant-velocity ambient geodesic error had slope 1.99 while Lie error stayed around 1e-15. The learned 100-step rollout preserved closure exactly, but did not reduce pose error: mean final-20-step error was 1.397 radians for Lie versus 1.380 for ambient, so no accuracy win is claimed.
- Agent confidence
- 8/10
- Baseline
- Ambient Euler: closure violation 4.55 after 1000 steps; fixed-time drift values [4.705, 1.557, 0.638, 0.290, 0.138] for h=[0.2,0.1,0.05,0.025,0.0125]; constant-velocity geodesic errors [0.04698,0.01194,0.002997,0.000750], fitted order 1.99; learned rollout mean final-20 error 1.380 rad, final error 2.345 rad, max orthogonality violation 1.551.
- Idea
- Lie exponential update: closure violation 1.11e-13 after 1000 steps; constant-velocity geodesic errors approximately [3.83e-16,5.78e-16,7.52e-16,6.02e-16]; learned rollout mean final-20 error 1.397 rad, final error 2.373 rad, max orthogonality violation 3.33e-15. Predicted exact closure and elimination of integration drift were confirmed, but learned pose accuracy was not better.
Limitations: Only SO(3) was tested, not SE(3), rigid-body energy conservation, controls/observations beyond synthetic context, FLOP-normalized training, longer hyperparameter searches, or statistically repeated seeds. The learned comparison is a small toy MLP experiment and evaluates structural stability more reliably than generalization accuracy.
How to run: python3 experiment.py
Stage 2 — Benchmark vs. tuned baseline (arXiv:2607.12627)
Beats the tuned baseline by 75.3% (p=0.0081, wins 8 / 8 paired seeds; metric: lower is better).
- Benchmark
- So3_forced_rollout
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0
- Idea mean
- 0
- Effect (Δ)
- -0 (−75.3%; negative = idea better)
- Wins
- 8 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- n/a
- Mechanism
- Confirmed ✓
- Practical effect
- Helps
- Baseline tuning
- swept over 9 configs
Small registered synthetic SO(3) final-pose regression only; SE(3), real robotics data, energy conservation, longer horizons, FLOP timing, and built-in pendulum transfer were not tested. The completed run used CPU after shared-GPU allocation failures.
How to run: cd /home/maxwelhelp/all/math2nn/experiments/exp820_lie-group-forced-dynamics-layer && OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 CUDA_VISIBLE_DEVICES='' /home/maxwelhelp/main/bin/python3 -u stage2_so3_bench.py
Verdict computed by deterministic test code from paired-seed statistics — not by the language model.
Stage 2 — Benchmark latest Worked ✓
Agent confidence: 9/10
The Lie-group forced dynamics layer significantly outperformed the matched ambient-Euler system on the registered SO(3) dynamics track. Mean test MSE was 4.176081034756862e-06 versus 1.69089952350987e-05, with 8/8 paired wins and permutation p=0.0081. The trained-model signature confirmed near-zero Lie orthogonality error versus ambient drift.
- Baseline
- Ambient Euler, tuned lr=0.006 step=0.08: mean MSE 1.69089952350987e-05.
- Idea
- Lie exponential, lr=0.006 step=0.08: mean MSE 4.176081034756862e-06; paired delta -1.2732914200341838e-05; p=0.0081.
Benchmark result
Beats the tuned baseline by 75.3% (p=0.0081, wins 8 / 8 paired seeds; metric: lower is better).
- Benchmark
- So3_forced_rollout
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0
- Idea mean
- 0
- Effect (Δ)
- -0 (−75.3%; negative = idea better)
- Wins
- 8 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- n/a
- Mechanism
- Confirmed ✓
- Practical effect
- Helps
- Baseline tuning
- swept over 9 configs
Small registered synthetic SO(3) final-pose regression only; SE(3), real robotics data, energy conservation, longer horizons, FLOP timing, and built-in pendulum transfer were not tested. The completed run used CPU after shared-GPU allocation failures.
How to run: cd /home/maxwelhelp/all/math2nn/experiments/exp820_lie-group-forced-dynamics-layer && OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 CUDA_VISIBLE_DEVICES='' /home/maxwelhelp/main/bin/python3 -u stage2_so3_bench.py
Artifacts
- bench_report.json 4.7 KB View Raw
- experiment.py 4.2 KB View Raw
- report.md 2.0 KB View
- report_bench_2026-08-31T015415.md 5.3 KB View
- results.json 1.1 KB View Raw
- so3_track.py 1.5 KB View Raw
- stage2_so3_bench.py 4.9 KB View Raw