try ai
科普
编辑
分享
反馈
  • 算子学习

算子学习

SciencePedia玻尔百科
核心要点
  • 算子学习从学习固定网格上的函数转向学习底层的连续算子,从而实现了离散不变性。
  • 算子学习的可行性源于许多物理算子是近似低秩的,这规避了维度灾难。
  • 像 DeepONet 和傅里叶神经算子 (FNO) 这样的架构,通过利用逼近理论和卷积定理,为学习算子提供了实用的方法。
  • 将已知的物理定律整合到训练过程中,可以为复杂的科学和工程应用创建数据高效且鲁棒的模型。

引言

几十年来,机器学习在学习将有限数据点映射到预测(例如识别图像)的函数方面表现出色。然而,自然界的基本定律并非由这类映射描述,而是由算子——将整个函数转换为其他函数的规则——来描述,正如在控制物理和工程领域的偏微分方程 (PDE) 中所见。传统的神经网络在特定的数据网格上训练,当分辨率改变时就会失效,这从根本上限制了它们捕捉这些底层物理定律的能力。这一差距凸显了对一种新方法的需求,这种新方法能够学习一个系统永恒的、连续的规则,而与我们选择测量它的方式无关。

本文介绍了算子学习,这是一个旨在学习算子本身的革命性范式。通过这样做,这些模型可以独立于数据的离散化方式进行操作,使其能够跨越不同分辨率进行泛化,并实现零样本超分辨率等应用。在接下来的章节中,我们将深入探讨这个强大的概念。第一章 ​​“原理与机制”​​ 将揭示使在无穷维中学习成为可能的数学理论,并探讨两种基石模型的架构:深度算子网络 (DeepONet) 和傅里叶神经算子 (FNO)。随后,​​“应用与跨学科联系”​​ 一章将展示这些学习到的算子如何被用于构建数字孪生、驱动科学发现、设计未来技术,并与动力系统理论中的深刻概念建立联系。

原理与机制

一种新的学习方式:从函数到算子

几十年来,机器学习的奇迹在于其学习函数的能力。我们向神经网络展示一百万张猫的图片,它就能学习一个函数,将新图片的像素向量映射到一个表示其为猫的概率的单一数字。这本质上是学习一个从高维空间到低维空间的映射,比如从 Rn\mathbb{R}^nRn 到 Rm\mathbb{R}^mRm。这一范式取得了惊人的成功。但是,当我们将目光从识别猫转向破译宇宙时,我们便会碰壁。

自然法则不是以有限向量之间的映射形式写成的。它们是用微积分的语言——以微分方程的形式——写成的。它们描述的是函数之间的关系。想象一根吉他弦。它的初始形状是一个函数 u0(x)u_0(x)u0​(x),描述了其长度上每个点 xxx 的位移。控制其振动的物理定律是一个​​算子​​——一种抽象的机器——它将这个初始函数 u0(x)u_0(x)u0​(x) 作为输入,并产生一个新函数 u(x,t)u(x, t)u(x,t),该函数描述了琴弦在未来任何时间 ttt 的形状。偏微分方程 (PDE) 的解正是如此:一个将某些输入函数(初始条件、边界条件或源项)映射到输出解函数的算子。

传统方法的问题就在于此。如果我们通过将振动弦离散化为100个点来模拟它,并训练一个神经网络来预测其运动,那么这个网络学到的是一个针对100维向量的映射。如果我们想用1000个点进行更精确的模拟,我们的网络就毫无用处了。它是在特定的离散化方案下训练的,对底层的连续实体毫无概念。这种对网格的依赖性是一个根本的限制。

因此,算子学习代表了一次宏大的雄心转变。我们的目标不是为单个网格学习一个一次性的近似,而是学习算子本身——那永恒的、连续的法则。我们希望构建一个像大自然一样,将整个函数作为输入并返回另一个函数作为输出的神经网络。这样一个学习到的算子将是​​离散不变的​​。你可以用低分辨率的模拟来训练它,然后用它来预测在更精细的网格上,甚至在你希望的任何连续空间点上的结果。这就好比是记住 123×456123 \times 456123×456 的答案与学习乘法算法本身之间的区别。

无穷维的秘密:打破维度诅咒

乍一看,这个雄心似乎有些鲁莽。函数是无穷维的对象。一个有限的计算机,从有限数量的样本中学习,怎么可能学会它们之间的映射呢?这难道不会成为“维度灾难”的终极受害者吗?(维度灾难指所需数据量随维度呈指数级增长)。

摆脱这个悖论的出路在于一个关于控制物理世界的算子的美丽秘密:虽然它们在无穷维空间中运作,但它们的本质行为通常出人意料地是低维的。

物理学中的许多算子,特别是那些涉及扩散、平滑或积分的算子,在数学上被称为​​紧算子​​。一个紧算子有一个显著的特性,可以通过与数据分析的类比来理解。在分析复杂数据集时,我们经常使用主成分分析 (PCA) 来找到最重要的变化方向。我们仅用少数几个主成分就可以捕捉到数据集的大部分结构。

一个紧算子具有类似的结构,这通过​​奇异值分解 (SVD)​​ 得以揭示。SVD 将算子分解为沿着“主”输入和输出函数(称为奇异函数)的一系列简单作用。每个作用都由一个称为奇异值的数字加权。对于大量的物理算子,这些奇异值会​​迅速衰减​​。第一个奇异值可能很大,第二个较小,第三个更小,依此类推,迅速趋近于零。这意味着算子的行为由其前几个奇异分量主导。它在技术上可能是无穷维的,但它却是近似低秩的。

这就是解开这个谜题的关键。我们不需要学习算子在每一种可以想象的输入函数上的行为。我们只需要学习它在少数几个起决定性作用的“主”函数上的作用。问题的有效维度不是无穷大,而是将算子近似到我们期望的精度 ε\varepsilonε 所需的少数奇异分量个数 rrr。这个有效秩 rrr 取决于奇异值衰减的速度,而不是我们恰好所处的空间的维度。统计学习理论证实了这一直觉,表明学习这样一个算子所需的样本数量与这个有效秩 rrr 成正比,而不是与我们网格的环境维度成正比。维度灾难被打破了。

两种主要策略:DeepONet 和 FNO

知道了算子学习在原则上是可行的,我们实际上如何构建一个神经网络来做到这一点呢?两种卓越的策略应运而生,每一种都体现了深刻的数学思想。

DeepONet:通用构建器

第一个架构是​​深度算子网络 (DeepONet)​​,它基于逼近理论中的一个经典思想:任何合理的函数都可以表示为一些基函数的加权和。例如,声波可以表示为傅里叶级数中的正弦和余弦之和。DeepONet 学会动态地发现这种表示。

它通过一个由​​分支网络​​ (branch network) 和​​主干网络​​ (trunk network) 组成的巧妙双重架构来实现这一点。

  • ​​分支网络​​是“传感器”。它观察输入函数(例如,通过在几个固定位置上对其进行采样),其任务是计算基展开的系数。它回答了这样一个问题:“对于这个特定的输入函数,我需要多少每种基函数?”

  • ​​主干网络​​是“模式生成器”。它接受输出域中的一个坐标(比如空间中的一个点 xxx),其任务是在该点上产生*基函数*的值。它回答了这样一个问题:“我的基模式在这里看起来是什么样的?”

最终的预测就是两个网络输出的点积:G(u)(y)≈∑k=1pbk(u)tk(y)G(u)(y) \approx \sum_{k=1}^{p} b_k(u) t_k(y)G(u)(y)≈∑k=1p​bk​(u)tk​(y),其中系数 bkb_kbk​ 来自处理输入 uuu 的分支网络,基函数的值 tkt_ktk​ 来自处理输出坐标 yyy 的主干网络。这种优雅的结构是数学家所称的可分离近似的直接实现。

这种设计的强大之处在于其巨大的灵活性。如果问题依赖于其他参数——比如变化的扩散系数,甚至变化的域几何形状——我们可以简单地将这些信息输入到相应的网络中。定义整个问题实例的全局参数进入分支网络;描述查询点周围空间的局部特征进入主干网络。

傅里叶神经算子:波的主宰

第二种策略是​​傅里叶神经算子 (FNO)​​,其灵感来自一个不同但同样深刻的原理:卷积定理。许多物理过程,如热的传播,都是由卷积描述的。卷积是一种运算,其中某一点的输出是其周围输入的加权平均,权重由一个“核”函数定义。

虽然物理空间中的卷积计算成本可能很高,但卷积定理告诉我们,在​​傅里叶空间​​中,这个复杂的操作变成了简单的逐元素乘法。一个 FNO 层巧妙地利用了这一点:

  1. ​​变换​​:它接受一个输入函数(在网格上表示)并使用快速傅里叶变换 (FFT) 计算其傅里叶变换。这将函数转换为其组成频率或“模式”。

  2. ​​滤波​​:在傅里叶空间中,它将低频模式的一个子集与一组学习到的权重相乘。这是 FNO 的核心,它在这里学习卷积核的谱特征。高频模式通常被丢弃,这具有正则化效果,类似于假设映射是平滑的。

  3. ​​逆变换​​:它应用逆 FFT 将滤波后的模式变换回物理空间,从而得到学习到的全局卷积的结果。

这个序列——FFT、学习到的线性变换、逆 FFT——被称为​​谱卷积​​。在这些谱卷积层之间,应用一个简单的、逐点的非线性激活函数。这种非线性至关重要;它允许 FNO 构建对高度复杂、非线性算子的近似,远远超出了简单的卷积。

FNO 的天才之处在于,学习到的权重位于傅里叶空间,独立于网格分辨率。这意味着我们可以在一个粗糙的 64×6464 \times 6464×64 网格上训练模型,并且因为核是在连续的傅里叶域中定义的,所以我们可以在测试时将其应用于一个精细的 1024×10241024 \times 10241024×1024 网格上,而无需任何重新训练。这种特性,有时被称为零样本超分辨率,是在离散不变的方式下学习算子的直接结果。

教授物理定律

从数据中学习是强大的,但如果数据有噪声或不完整怎么办?我们如何确保我们学习到的算子尊重我们已知为真的基本物理定律?这就是我们从纯数据驱动学习转向物理信息算子学习的地方。

一个微妙但深刻的考虑是算子和数据之间的一致性检查,称为​​皮卡条件 (Picard condition)​​。从本质上讲,它指出,对于一个稳定的学习过程,训练数据对于被学习的算子必须“有意义”。一个平滑事物(如热扩散)的算子具有迅速衰减的奇异值。如果我们试图用平滑输入映射到噪声输出的数据来训练它,学习到的算子将被迫放大高频分量,变得不稳定且对泛化无用。一个成功的学习算子必须使其结构,特别是其奇异值衰减,与训练数据的统计特性相匹配。

更直接地,我们可以将物理约束直接融入训练目标中。想象一下学习不可压缩流体(如水)的算子。一个基本法则是速度场 uuu 必须是无散度的:∇⋅u=0\nabla \cdot u = 0∇⋅u=0。我们可以通过在其损失函数中增加一个惩罚项来将这一点教给我们的神经算子。在衡量与训练数据误差的常规项旁边,我们增加一个项,比如 ρ∥∇⋅upred∥2\rho \|\nabla \cdot u_{\text{pred}}\|^2ρ∥∇⋅upred​∥2,该项惩罚网络任何时候产生可压缩的速度场。通过最小化这个组合损失,网络学会找到一个不仅拟合数据而且遵守物理定律的解。这种方法不同于物理信息神经网络 (PINN),后者通常学习单个 PDE 实例的解;在这里,我们是以物理信息的方式学习一族问题的整个算子。

这些原则甚至指导我们克服实际挑战。最纯粹形式的 FNO 是为周期性域(如甜甜圈的表面)设计的。为了将其应用于现实世界的非周期性问题,我们可以使用巧妙的策略:我们可以通过将其重新表述为具有齐次(零)边界条件的问题来“提升”问题,或者我们可以完全用更适合有界域的基(如切比雪夫多项式)替换傅里叶基,从而将傅里叶神经算子变成切比雪夫神经算子。在每种情况下,核心思想保持不变:通过理解物理和数学的深层原理,我们可以设计出不仅功能强大,而且优雅且忠实于自然世界结构的学​​习架构。

应用与跨学科联系

在上一章中,我们揭示了算子学习的核心思想:我们可以教机器不仅仅是在数据点中寻找模式,而是学习规则本身——即控制系统行为的数学算子。我们不再是学习一个将数字映射到数字的函数,而是学习一个将整个函数(如房间中的热量分布)映射到另一个函数(如该分布下一刻的样子)的算子。这是一个深刻的视角转变。但这有什么用呢?这个抽象的概念在何处与现实世界相遇?

事实证明,无处不在。算子的语言是物理学、工程学、生物学的语言。一旦你开始寻找,你会发现它们无处不在。在本章中,我们将巡览其中一些卓越的应用。我们将看到学习算子如何让我们能够建立虚拟实验室,将预测转化为科学发现,设计未来的技术,甚至与动力学理论中最深刻、最美妙的一些思想联系起来。

数字孪生:构建虚拟实验室

想象一下,你想了解热量如何在一个复杂的物体中传播,比如一个具有错综复杂元件布局的处理器芯片。芯片上任何单点的温度不仅取决于其自身属性;它还取决于整个芯片的导热系数、所有热源的位置以及边界的温度。改变一个角落的材料,各处的温度分布都会改变。解本质上是非局域的;万物相互影响。这是一个由偏微分方程 (PDE) 描述的问题的标志,从输入函数(导热系数、热源)到输出函数(温度场)的映射是算子的经典例子。

一个学习到的算子模型可以作为这个芯片的数字孪生。经过训练后,它变成了一个闪电般快速的模拟器。工程师可以提出一种新的布局或不同的材料,算子模型可以即时预测由此产生的稳态温度,绕过缓慢且昂贵的传统模拟。

但是我们如何训练这样一个数字孪生使其值得信赖呢?我们可以向它展示来自实验或高保真模拟的例子,但如果我们的数据稀疏或有噪声(这在现实世界中经常发生),该怎么办?这时,一个美妙的想法就派上用场了:我们可以直接教模型规则手册。我们可以将物理定律直接构建到训练过程中。这种方法,通常与物理信息神经网络 (PINNs) 相关联,结合了两种信息来源。训练目标对模型的两件事进行惩罚:与观测数据的不匹配,以及任何违反控制物理定律的行为——PDE 本身、边界条件(例如,“此侧无热量逸出”)和初始条件。这种物理信息正则化作为一个强大的向导,迫使模型找到不仅与数据一致而且在物理上也是合理的解。这就像告诉一个学生:“你的答案不仅要与书本后面的答案相符,而且你还必须展示你的解题过程,并且你的过程必须遵守代数法则。”这使得学习到的算子具有极高的数据效率和鲁棒性。

为了对这些方法建立信心,我们首先在已知确切答案的问题上测试它们。考虑一个完美的圆。如果我们在其边界上指定一个温度分布,那么在每个点流出的热通量是多少?这就是著名的狄利克雷-诺伊曼 (DtN) 映射,是数学物理学中的一个基本算子。对于一个圆,当通过傅里叶分析的视角观察时,这个算子具有一个非常简单的结构:它只是将边界温度的每个频率分量乘以一个与其频率成正比的数。当我们在这个 DtN 映射的例子上训练一个傅里叶神经算子 (FNO) 时,它学会了做的正是这件事!它仅从数据中就发现了正确的谱乘子,完美地复制了解析解,并泛化到未见的边界条件甚至不同的网格分辨率。看到一个神经网络独立地发现一个经典的物理学成果,是一个真正鼓舞人心的时刻,它给了我们信心去解决我们不知道答案的问题。

从预测到发现

创建快速代理模型的能力是强大的,但算子学习可以带我们更进一步——从仅仅做出预测到实现新的科学发现。一个训练好的算子不是一个黑匣子;它是一个数学对象,其内部结构可能包含有关它所学习的系统的线索。

再次想象我们的热传导问题,但现在我们不知道材料的属性。我们所拥有的只是各种热源产生的温度场的测量值。假设材料是各向异性的,就像一块木头或复合晶体,热量沿纹理比横穿纹理更容易流动。我们能从数据中发现这个隐藏的属性吗?值得注意的是,可以。我们可以训练一个 FNO 来学习将热源映射到温度场的算子。学习到的算子在其傅里叶空间滤波器中将具有特定的结构。通过“审视”这个学习到的滤波器并进行一种逆向工程,我们可以重建材料底层的各向异性扩散张量。学习到的滤波器的形状揭示了热流的主要方向和各向异性程度。模型就像一个计算显微镜,让我们能够看到材料无形的内部结构。这是一个范式转变:学习到的模型不再仅仅是一个预测器;它是一个用于系统辨识的仪器。

现在,让我们转向经典物理学的一大挑战:湍流。从你咖啡中的奶油到飞机机翼上的气流,流体的旋转、混沌运动都由纳维-斯托克斯方程控制。虽然方程是已知的,但直接模拟它们的计算成本如此之高,以至于对于大多数工程应用来说是不切实际的。几十年来,工程师们一直依赖于简化模型,如雷诺平均纳维-斯托克斯 (RANS) 方程,这些模型速度更快但通常不准确,因为它们无法捕捉到湍流涡流的复杂效应。

算子学习提供了一条新的前进道路。我们可以将问题框架化为学习一个修正算子。该算子以平均流的描述(由某些对观察者参考系不变的物理量表示)为输入,并输出对 RANS 模型中不足项的修正。FNO 在这里是一个自然的选择,因为湍流涉及跨越多个尺度的相互作用,这是一种 FNOs 旨在捕捉的非局域现象。此外,FNO 的卷积结构天然具有平移等变性,尊重了物理定律不依赖于你所在空间位置的物理原理。学习这个闭合算子正处于计算流体动力学的前沿,并可能彻底改变所有在流体中运动的物体的设计。

设计未来

学习物理算子的最终承诺是加速设计和创新的循环。

考虑一下设计现代喷气发动机涡轮叶片的巨大挑战。它必须承受极端的温度和机械应力。其性能取决于热学和机械性能之间复杂的相互作用,这些性能在材料内部可能因点而异。这是一个最高阶的耦合多物理场问题。控制方程涉及力学(应力和应变)、热传递和不可逆的塑性变形,其中塑性功本身产生更多热量,形成一个紧密的反馈回路。

传统上,工程师可能会提出一个新的设计,然后等待数小时或数天才能完成模拟。通过算子学习,我们可以构建一个模型,比如一个用物理约束训练的 DeepONet,它学习将材料属性场映射到最终的应力和温度场的解算子。然后,工程师可以用新的材料布局查询该模型,它将提供组件性能的近乎瞬时的预测。训练好的算子成为创作过程中的真正伙伴,允许对设计空间进行快速探索。为了实现这一点,模型必须被训练以尊重所有复杂的物理原理,包括塑性的非光滑“如果-那么”逻辑——材料在达到屈服应力之前表现为弹性,之后则永久变形。这些条件必须被编码为物理信息损失函数中的惩罚项,引导网络学习正确、复杂的材料行为。

当然,世界并非总是一个对傅里叶变换友好的整齐矩形网格。如果我们想模拟复杂、弯曲的飞机机翼上的气流,或者在缠结的动脉网络中流动的血液怎么办?对于这种具有不规则几何形状的问题,FNO 并不是理想的工具。在这里,我们转向算子学习家族的另一个成员:图神经算子 (GNO)。GNO 将域表示为一个图,即由边连接的节点(空间中的点)的集合。它通过模仿积分的结构,在图上的相邻节点之间传递信息来学习算子。这使得 GNOs 非常灵活,成为非均匀网格或复杂现实世界几何形状问题的自然选择。像 FNOs 和 GNOs 这样的不同架构的存在显示了该领域的丰富性,为不同类型的物理问题提供了一个专业化的工具箱。

更深层的联系:动力学的语言

到目前为止,我们一直通过科学和工程的实用视角来看待算子学习。但它也与数学动力系统理论中一些最优雅和深刻的思想相联系。

在 20 世纪 30 年代,数学家 Bernard Koopman 有一个绝妙的洞察。在研究一个非线性动力系统时——比如一个基因调控网络的状态根据 xt+1=f(xt)x_{t+1} = f(x_t)xt+1​=f(xt​) 随时间演化——与其跟踪状态 xtx_txt​ 本身(它以非线性方式演化),为什么不跟踪状态的某些*可观测量* g(xt)g(x_t)g(xt​) 呢?Koopman 表明,可以找到一些特殊的可观测量——称为库普曼特征函数——它们随时间线性演化,即使底层系统是高度非线性的。所有可观测量的演化都由一个线性算子,即库普曼算子所控制。

从这个角度看,许多算子学习可以被看作是数据驱动地寻找这个神奇的、线性化的库普曼算子的近似的过程。当我们训练一个模型来寻找一个嵌入 zt=Φ(xt)z_t = \Phi(x_t)zt​=Φ(xt​),使得动力学变为线性 zt+1≈Kztz_{t+1} \approx K z_tzt+1​≈Kzt​ 时,我们实际上是在尝试学习库普曼特征函数。这些特征函数不仅仅是数学上的好奇之物;它们具有深刻的可解释性。它们对应的特征值告诉我们系统的特征时间尺度——其基本模式的固有频率和衰减率。对于一个生物系统,这可以揭示细胞内不同功能模块的弛豫率。此外,系统的任何守恒量,如总能量或质量,都对应一个特征值为 1 的库普曼特征函数。因此,一个捕捉到这种结构的 learned operator 可以直接从时间序列数据中揭示系统的基本守恒定律。

对稳定性和结构的这种追求为学习提供了强大的归纳偏置。如果我们知道一个生物系统是稳态的,在扰动后会恢复到平衡,我们可以通过约束学习到的线性算子 KKK 是稳定的(即其谱半径必须小于 1)来强制执行这一点。这有助于模型做出更可靠的长期预测,并避免虚假的稳定性,这是标准循环神经网络 (RNNs) 等更通用模型的常见陷阱。

然而,我们必须以一个警示作为结束。一个学习到的算子仍然是一个近似,用它来预言遥远的未来是一件微妙的事情。当我们迭代我们学习到的一步模型时,每一步产生的微小误差都可能累积。这种累积的性质取决于系统本身的物理特性。对于自然耗散能量的耗散系统,如一杯冷却的咖啡,动力学通常是自我修正的,长期预测误差可以保持在一个常数范围内。但对于保守系统或能量守恒系统,如理想化的波,没有这样的阻尼机制。误差会累积,通常随着预测步数的增加而线性增长,导致与真实解的稳定偏离。理解这种误差行为是这门科学的一个关键部分,它提醒我们,即使使用我们最强大的工具,我们对预测的极限也必须保持谦逊。

从实际的工程设计到动力系统理论的抽象之美,算子学习提供了一种统一的语言。它是一个教机器理解游戏规则,而不仅仅是最终分数的框架。随着这个领域的成熟,我们无疑会发现它以令人惊讶的新方式与我们对话,揭示我们目前只能想象的联系和发现。