try ai
科普
编辑
分享
反馈
  • 深度算子网络 (DeepONet)

深度算子网络 (DeepONet)

SciencePedia玻尔百科
核心要点
  • DeepONet 使用独特的分支网络(Branch)和躯干网络(Trunk)架构来学习算子,即完整函数之间的映射。
  • DeepONet 的一个关键优势是其离散不变性,这使得单个训练好的模型能够适用于不同分辨率的数据。
  • 它具有多样化的应用,包括加速偏微分方程求解、模拟材料的记忆效应,以及解决科学与工程中的复杂逆问题。

引言

长久以来,科学发现的核心在于寻找关系——从连接数字的简单规则,到支配我们宇宙的复杂定律。虽然标准神经网络擅长学习将数字映射到数字的函数,但自然界的许多基本定律并非函数,而是算子——即一种将整个函数映射到另一个函数的规则。例如,流体动力学定律接收机翼的形状(一个函数),并产生其表面的压力分布(另一个函数)。直接学习这些算子是科学计算的一个主要目标,有望创建出能够绕过极其昂贵模拟的代理模型。

然而,一个巨大的障碍是“网格的束缚”,即在特定数据离散化方案上训练的模型,在应用于不同离散化方案时会失效。这限制了传统深度学习学习真实、内在的连续物理定律的能力。深度算子网络(Deep Operator Network, DeepONet)的开发正是为了克服这一根本性挑战,它提供了一个优雅的框架,能够以独立于数据表示方式的方法来学习算子。

本文将探索 DeepONet 的世界。首先,在“原理与机制”一章中,我们将解构其创新架构,探讨其分支网络(Branch network)和躯干网络(Trunk network)如何协同工作以处理和生成函数。我们还将触及其强大能力的数学保证。随后,“应用与跨学科联系”一章将展示这一强大思想如何被应用于解决从结构力学到气候建模等广阔科学与工程领域的艰巨挑战。

原理与机制

从简单规则到宏大算子

在科学中,我们通常从学习简单的规则——数字之间的关系——开始。对一个物体施加的力加倍,其加速度也加倍。升高气体的温度,其压力也随之上升。标准的神经网络是学习此类规则的大师,无论规则多么复杂。它或许能学会根据一列数字(如今天的温度、湿度和风速)来预测一个单一数字(如明天的高温)。它学习的是一个函数:从少数几个数字到另一个数字的映射。

但自然法则通常更为宏大。它们不仅关联数字,更关联整个函数。思考一下机翼上方的气流。流体动力学定律并非仅仅关联某一点的压力与另一点的速度。它提供了一个规则,一个​​算子​​,它接收整个机翼的形状(一个描述其边界的函数)和整个来流速度场(一个空间函数),并产生机翼表面的整个压力场(另一个空间函数)。

这就是算子的世界:以整个函数为输入,并输出其他函数的机器。直接学习这些算子,是为复杂物理模拟创建快速、准确的代理模型的终极目标。如果我们能学会天气预报的算子,我们就可以将今天的完整天气图输入其中,瞬间得到明天的天气图,从而绕过超级计算机上数小时的计算。

网格的束缚

那么,我们如何教计算机处理一个函数呢?一个函数,就像画在纸上的一条曲线,由无限个点组成。而计算机作为一种有限的机器,对无限感到不安。

最直接的想法是“作弊”。我们在函数上铺设一个网格,只记录其在有限个点上的值。我们平滑、连续的速度场变成了一长串数字——每个网格点上的速度值。突然之间,我们学习算子的问题变成了我们熟悉的问题:学习一个从Rn\mathbb{R}^nRn中的大向量到Rm\mathbb{R}^mRm中另一个大向量的映射。

但这是一种与魔鬼的交易。我们训练出的网络从根本上与我们选择的特定网格绑定在一起。如果我们在一个粗糙的100×100100 \times 100100×100网格上进行训练,然后想要在一个1000×10001000 \times 10001000×1000的网格上进行高保真度预测,我们的网络就毫无用处了。它从未学过连续的物理定律,只学过一个像素化的近似。它不知道如何处理新的网格点。此外,随着网格变得更精细,这些朴素的模型可能会变得不稳定,其预测结果会剧烈振荡或爆炸。这种对离散化的依赖是一种数字上的短视,摆脱这种依赖是算子学习的核心挑战。我们需要一种方法来构建一个​​离散不变性​​的模型:一个单一的、学习到的模型,它作用于底层的连续函数,而与我们选择如何将其表示在网格上无关。

一个绝妙的想法:深度算子网络

我们到底如何才能构建一个能够消化整个无限维函数的机器呢?深度算子网络,即​​DeepONet​​,提供了一个极其优雅和简洁的答案。它并非试图一次性“看清”整个函数,而是巧妙地将问题分解为两个更小、更易于管理的问题。这是通过一个由两部分组成的架构实现的:一个​​分支网络 (Branch Network)​​ 和一个​​躯干网络 (Trunk Network)​​。

分支网络:这是什么函数?

分支网络的任务是识别输入函数。但它不需要看到每一个点。想想医生如何诊断疾病。他们不需要扫描你身体里的每一个细胞。一些关键的测量值——体温、血压、一份血样——通常就足以形成诊断。

类似地,分支网络在一组固定的“传感器”位置上对输入函数 uuu 进行少量测量:[u(x1),u(x2),…,u(xm)][u(x_1), u(x_2), \dots, u(x_m)][u(x1​),u(x2​),…,u(xm​)]。这个由传感器值组成的小向量充当了该函数的“指纹”。分支网络本身只是一个标准的神经网络,它处理这个指纹并输出一组系数。这些系数是网络对其刚刚看到的输入函数的内部总结。

躯干网络:我们在哪里?

躯干网络回答了第二个问题:我们想在哪里评估输出?它的输入仅仅是输出域中的一个坐标 yyy。对于这个坐标,躯干网络会生成一组预定义的“基函数”。你可以将这些基函数想象成一组基本的形状或模式,就像函数世界里的乐高积木。躯干网络的任务是告诉我们,在特定位置 yyy 处,这些基函数积木各自的值是多少。

整合

最后一步简单得惊人。DeepONet 通过对来自躯干网络的基函数进行加权求和,来预测输出函数在位置 yyy 的值。而权重是什么呢?它们正是由分支网络计算出的系数。

位置 y 处的输出≈∑k=1p(分支网络系数k)×(位置 y 处的躯干网络基函数k)\text{位置 } y \text{ 处的输出} \approx \sum_{k=1}^{p} (\text{分支网络系数}_k) \times (\text{位置 } y \text{ 处的躯干网络基函数}_k)位置 y 处的输出≈k=1∑p​(分支网络系数k​)×(位置 y 处的躯干网络基函数k​)

这个结构美妙绝伦。它将“是什么”与“在哪里”分离开来。分支网络理解输入函数,而躯干网络理解输出函数所在的空间。最后的点积将两者结合起来,产生一个预测。这种优雅的设计是 DeepONet 强大能力的关键。

它为何必然有效:保证与直觉

这种设计不仅巧妙,其背后还有深刻的数学保证。​​算子通用近似定理​​指出,在合理条件下,一个 DeepONet 可以以任意精度逼近任何连续算子。 但这为什么是正确的呢?让我们来探究两个关键要素。

首先,分支网络的传感器必须能够“看”出输入函数之间的重要差异。想象一下,我们想学习一个依赖于输入直线 u(x)=a1+a2xu(x) = a_1 + a_2 xu(x)=a1​+a2​x 斜率的算子,但我们唯一的传感器位于 x=0x=0x=0。该传感器只能看到 u(0)=a1u(0)=a_1u(0)=a1​。它完全“看”不到斜率 a2a_2a2​!对于函数 u(x)=1+xu(x) = 1+xu(x)=1+x 和 u(x)=1−xu(x) = 1-xu(x)=1−x,网络会接收到完全相同的指纹,并被迫为两者生成相同的输出,即使真正的算子应该对它们进行不同的处理。这告诉我们,传感器的放置必须明智,其方式必须能让网络区分开它预期要处理的任何两个不同的输入函数。

其次,躯干网络必须能够用其基函数形状“构建”出任何所需的输出函数。想象一下,如果躯干网络只能产生常数基函数,那么任何加权和也都会是一个常数。网络将完全无法逼近一个输出为抛物线的算子。躯干网络的基函数必须足够丰富,以表达真实算子输出中存在的各种形状。

当这两个条件都得到满足时——分支网络能够看到,躯干网络能够表达——奇迹就发生了。该架构被保证是一个通用近似器。并且请注意,这个设计在本质上是​​离散不变的​​。传感器位于固定的物理位置,而躯干网络可以在任何连续坐标处进行查询。我们可以使用来自一个网格的数据训练模型,然后完美地将其应用于任何其他网格,因为模型学习的是底层的连续算子,而不是一个像素化的赝品。

付诸实践:从理论到现实

让我们通过一个具体的例子来将理论落地:预测一个二维板内部的稳态温度 T(x,y)T(x,y)T(x,y),给定施加在其边界上的热通量 qqq。这里的算子是 G:q↦T\mathcal{G}: q \mapsto TG:q↦T。

为了构建一个 DeepONet 代理模型,我们的​​分支网络​​将接收一个向量作为输入,该向量是在板边界周围(比如说)16个固定的传感器位置上采样的通量值。我们的​​躯干网络​​将接收板内部的一个坐标对 (x,y)(x,y)(x,y) 作为输入。在训练期间,我们会向网络输入一个已知通量 qiq_iqi​ 的传感器读数集,以及一个查询点 (xj,yj)(x_j, y_j)(xj​,yj​)。网络将预测一个温度 T^i(xj,yj)\widehat{T}_i(x_j,y_j)Ti​(xj​,yj​)。然后,我们会将这个预测值与真实的温度 Ti(xj,yj)T_i(x_j,y_j)Ti​(xj​,yj​)(可能通过一个缓慢但精确的传统求解器获得)进行比较,并计算误差。通过在一个称为反向传播的过程中使用微积分中熟悉的链式法则,我们可以计算出如何调整分支网络和躯干网络中的每一个权重,以使预测值更接近真实值。 在见过数千个这样的(通量, 温度)对之后,网络就学会了从边界条件到内部温度场的复杂映射。

扩展的艺术:参数与物理

这种架构的真正威力在于其灵活性。如果不仅边界通量 qqq 发生变化,材料的热导率 κ\kappaκ 甚至域的形状 Ω\OmegaΩ 也发生变化,该怎么办?DeepONet 框架能够优雅地处理这种情况。我们只需扩展“问题实例”的概念。分支网络的任务是消化所有定义我们想要解决的具体问题的要素。它的输入现在将是三元组 (q,κ,Ω)(q, \kappa, \Omega)(q,κ,Ω) 的一种表示。躯干网络的任务仍然是在空间中构建一个基,因此它的输入将是坐标 yyy 加上任何局部的几何信息,比如到最近边界的距离。这种关注点分离的原则性设计使得 DeepONet 能够学习跨越庞大的参数化问题族。

但是如果我们没有足够的数据怎么办?我们可以通过直接教给网络物理定律来给它一个“先发优势”。我们知道解必须满足热方程 ∇⋅(κ∇T)=0\nabla \cdot (\kappa \nabla T) = 0∇⋅(κ∇T)=0。我们可以在训练损失中增加一项,如果网络输出在域内随机点上违反了该方程,就对其进行惩罚。这就是​​物理信息神经网络 (PINNs)​​ 的核心思想。 这不仅仅是一个工程上的技巧;它在贝叶斯统计中有深刻的理据。损失中的数据误差项对应于我们观测值的似然,而物理惩罚项则对应于一个强烈的先验信念,即自然法则恒为真。这两项之间的权重并非任意设定;它可以从我们测量的噪声水平和我们对物理模型的置信度中严格推导出来。

通过将一个简单而强大的架构与永恒的物理定律相结合,DeepONet 为解码支配我们世界的复杂算子提供了一个卓越的工具。它代表了泛函分析、深度学习和物理原理的美妙综合——这是数学思想统一力量的证明。

应用与跨学科联系

我们已经花了一些时间来欣赏算子学习的理论引擎,研究了分支网络和躯干网络,并领略了它们设计中的数学优雅。但是,一个引擎,无论其构造多么精美,只有当我们看到它能驱动什么时,才能真正理解它。当这种抽象的机制与物理世界奇妙的混乱和错综复杂的现实相遇时,会发生什么?这种新的思维方式会将我们带向何方?

让我们踏上一段穿越现代科学与工程领域的旅程。我们将看到,这一个单一的思想——学习整个函数之间的关系——并非某种孤立的好奇心。相反,它像一把万能钥匙,在那些初看起来几乎毫无共同之处的领域中打开了一扇扇大门。正是在这些应用中,算子学习的真正力量和美才得以彰显。

通用 PDE 求解器

也许 DeepONet 最直接、最直观的应用就是作为偏微分方程(PDE)的通用求解器。几乎所有的基本物理定律,从热流到吉他弦的振动,再到钢梁的弯曲,都是由 PDE 描述的。PDE 定义了一种关系,但要为一个特定情景——一个特定的初始温度,一次独特的拨弦——求解它,需要巨大的计算努力。每个新情景都需要一次新的、昂贵的模拟。

如果我们能学习解算子本身呢?如果我们能训练一个网络来理解“求解”的本质,将任何有效的输入条件映射到其对应的解呢?这正是 DeepONet 所能做的。

想象一下学习一维热方程,它描述了温度如何沿着一根杆传播。这里的“输入函数”是杆上最初的温度分布,而“输出函数”是某个稍后时刻的温度分布。DeepONet 可以在这种过程的示例上进行训练,学习热的特有平滑和衰减过程。一旦训练完成,它就能对任何前所未见的新的初始热分布,即时预测出最终的温度剖面,从而有效地充当一个无限快的 PDE 求解器。

这个想法可以从简单的教科书示例扩展到艰巨的工程挑战。考虑这样一个复杂问题:确定一个机械部件,如飞机机翼或桥梁支架,在各种载荷下如何变形。在这里,输入函数是施加在结构上的力场,输出函数是描述结构如何弯曲和扭曲的位移场。传统的有限元法(FEM)模拟对于单个载荷工况可能需要数小时或数天。然而,一个训练好的 DeepONet 可以在毫秒内提供答案。

这里尤为美妙的是,我们的物理直觉如何能指导网络的设计。对于一个有孔洞或复杂边界的结构,其变形方式受其几何形状的强烈影响。我们可以将这种知识直接编码到网络中。例如,处理空间坐标的躯干网络,不仅可以接收原始坐标 (x,y,z)(x,y,z)(x,y,z),还可以接收额外信息,比如任何一点到最近边界的距离。通过让网络“意识到”物体的形状,我们帮助它更有效地学习应力集中和边界层的物理现象。

学习本质:格林函数

虽然学习完整的解算子功能强大,但物理学家通常寻求更深层、更基本的理解。对于许多线性系统,其整个复杂行为都由它对最简单可能扰动——在一点上的单个、尖锐的“戳刺”——的响应所决定。这种响应被称为格林函数。

把它想象成向一个平静的池塘里投下一颗小石子。格林函数 G(x,y)\mathcal{G}(x,y)G(x,y) 描述了由在位置 yyy 投下的石子在位置 xxx 处看到的涟漪。叠加原理的深刻见解在于,如果你知道了这个基本的涟漪模式,你就可以通过简单地将相应的涟漪相加,来计算任何扰动——一把石子,或一阵持续的雨——的效果。在数学上,对于一个一般的策动力 f(y)f(y)f(y),解 u(x)u(x)u(x) 只是一个积分:u(x)=∫G(x,y)f(y)dyu(x) = \int \mathcal{G}(x,y) f(y) dyu(x)=∫G(x,y)f(y)dy。

DeepONet 可以被训练来学习系统的这种本质。通过向其分支网络输入一系列尖锐、局域化的输入函数(“戳刺”或狄拉克δ函数的近似),这些函数中心位于不同的位置 yky_kyk​,并在得到的解上进行训练,网络就学会了近似格林函数本身。分支网络学会了编码戳刺的位置 yyy,而躯干网络则学会了响应的空间模式 xxx。

这个概念具有非凡的跨学科影响力。在医学成像或天文学中,由显微镜或望远镜引入的“模糊”是由点扩散函数(PSF)描述的,它不过是成像系统的格林函数。通常,这种模糊会根据你在图像中的位置而变化。这是一个复杂的、空间变化的逆问题。通过使用 DeepONet 学习这个空间变化的核 k(x,y)k(x,y)k(x,y),我们可以构建出能够“去模糊”图像、揭示真实底层结构的复杂算法。学习到的算子成为现代数据同化和图像重建中的一个关键组成部分,其可微性使其能够无缝地集成到需要伴随来进行梯度计算的变分框架中。

材料的记忆与时间的流逝

到目前为止,我们的算子大多映射空间上的函数。但时间呢?许多系统都有记忆。系统现在的状态不仅取决于当前的输入,还取决于输入的整个历史。

这正是材料科学的灵魂所在。一块面团中的应力并不取决于它当前的形状,而是取决于其揉捏、拉伸和静置的整个历史。这种被称为粘弹性的行为,由一个将时间函数(应变历史)映射到单个值(当前应力)的算子所支配。DeepONet 非常适合这项任务。其分支网络可以接收应变历史 ε(s)\boldsymbol{\varepsilon}(s)ε(s) for s∈[0,t]s \in [0,t]s∈[0,t] 的离散表示,其躯干网络可以是对当前时间 ttt 的简单查询,使其能够预测应力 σ(t)\boldsymbol{\sigma}(t)σ(t)。

这一原理在岩土工程等领域有具体的应用。在建造建筑物时,工程师必须预测下方的粘土土壤在几十年内将如何沉降。这种长期蠕变是一个历史依赖的过程。最终的沉降取决于施工过程中的整个加载历史。我们可以设计一个受 DeepONet 结构启发的代理模型来学习这个算子。在这里,我们同样可以嵌入物理知识。通过从物理驱动的模型(如用衰减指数表示材料记忆的Prony级数)为分支网络构建特征,并强制执行物理约束(如单调性,即更重的载荷不会导致更小的沉降),我们创造了一个快速、可靠且物理上合理的预测工具。这是数据驱动学习与经典工程理论的美妙结合。

伟大的统一:物理与学习

对机器学习的一个常见批评是其对数据的渴求。如果我们没有来自模拟或实验的海量数据集怎么办?在物理学中,我们通常拥有同样宝贵的东西:控制方程。物理信息神经网络(PINN)是一场革命,它表明网络可以不依赖数据进行训练,而是通过要求其输出满足一个 PDE 来训练。然而,一个 PINN 只学习一个特定问题实例的解。

下一个飞跃是将 PINN 的无数据训练与 DeepONet 的泛化能力相结合。这就产生了“物理信息 DeepONet”。想象一个复杂的耦合问题,比如一个金属物体在塑性变形时被加热。其行为取决于一整套材料参数场:刚度、热导率、屈服应力等等。一个标准的 PINN 对于每一种新材料都需要从头开始重新训练。

然而,一个物理信息 DeepONet 学习的是将参数场映射到解场的整个算子。分支网络接收材料属性,而躯干网络处理时空坐标。该网络通过最小化一个由控制 PDE(动量平衡、热方程、塑性定律)的残差组成的损失函数来进行训练。网络从未见过任何一个“正确”的解。相反,它在函数空间中探索,直到找到一个算子,其输出对于任何给定的材料都能普遍地遵循物理定律。这就像学习国际象棋的规则,不是通过研究数百万盘棋局记录,而是仅仅被给予规则书,然后自己发现所有由此产生的有效策略。

预测的艺术:预报与数据同化

科学中一些规模最大的计算致力于预报——预测天气、气候或洋流的路径。这些系统是混沌的,意味着初始状态的微小误差会呈指数级增长,使得长期预测变得不可能。现代预报依赖于一个称为数据同化的过程,该过程不断用传入的观测数据来校正模型的状态。

一种强大的技术是 4D-Var,可以将其视为宇宙尺度的优化。它寻求在一周开始时大气的完美初始状态,当这个状态通过物理模型向前演化时,能够最好地匹配整周收集到的所有卫星和气象站数据。这需要多次正向和反向运行庞大的天气模型(流映射 Φ\PhiΦ)及其伴随模型。这极其昂贵。

在这里,DeepONet 可以作为一个超快速的代理模型 Φ^\widehat{\Phi}Φ。一旦训练好以模仿昂贵的物理模型,它就可以被放入 4D-Var 优化循环中,有可能在保持变分框架完整性的同时,将计算成本削减几个数量级。

更深层次地,算子学习为我们审视混沌本身提供了一个新的视角。Koopman 算子理论告诉我们,即使是最狂野的非线性混沌动力学,也可以被看作是简单的线性演化,只要我们在一个不同的、通常是无限维的“可观测量”函数空间中观察它们。挑战在于找到这个神奇的“Koopman 视角”。DeepONet 的架构可以被设计来做这件事,其躯干网络学习这些特殊可观测量函数的基。通过学习一个近似的 Koopman 算子,我们可以预测像 Lorenz-96 模型这样的混沌系统,其稳定性可能比直接尝试对非线性动力学建模更高。

未见的世界:学习模型闭包与逆映射

也许算子学习最深远的应用在于模拟我们无法看到的东西。在许多复杂系统中,比如地球气候,我们只能承担模拟大尺度现象(全球风型、海洋环流)的成本。然而,我们知道小尺度的、未解析的过程(单个云朵、微小的海洋涡旋)对大尺度有着至关重要的集体效应。“闭包问题”是计算科学的重大挑战之一:我们如何表示这种看不见的东西对看得见的东西的影响?

我们可以将此构建为一个算子学习问题。闭包是一个算子,它将已解析的大尺度场的状态映射到一个代表未解析小尺度净效应的项。DeepONet 可以在来自高分辨率模拟的数据上进行训练,以学习这个闭包算子,从而为构建更准确、物理上更一致的多尺度系统粗粒度模型提供一种方法。

最后,我们可以将整个问题颠倒过来。我们能否不学习从因到果的正向映射,而是学习从果到因的逆映射?对于许多不适定逆问题来说,这才是真正的目标。一个卓越的策略是训练一个 DeepONet 作为学习到的正则化逆。该网络 Rθ\mathcal{R}_{\theta}Rθ​ 接收模糊或不完整的数据 yyy,并直接输出真实状态 xxx 的估计。它的训练方式是强制其输出 x^=Rθ(y)\hat{x} = \mathcal{R}_{\theta}(y)x^=Rθ​(y) 最小化定义经典解的 Tikhonov 变分目标函数。通过这种方式,网络直接从正则化的数学原理中学习“求逆的艺术”,将解决逆问题的成本摊销到整个数据分布上。

从简单的热扩散到混沌的结构,从材料的记忆到云层对我们气候的无形影响,深度算子网络提供了一种统一的语言。它向我们展示,支配我们宇宙的关系不仅仅存在于数字之间,也存在于整个函数、整个场、整个历史之间。通过学习这些关系,我们不仅仅是在拟合数据;我们是在捕捉物理定律本身的一部分。