2026-07-09

Neural Networks for PDE

Neural Networks for PDE

Basic Structure

Simple GNN/CNN

一般不用于拟合算子,只能拟合一个特解.就输入某些初始条件输出解吧.

Graph Kernel Network -> FNO

原始论文是通过格林函数理论保证解算子的形式,提出了迭代形式:

vt+1(x)=σ(Wvt(x)+Dκϕ(x,y,a(x),a(y))vt(y)dy)\begin{gathered} v_{t+1}(x)=\sigma\left(Wv_t(x)+\int_D \kappa_\phi(x,y,a(x),a(y))v_t(y)dy\right) \end{gathered}

其中aa是PDE里的参数.注意到这个模型如果找一个网格然后离散化,就是一个图神经网络在图上传播的模型,所以原始论文确实是个GNN结构上的.

然后FNO的研究说直接取κ\kappa平移不变,把它变成了只和yxy-x有关的函数.从而后面这部分变成了κvt\kappa *v_t的形式.然后大家都知道做一次傅里叶变换可以把卷积变成点积,所以就变成了求F1(FvtFκ)\mathcal F^{-1}(\mathcal F v_t\cdot \mathcal F \kappa).这就是FNO了.实现的时候会离散化:对原始函数只截取傅里叶级数的前若干项,同时直接记录Fκ\mathcal F \kappa对应点值作为参数.

FNO的论文提到,他们尝试了让κ\kappa依赖Fa\mathcal F a结果效果不好,不会获得直接是常量的优势.

有趣的是,FNO看起来是由这个简化+性能优化来的,但如果觉得它的想法是 在其他变换后空间里去学函数表示,就会立刻诱导出把傅里叶变换变成其他的像拉普拉斯变换,小波变换之类的乱七八糟().

DeepONet

DeepONet是从一个逼近定理出发,逼近定理表示它的结构可以逼近任意算子.

它一般求出来的是点值而不是整个场(相比上面的FNO).

方法是给定函数uu和相求的点值yy,网络如图:

pasted-image-1

x1xmx_1\ldots x_m是训练时就定下来的.Trunk Net的输入只有yy,Branch Net的输入只有uu.一种解读是Branch Net学出来了某种基下的算子表示,而Trunk Net学出来了这个基变换.

实际上感觉这个点乘只是因为神经网络不能自然表示点乘,所以逼近定理需要把它单拿出来.

Extension

看起来大量论文都是对一些基础模型进行某几处扩展拿到的.相比整理具体模型似乎整理这些扩展更有道理一点

Physics Priori

PDE Loss

PINN,PINO,PI-DeepONet

统一内容:把要解的PDE的值直接加进损失函数.

然后这里有一个利用计算图自动求导的trick.

Feature Extract

eg: TF-Net

通过一个空间滤波器G1G_1和一个时间滤波器G2G_2人为划分网络输入.

对原始数据ww,用空间滤波后得到的去掉高频噪声的低频分量G1(w)G_1(w),再用时间滤波得到的是G2(G1(w))G_2(G_1(w))是低频成分的时间上的大趋势(?)

然后用三个网络分别处理G2(G1(w)),G1(w)G2(G1(w)),wG1(w)G_2(G_1(w)),G_1(w)-G_2(G_1(w)),w-G_1(w)

Pre Learnt Structure

eg: MP-PDE

如果网络难以自己学会导数结构,我们可以把这个结构喂进去.

mi,j=MLP([hi,hj,uiuj,xixj])m_{i,j}=\operatorname{MLP}([h_i,h_j,u_i-u_j,x_i-x_j])

hh是节点隐藏状态,uu是物理信息(PDE中的量),xx是空间位置.对规则网格,xixjx_i-x_j是常量.所以传播过程中的uiuju_i-u_j对应用差分逼近导数.

Forced Symmetry

eg: EquNet/Rsteer

这两个都是在CNN直接拟合解的基础上直接改成G-CNN的技术去强制对称性.

G-CNN的技术是,有一个变换群GG,对输入数据xx,用gGg\in G做不同卷积得到yg=xKgy_g=x*K_g,其中KK是卷积核,这一步被称为提升.

在过程中,要求每一步迭代ff保持f(gy)=gf(y),gGf(gy)=g\circ f(y),\forall g\in G.而这个条件可以导出一个卷积核必须是K(x)=wiΦ(x)K(x)=\sum w_i\Phi(x)的形式.其中Φ\Phi是根据变换群决定的基函数.wiw_i是可训练常量.即每一步迭代可以写成yn+1,g=f(yn,g)=yn,gK(x)y_{n+1,g}=f(y_{n,g})=y_{n,g}*K(x).

顶上这个就是EquNet了...它严格保证对称性

而Rsteer允许轻微的不对称,方法是允许wiw_i变成wi,gGw_{i,g}\in G,然后再用其他方法约束wi,gw_{i,g}的范围,避免对称性完全消失.

Math Method

Green Formula

BENO: 把解函数分解成边界上的积分和内部散度的积分以降维和解耦

Tensor Product

MIONet: 乘积空间的算子的基是基的张量积.所以可以先算出若干组各自空间的算子,然后再张量积之后求和,理论上也可以表示乘积空间中的任意算子.

所以MIONet说用若干个分支网络(每个分支网络都是对应原版DeepONet中Stacked版本)学出若干个各自空间的算子,然后再做张量积.一般会限制张量的秩.

Time Dimension Intergral

eg: GNODE: 将原来的预测t+dtt+dt时刻状态然后自回归,改为预测tt时刻导数,然后对区间[t,t+dt][t,t+dt]数值积分以消除连续性.

NN Method

GNN Build Graph

eg: MeshGraphNets

建图的时候除了建标准网格,当网格移动后,还会把距离小于一定值的边连上.且显示区分这两类边的双重建图模式.

Space Transform

L-DeepONet: 用编码/解码层 改成预测一个降维后的空间的算子.

Extension Structure

egs:

  • NOMAD: 本来的DeepONet是把分支和主干的结果作点乘,这个论文改成concat后塞进MLP.
  • Hyper DeepONet/ Other Hyper NN: 用一个神经网络的输出动态决定一些参数.
  • HAMLET: 在图神经网络的基础上,引入注意力去建模长程依赖关系.

RL

egs:

LAMP: 在原有网络的基础上,额外训练一个Actor和一个Critic,Actor决策是否把网格的每一处细分(一个对网格上每条边实现的分类模型),Critic用于评估在每一处细分的收益(包含精度提升和计算代价上升),对它俩跑强化学习,平衡计算代价和精度.

Thoughts

把拓展分成这三类,因为感觉这些变体的提出中 物理先验分类主要是对某个具体的PDE方程的解的性质. 数学方向的则是可以直接对着PDE/问题的形式观察出来的. AI方向的很多像人工智能经典方案,不会局限于这个领域. 当然它们也没有很明确的界限就是了.

Todo

  • 4.1 Physics-Informed Neural Network (PINN)
  • 4.2 DiscretizedConstraint-InformedNeuralNetwork
  • Applications
  • 结合传统方法
  • GeoFNO,GINO