从微分几何视角看哈密顿神经网络
摘要
一篇博客文章,通过微分几何解释哈密顿神经网络,使用简单的质量-弹簧系统演示如何通过网络架构施加守恒定律以实现更高效的学习。作者从基础微积分开始逐步构建了辛流形和泊松括号等数学工具。
暂无内容
查看缓存全文
缓存时间: 2026/07/01 22:19
# 从微分几何视角看哈密顿神经网络
来源:https://abscondita.com/blog/symplectic-sledgehammer-for-a-spring
*因为当你面对宇宙中最简单的钉子时,有时你确实需要一把核动力大锤。*
我们犯下了罪行。
当你拥有一个前沿概念,它诞生没几年且已经足够复杂时,你会怎么做?嗯,当然是将这个概念与数学中最令人望而生畏的分支之一安排一场Tinder约会。所以,我们正从微分几何的角度来审视哈密顿神经网络。
听着,我们并非主动选择这样做。但如今,似乎每一篇ML研究都归结为同一件事:
塞进一个transformer,然后把它变得平庸!
它们能完成任务吗?通常可以——但代价是巨大的计算成本。然而它们可能是我们最缺乏灵感的架构。所以这一次,我们要反其道而行之。我们将追求某种美丽的东西,让*问题的结构*承担繁重的工作,而不是扔进十亿个参数,然后向超参数之神祈祷我们的损失函数能收敛。
★
成就解锁
得罪了整个ML社区
我们并非第一个认为美学很重要的人:
保罗·狄拉克> “拥有美的方程比拥有符合实验的方程更重要。”
——保罗·狄拉克,物理学家,专业美学家
我们将研究可能是宇宙中最简单的物理系统——那种工科学生在物理第二课中见到后就再也没想过的系统。而为了讨论它,我们将需要辛流形、微分形式、李导数、嘉当魔术公式、泊松括号以及诺特定理。
数学过度杀伤等级 3/10
概念:
微分几何
如果你觉得这种“工具-质量”比例很离谱,我们从未否认过。但我们保证:在这种荒谬之下,隐藏着一个关于机器学习的真正美丽的想法——你可以教一个神经网络遵守一个**它从未见过**的守恒定律,仅通过改变它被允许学习的事物的*形状*。
iINFO
上面每一个吓人的词都有精确、可验证的含义,我们将用更容易消化的东西——偏导数、点积、行列式、链式法则——来定义每一个,然后*计算*它们,而不是挥舞双手并希望你点头。如果你能对 \(x^2\) 求导并记得行列式是什么,你应该能跟上**每一行**。整篇文章只依赖六种工具:
- 一个**偏导数** \(\frac{\partial H}{\partial q}\) —— 当你拨动 \(q\) 并冻结其他所有变量时,\(H\) 如何变化;
- **梯度** \(\nabla H = \left(\frac{\partial H}{\partial q}, \frac{\partial H}{\partial p}\right)\) —— 所有偏导数堆叠成一个向量;
- **点积**,用于将两个向量转化为一个数;
- 多元**链式法则**,\(\frac{d}{dt}H(q(t),p(t)) = \frac{\partial H}{\partial q}\frac{dq}{dt} + \frac{\partial H}{\partial p}\frac{dp}{dt}\);
- 一个 \(2\times 2\) 矩阵的**行列式**,视为*有向面积*;
- **格林定理**,将环积分与其包围的面积联系起来。
其他一切——形式、辛结构、泊松括号——我们都在你面前用这些工具构建。有点像烹饪节目,我想。
## 犯罪现场
这是引发一切的设定。
取一个弹簧上的质量。单位质量,单位弹簧常数,无摩擦。它的整个宇宙由两个数组成:位置 \(q\) 和动量 \(p\)。总能量为
\[
H(q, p) = \underbrace{\tfrac{1}{2} p^{2}}_{\text{动能}} \;+\; \underbrace{\tfrac{1}{2} q^{2}}_{\text{势能}}
\]
运动方程是整个物理学中最简洁的东西。这里 \(\frac{dq}{dt}\) 是速度(位置变化的速率),\(\frac{dp}{dt}\) 是力(动量变化的速率)。下面的第一个方程只说*速度等于动量*——当质量为 \(1\) 时成立。第二个是胡克定律,\(F = -kq\):将质量向右拉,弹簧将其拉回左边。
\[
\frac{dq}{dt} = p, \qquad \frac{dp}{dt} = -q
\]
观察这两幅图同时运动——左边真实空间中上下浮动的质量,右边状态 \((q, p)\) 在画出一个封闭的环。这个环,即系统在其自身坐标系中绘出的轨迹,就是我们在本文剩余部分将痴迷的**相空间**:
现在做显然的机器学习事情。
不。不不不。放下transformer。不是那种**显然的**事情。
收集一堆 \((q, p)\) 状态及其测量的时间导数 \((\frac{dq}{dt}, \frac{dp}{dt})\),然后训练一个完全合理的小MLP来将前者映射到后者。它在训练数据上拟合到小数点后五位。你感觉棒极了。你离开房间,对你妈妈说:“妈妈,我做到了”,而她则一脸困惑地看着你。然后你让它向前预测几百次摆动,然后哦不……
它并没有保持恒定。本应是完美封闭圆圈的轨道在相空间中缓慢地**螺旋**——要么向内直到质量停止,要么向外直到你无摩擦的弹簧不知为何以比你赋予的更多能量抛掷质量。你的神经网络,根据其误差的符号,要么发明了热寂,要么建造了一台永动机。
iINFO
网络并不真的*物理*差。它*几何*差。它学习了一个没有理由守恒任何东西的向量场,因为它的架构中没有任何东西知道“守恒”甚至是一个范畴。所以这不是模型的错。是你的错。
解决这个问题不是靠更多数据或更巧妙的损失函数;而是要给网络正确的*形状*让其学习。这个形状有一个名字,这个名字就是*辛*。
所以这是计划。我们要解释为什么螺旋对于朴素模型是不可避免的——以及如何使其*不可能*——重复三次:一次作为**几何**,一次作为**学习问题**,一次作为**对称性**。结果证明它们只是同一句话戴着三顶不同的帽子。系好头盔。
---
## 第一乐章 —— 竞技场是一个流形
## 相空间不是一个平面
物理学常常建立在小而善意的谎言之上,这些谎言让我们更容易把握一个问题。这就是为什么,当你问物理学家“什么是自旋”时,他们会说“就像一个旋转的球,只不过它不是球,也没有旋转。”
★
成就解锁
也得罪了整个物理学界
其中一个我们告诉本科生的谎言是,弹簧的状态“是 \((q, p)\) 平面中的一个点”。用它计算已经足够接近——但称相空间为“平面”,就像称一架波音747为“飞机”一样,做了大量的简化。同一个词;下面却是截然不同的物体。
这是诚实的版本,然后紧接着是通俗语言的版本。位置存在于一个*位形空间* \(Q\) 中(对于弹簧,就是可能位置的直线)。动量**不是**另一个位置——它是与一个速度配对以提取一个数(动能)的东西。一个其全部工作就是“吃进一个向量,返回一个数”的对象被称为**余向量**,它存在于一个单独的空间,即对偶空间。将一个对偶空间粘到 \(Q\) 的每一点上,你就得到了**余切丛** \(T^* Q\)。*那个*才是相空间。
iINFO
如果“余向量”让你眼神呆滞,好消息——你已经在经常使用它了。在ML中,当你写 \(\Delta L \approx \nabla L \cdot \Delta w\) 时,梯度 \(\nabla L\) 实际上不是“权重空间中的一个箭头”。它是你*喂给*一个步长 \(\Delta w\) 以得到一个数——损失变化——的装置。那种“吃进向量→返回数”的装置**就是**一个余向量(一个**1-形式**)。普通向量是你移动的方向;余向量是你用来测量的标尺。动量是一把标尺,而不是一个移动——这就是相空间不是一个朴素平面的全部原因。
数学过度杀伤等级 5/10
概念:
余切丛 T\*Q
这听起来像是吹毛求疵,直到它咬你一口。问一个朴素图像无法回答的问题:“当两个轴携带不同单位时,流‘保持体积’到底意味着什么?”位置乘以动量是一个**作用量**,而不是一个面积——你不能在相空间上放一把标尺。你需要一个专门定制的仪器。仔细地构建那件仪器,就是本乐章剩余部分的内容。
## 仪器:辛形式
那件仪器就是**辛形式** \(\omega\)。在正则坐标下,它是
\[
\omega = dq \wedge dp.
\]
我们将从底层定义各个部分。一个像 \(dq\) 这样的**1-形式**是一个小机器,它吃进一个向量 \(v = (v_q, v_p)\) 并报告一个数——这里,是你在 \(q\) 方向上移动了多远:\(dq(v) = v_q\)。一般的1-形式是 \(\alpha = a\,dq + b\,dp\),其作用为 \(\alpha(v) = a\,v_q + b\,v_p\)。有了这个,我们能量的微分无非就是你已知的全导数公式,终于有了一个名字:
\[
dH = \frac{\partial H}{\partial q}\,dq + \frac{\partial H}{\partial p}\,dp.
\]
一个像 \(dq \wedge dp\) 这样的**2-形式**吃进*两个*向量并返回一个数——而这个特定的2-形式返回的是它们张成的平行四边形的**有向面积**:
iINFO
\[
\omega(u, v) = u_q v_p - u_p v_q = \det\begin{pmatrix} u_q & v_q \\ u_p & v_p \end{pmatrix}
\]
这就是你见过一百次的 \(2\times 2\)**行列式**——以 \(u\) 和 \(v\) 为边的平行四边形的面积。从它可以直接读出两个事实,我们之后会用到:
- **反对称性:** 交换输入,符号翻转,\(\omega(v, u) = -\omega(u, v)\)。
- **重复时为零:** 喂给它同一个向量两次,你得到 \(\omega(v, v) = 0\) ——一个有两边相等的“平行四边形”是扁平的,没有面积。
把第二个事实纹在显眼的地方。它几乎单枪匹马地就是能量守恒的原因。
\(\omega\) 携带两个结构性性质:
- 它是**闭的**,写作 \(d\omega = 0\) —— 任何地方都没有“面积源”(我们后来在一个简洁证明中刚好用到一次),并且
- 它是**非退化的**—— 唯一一个与*所有*其他向量测量结果都为零的向量就是零向量本身。
非退化性是神奇条款,因为它使 \(\omega\) 成为一个完美的、可逆的**向量与1-形式之间的词典**:交给它一个向量,你就得到一个1-形式;因为没有什么对它不可见,你可以反向运行该词典,将任何1-形式转化为恰好一个向量。一个度量 \(g\)(想成普通的点积)给出了*相同*类型的词典——这正是梯度 \(\nabla H\) 的定义方式,通过将1-形式 \(dH\) 翻译成一个向量。唯一的区别是 \(g\) 是**对称的**,而 \(\omega\) 是**反对称的**,而那个符号翻转就是整篇文章。
## 90°旋转,推导而来(而非断言)
我们的网络学习一个标量 \(H\),其微分 \(dH\) 是一个1-形式——在每个点上,它指向能量景观的“上坡”。我们现在通过 \(\omega\) 将该1-形式转化为一个流。我们想要的向量场 \(X_H\) *定义*于一个看似微不足道的方程:
\[
\iota_{X_H}\,\omega = dH.
\]
让我们不要欣赏它——而是解它。符号 \(\iota_X\)(**内乘**)仅仅意味着“将 \(X\) 插入 \(\omega\) 的第一个槽,第二个槽保持开放”,这留下一个1-形式。直接计算它:
\[
(\iota_X \omega)(v) = \omega(X, v) = X_q v_p - X_p v_q = (-X_p) v_q + (X_q) v_p \;\Longrightarrow\; \iota_X\omega = -X_p\,dq + X_q\,dp.
\]
现在将其设为等于 \(dH = \frac{\partial H}{\partial q}\,dq + \frac{\partial H}{\partial p}\,dp\),并匹配 \(dq\) 和 \(dp\) 部分:
\[
-X_p = \frac{\partial H}{\partial q}, \qquad X_q = \frac{\partial H}{\partial p} \quad\Longrightarrow\quad X_H = \left( \frac{\partial H}{\partial p},\; -\frac{\partial H}{\partial q} \right).
\]
它们就在这里——**哈密顿方程,三行推导。** 将弹簧的 \(H = \frac12(q^2+p^2)\) 代入,你得到 \(X_H = (p, -q)\),正是 \(\frac{dq}{dt} = p, \frac{dp}{dt} = -q\)。现在“90°旋转”不再是一个口号,而是一个计算。将两个词典并排放置:
\[
\nabla H = \left( \frac{\partial H}{\partial q}, \frac{\partial H}{\partial p} \right), \qquad X_H = \left( \frac{\partial H}{\partial p}, -\frac{\partial H}{\partial q} \right) = \underbrace{\begin{pmatrix} 0 & 1 \\ -1 & 0 \end{pmatrix}}_{J}\,\nabla H.
\]
那个矩阵 \(J\) 将任何向量旋转 \(-90^\circ\)。所以 \(X_H\) *字面上*就是梯度,转了一个四分之一圈。梯度沿着能量碗直爬上升;旋转它,它就*沿着*等高线环运行。拖拽下面的白点,在两个词典之间切换——同一个 \(dH\),同一个环,相反的命运:
## 为什么四分之一圈能守恒能量
这是回报,短到可以做两次。能量随着系统沿 \(X_H\) 流动变化有多快?多元链式法则,然后代入 \(\frac{dq}{dt} = \partial H/\partial p\) 和 \(\frac{dp}{dt} = -\partial H/\partial q\):
\[
\frac{dH}{dt} = \frac{\partial H}{\partial q}\,\frac{dq}{dt} + \frac{\partial H}{\partial p}\,\frac{dp}{dt} = \frac{\partial H}{\partial q}\frac{\partial H}{\partial p} + \frac{\partial H}{\partial p}\left(-\frac{\partial H}{\partial q}\right) = 0.
\]
两项相同,符号相反。它们**对于任何 \(H\) 都**抵消——这就是能量守恒的全部内容,而你刚刚用第一年微积分检查过了。简洁的、坐标无关的方式来精确地说同一件事是
\[
\frac{dH}{dt} = dH(X_H) = \omega(X_H, X_H) = 0,
\]
其中最后一步是免费的,因为 \(\omega\) 是反对称的,而*任何反对称的东西,喂给它同一个向量的两个副本,都返回零*——来自入门部分的“重复时为零”事实。**能量之所以守恒,是因为一个量与其自身反向配对的结果为零。** 我们带了一个余切丛来参加刀战,而刀子就是 \(\omega(X, X) = 0\)。
## 流保持面积,两种方式
能量守恒将每条轨迹约束在一个环上。还有第二个更深的守恒量:流在相空间中保持*面积*。对初学者友好的证明是偏导数的一行。一个流根据其向量场的**散度**膨胀或收缩体积,所以直接计算它:
\[
\nabla\cdot X_H = \frac{\partial}{\partial q}\!\left(\frac{\partial H}{\partial p}\right) + \frac{\partial}{\partial p}\!\left(-\frac{\partial H}{\partial q}\right) = \frac{\partial^2 H}{\partial q\,\partial p} - \frac{\partial^2 H}{\partial p\,\partial q} = 0.
\]
因为它消失是因为混合偏导数可交换[·]——微积分中最无聊的事实。一个无散的流是**不可压缩的**:它可以搅动相空间,但永远不会压缩或膨胀相空间中的一块区域。这就是**刘维尔定理**,对于哈密顿系统,你可以免费得到它。
数学过度杀伤等级 8/10
概念:
嘉当魔法公式
在相空间中丢入一个小方形初始条件块,然后让它… (原文未结束,但翻译到此处)
相似文章
扩散Fitzhugh-Nagumo模型中的均衡传播与哈密顿推断
本文将均衡传播扩展到斜梯度系统,并展示了深度能量模型与哈密顿神经网络之间的等价性,重点关注扩散耦合的Fitzhugh-Nagumo神经元。它还推导了此类网络中用于推理的逐层哈密顿递归关系。
深度学习的哈密顿-雅可比理论
本文建立了神经网络训练与哈密顿-雅可比初值问题之间的精确对应关系,通过一个形变参数统一了深度学习架构。
使用端口-哈密顿神经网络识别非线性弦动力学
本文扩展了端口-哈密顿神经网络(PHNNs)到偏微分方程(PDEs)中,用于从数据中学习非线性弦动力学。该方法能够同时恢复哈密顿量和耗散,在准确性和可解释性方面优于非物理信息基线方法。
深度学习的哈密顿-雅可比理论
本文识别神经网络训练为通过哈密顿-雅可比初值问题的搜索,表明残差网络、Transformer和RNN离散化了同一类粘性哈密顿-雅可比方程。推导出定量结果,包括极小极大最优泛化率、对抗鲁棒性界和闭式影响函数。
齐性空间上的可转向神经常微分方程
本文介绍了齐性空间上的可转向神经常微分方程,为学习连续时间的等变动力学提供了一个几何框架。