Show HN:把物理写进架构(可学习 Hamiltonian)的连续时间模型
Show HN: Physics written into the architecture (learned Hamiltonian)
一个将物理计算写入架构而非作为损失项的开源模型:以连续时间 liquid(LTC)递归为基底,叠加可学习 Hamiltonian 与辛积分器作为硬约束,能量按构造守恒、严格时间可逆。
一个完整的模型,物理计算被写入架构之中——而不是作为损失项附加其上。
核心思想:一个连续时间的液体(LTC)递归作为基底,而物理结构(一个由辛积分器推进的学习到的哈密顿量)是其上的硬架构约束。对于网络学习到的任何能量函数,能量按构造守恒——有界的 O(dt²) 漂移,完全时间可逆。这是通往物理信息机器学习(哈密顿神经网络,Greydanus 2019)的硬约束路线,是在对 PINN 文献进行对抗性审查后,选择它而非软 PDE 残差损失。
架构
observed trajectory prefix
│
▼
LiquidCore (LTC) multi-timescale gated linear recurrence,
│ trained via Blelloch parallel scan (O(log T))
▼
context vector system identification: infers per-trajectory
│ hidden parameters (e.g. a spring's stiffness)
▼
HamiltonianHead separable H(q,p) = T(p) + V(q | context)
│
▼
symplectic rollout velocity-Verlet; energy conserved by construction
awareliquid_physics/liquid_core.py——LTC“液体”递归:每个时间尺度是一个带有学习到的时间常数的漏积分器;各尺度由输入依赖的门混合。通过parallel_scan.py以 O(log T) 深度运行。awareliquid_physics/hamiltonian.py——HamiltonianHead(硬约束,辛)和MLPFieldHead(诚实的非结构化对照:普通欧拉法,无守恒)。awareliquid_physics/model.py——LiquidHamiltonianModel,本项目所关注的积分:液体核心读取前缀 → 条件化哈密顿量的势能 → 辛展开预测未来。一个固定的学习到的势能无法拟合一个族的系统;液体上下文使同一模型能够针对每条轨迹调整其能量景观。awareliquid_physics/physics_ops.py——一个零参数、确定性的牛顿算子层(辛欧拉积分、N 体引力、碰撞、能量/动量诊断)。学习模型所对标的地面真值引擎:计算,而非记忆。
结果
benchmarks/physics_rollout_eval.py——独立头部,匹配的 1 步拟合(两者损失均约 5e-6),仅按物理指标评分:
| 系统 | 指标 | 哈密顿量(硬约束) | MLP 场对照 | 优势 |
|---|---|---|---|---|
| 弹簧 | 150 步能量漂移 | 0.012 | 0.036 | 3.0× |
| 轨道 | 100 步能量漂移 | 6.2 | 37.8 | 6.0× |
| 轨道 | 100 步展开 MSE | 2.8e-3 | 6.6e-2 | 23.8× |
benchmarks/liquid_physics_eval.py——耦合实验:一个具有隐藏的逐轨迹刚度的振荡器族,前缀 → 100 步展开:
| 模型 | 展开 MSE | 最终能量漂移 | 参数 |
|---|---|---|---|
| liquid_ham(液体 + 哈密顿量) | 4.12 | 0.70 | 8.7k |
| static_ham(哈密顿量,无上下文) | 4.41 | 0.18 | 5.0k |
| gru_seq(非结构化对照) | 7.24 | 2.96 | 10.0k |
诚实的解读:物理结构带来了相对于 GRU 基线的长时程稳定性(展开误差低 2.9×,漂移低 4×);液体上下文带来了对隐藏参数的适应(展开 MSE 优于静态头部)。静态头部漂移最小,因为它那一个固定的势能更刚性——适应/守恒的权衡是真实存在的,并如实报告为测量值。
范围(诚实)
连续状态轨迹预测,在物理指标(k 步展开 MSE、能量漂移)上验证——从不使用困惑度。这不是语言模型,也不做任何幻觉声明。
用法
pip install -e ".[dev]" python -m pytest tests/ -q # 13 tests # free-standing head: symplectic vs Euler control python benchmarks/physics_rollout_eval.py --system spring python benchmarks/physics_rollout_eval.py --system orbit # the coupling experiment: liquid_ham vs static_ham vs gru_seq python benchmarks/liquid_physics_eval.py --train_steps 500
所有基准测试均可在 CPU 上运行。
路线图
- 更丰富的系统族(二体轨道、通过
physics_ops的接触/碰撞)用于耦合实验 - 不可分离的哈密顿量(磁性/速度依赖力)
- 扩展液体基底;更长时程的展开
- 弥合适应/守恒的差距(上下文条件化的动能项、漂移惩罚训练)
注意:此仓库此前曾托管一个 Kaggle 竞赛参赛作品(Nemotron 推理挑战);该内容存在于 v0.1.0 之前的 git 历史中。
来源:Hacker News · github.com