Hamiltonian 神经网络(Hamiltonian Neural Networks)详解
核心结论:Hamiltonian 神经网络通过将 Hamiltonian 动力学中已知的辛结构(symplectic structure)同时编码进网络架构和损失函数,从而在噪声较大、数据较少的情况下比朴素神经网络模型学习到更准确、更能保持能量守恒的动力学系统模型。
引言与背景
Hamiltonian 动力学的历史地位
- Hamiltonian 动力学是描述众多真实世界系统(机械系统、流体流动等)的基础理论,其发展经历了数百年的演进,涉及 Bernoulli、Newton、Euler、Lagrange、Hamilton 等科学家。
- 现代形式的 Hamiltonian 动力学已经存在至少 100~150 年。
- 许多机械系统(如弹簧上的质量块、单摆、双摆)以及若干流体流动(如理想势流中的流函数实际上就是 Hamiltonian)均遵循 Hamiltonian 动力学。
- Hamiltonian 系统通常可以被认为是能量守恒的(energy conservative)或非耗散的(non-dissipative)系统。
- 能量守恒是多种不变性和对称性中的一种,这与 Noether 定理密切相关。Noether 定理深刻揭示了对称性与系统动力学守恒量之间的关系。
- 据演讲者转述,爱因斯坦认为 Noether 定理是数学物理史上最深刻、最重要的结果之一。
为什么关注 Hamiltonian 结构
- 守恒量对应对称性,对称性也对应守恒量,Hamiltonian 动力学是表达这种对偶关系的一种重要途径。
- 将这种物理结构(辛结构、Hamiltonian 结构)集成到机器学习算法中是本演讲的核心动机。
- 作者回忆其本科导师 Jerry Marsden 是 Lagrangian 和 Hamiltonian 动力学现代视角的领军人物,著有书籍 *Introduction to Mechanics and Symmetry*,强烈推荐给希望深入了解这类系统数学的读者。
数值积分的困难:混沌系统与能量漂移
易积分系统 vs. 难积分系统
- 易积分系统:如简单的单摆,动力学是确定性的、非混沌的。如果已知初始位置和速度(且摩擦或耗散建模准确),可以非常精确地模拟很长时间,预测几乎永远跟随真实解。
- 难积分系统:如双摆,属于混沌 Hamiltonian 系统,数值积分通常非常困难。
朴素积分器失败的原因
- 典型的 Runge-Kutta 积分算法(如 ode45,一种四阶自适应步长的 Runge-Kutta 方法)并不是为守恒系统设计的,它们不守恒能量或守恒量。
- 在无摩擦的理想双摆中,能量应当守恒。但模拟显示(以能量 60 为基准的恒定曲线上:基准解恒定在 60,而 ode45 仅在很短时间后能量就明显偏离),朴素 Runge-Kutta 即使使用相对较小的时间步长,也会导致能量漂移。
- 这种能量漂移对于混沌系统(如预测小行星300年后是否临近地球)是严重问题。
辛积分器和变分积分器
- 有一大类手工设计的积分器专门保持 Hamiltonian 结构,称为辛积分器(symplectic integrators),或满足 Euler-Lagrange 方程结构的变分积分器(variational integrators),两者关系密切,可视为近亲。
- 辛积分器和变分积分器在保持系统的守恒量方面表现得比朴素积分器好得多。
- 因此,当我们面对具有 Hamiltonian 结构或辛结构的系统时,将这种结构融入数值积分器或神经网络机器学习模型,可以产生巨大的差异。
- 演讲者分享了一张图:他在普林斯顿第一年研究生时制作的双摆变分/辛积分器数值实验结果图(非矢量图,有 JPEG 光栅问题),说明他对这类问题的关注由来已久。
Hamiltonian 神经网络的基本思想
朴素基线:直接学习 q_dot 和 p_dot
- 给定位置变量 q 和动量变量 p,朴素的神经网络做法是构建一个前馈网络,直接预测导数 q_dot 和 p_dot 作为 q、p 的函数。这是例如神经 ODE(Neural ODE)中的典型方法,但这种方法并不包含 Hamiltonian 结构,因此能量守恒很差。
Hamiltonian 神经网络的架构选择
- 与直接学习 q_dot 和 p_dot 不同,Hamiltonian 神经网络(HNN)学习一个中间函数 —— Hamiltonian H(q, p),使用一个大神经网络来表示。
- 然后,通过取 H 对 p 和 q 的偏导数,并按照 Hamilton 方程的要求组合,得到 q_dot 和 p_dot。
- 具体形式为(注意正负号,原文此处有缺漏,演讲者强调正确的形式是):
- q_dot = ∂H/∂p (应为正)
- p_dot = -∂H/∂q (应为负)
- 这个“一正一负”的反对称结构是 Hamiltonian / 辛结构的标志性特征。
损失函数的设计
- HNN 使用自定义损失函数来强制所学的 H 满足 Hamilton 方程。
- 损失函数主要由两项组成:
- 让模型预测的 q_dot 与 ∂H/∂p 相等(即
(q_dot - ∂H/∂p)^2最小化)。 - 让模型预测的 p_dot 与 -∂H/∂q 相等(即
(p_dot - (-∂H/∂q))^2最小化)。
- 注意:原文截图中的公式疑似有符号缺失,演讲者提醒必须仔细检查,负号不能漏掉。
- 这样,HNN 不仅学习了一个网络,而是学习了一个满足辛结构约束的能量函数 H,从而强制系统动力学满足能量守恒。
与神经 ODE 的关系
- HNN 本质上是一种带有额外结构的自定义神经 ODE。
- 神经 ODE 是残差网络(ResNet)在连续时间上的推广,学习连续时间动力学 x_dot = f(x)。
- HNN 与神经 ODE 一样使用自动微分(autograd)和相同的优化框架,但 HNN 不是直接学习 f,而是学习 H 的偏导数来给出 f,并将辛结构作为损失项强制施加。
物理与机器学习结合(Physics-informed)框架中的定位
- 在整个物理信息机器学习框架中,HNN 属于“通过架构选择”和“通过损失函数”两个层面来引入物理知识(演讲者提到“Stage 3”和“Stage 4”)。
- 一般而言,引入的物理知识越多,模型效果越好。
- 本演讲提到 HNN 是“通过架构选择学习 Hamiltonian 函数” + “通过损失函数促进辛结构”的典型组合。
实验结果与性能对比
简单玩具问题
- 论文中测试了三个相对简单的系统:质量-弹簧系统(mass-spring)、理想摆(ideal pendulum)、真实摆(real pendulum)。
- 在下图中(需查看原论文),对比了实际总能量随时间的变化:
- 白色:地面真值(ground truth)。
- 蓝色:基线朴素神经网络(baseline)。
- 黄色:Hamiltonian 神经网络(HNN)。
- 结果显示,在所有情况下,HNN 追踪守恒能量的能力远超朴素基线。蓝色基线很快偏离能量守恒,而 HNN 能很好地保持能量。
- 这个结果与过去约 40 年数值积分器领域的共识一致:如果想让算法保持已知守恒量(如总能量),就必须嵌入 Hamiltonian 结构。
局限与演讲者提出的待验证任务
- 演讲者认为论文中的实验都是比较简单的玩具问题,缺乏对“真正有挑战性”的问题(如混沌系统)的严格对比。
- 他特别希望看到将 HNN 应用于双摆(混沌系统)的例子,因为双摆的能量追踪非常困难,这才是有意义的基准测试。
- 他失望地指出,nervs(可能是 NeurIPS 口语)社区往往不懂得选择好的动力系统或流体力学的基准问题。
- 演讲者给出课后作业:尝试将 HNN 代码应用到双摆上,看看是否能保持能量,并向作者反馈(演讲者愿意据此制作视频)。
- 代码可从相应渠道下载,基于 PyTorch,设置相对直观。
结论与展望
- Hamiltonian 神经网络是一个简单而优雅的模型:通过架构(学习 H)和损失函数(强制 Hamilton 方程)来嵌入 Hamiltonian 结构(辛结构)。
- 对许多机械系统以及科学和自然界中观察到的许多系统来说,Hamiltonian 结构是核心,嵌入该结构可以带来巨大的性能提升。
- HNN 还有一个类似变体——Lagrangian 神经网络,使用 Euler-Lagrange 方程而不是 Hamilton 方程,具有一些关键优点,将在后续视频中介绍。
参考文献与推荐资源
- 论文出处:NeurIPS 2019(演讲者提到“nerps 2:19 paper”,实际应为 NeurIPS 2019),但演讲者未给出作者名称。
- 书籍:Jerry Marsden 等人的 *Introduction to Mechanics and Symmetry*,推荐深入了解 Hamiltonian/Lagrangian 系统数学和对称性的读者阅读。
行动清单(对读者)
- 下载 HNN 代码(基于 PyTorch)。
- 尝试将代码应用到双摆(chaotic system)上,测试能量保持表现。
- 将结果反馈给演讲者(如果感兴趣)。
- 阅读原论文以获取实验细节(演讲者提示有很多细节需要深入阅读)。