跳到正文
Hacker News· EverestAn·· 8 天前AI 评分26

Show HN:把物理写进架构(可学习 Hamiltonian)的连续时间模型

Show HN: Physics written into the architecture (learned Hamiltonian)

AI 导读

一个将物理计算写入架构而非作为损失项的开源模型:以连续时间 liquid(LTC)递归为基底,叠加可学习 Hamiltonian 与辛积分器作为硬约束,能量按构造守恒、严格时间可逆。

正文 · AI 翻译

一个完整的模型,物理计算被写入架构之中——而不是作为损失项附加其上。

核心思想:一个连续时间的液体(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