为偏微分方程设计的傅里叶神经算子.

作者提出了一种用于求解偏微分方程(partial differential equations,PDEs)的神经网络,并使用这种网络学习PDE的解算子,实现从初值直接映射到PDE的解。

本文的讨论主要是在纳维-斯托克斯方程(Navier-Stokes equation)上进行的,为此先对其进行介绍。N-S方程是描述粘性不可压缩流体动量守恒的运动方程,反应粘性流体流动的基本规律。该方程是一个非线性偏微分方程,目前仅在一些特殊情况下可求得解析解,大部分情况中只能求得近似解。三维空间中的N-S方程组光滑解的存在性问题被美国克雷数学研究所设定为七个千禧年大奖难题之一。其表达形式如下:

tw(x,t)+u(x,t)w(x,t)=νΔw(x,t)+f(x)u(x,t)=0w(x,0)=w0(x)

其中ν黏度系数(viscosity coefficient)x(0,1)2是单位正方形的截面,t(0,T]表示时间。u速度场(velocity field)w=×u涡量(vorticity)。则该问题可以表示为给定初始涡量w0,求任意时刻截面上各处的涡量。特别地,在本文中,给定[0,10]作为训练数据,(10,T]作为预测目标。截面分辨率设置为64×64,因此问题转化为将定义在64×64×[0,10]上的函数映射为定义在64×64×(10,T]上的函数。这个过程可以通过神经网络实现。

本文提出的网络结构如上图所示。将输入a通过全连接神经网络P转化成更高的通道维度,经过T傅里叶神经算子(Fourier Neural Operator)层(实验中选取4层)进行处理,并将其通过全连接神经网络Q映射回目标维度,最终输出u。其中的傅里叶神经算子受到神经算子(Neural Operator)的启发。神经算子是指按照如下规则更新函数的值:

vt+1(x):=σ(Wvt(x)+(K(a;ϕ)vt)(x))

上式可以看作一个线性连接和一个非线性变换的组合,并通过激活函数。线性连接类似于ResNet中的跳跃连接,非线性变换K是通过核积分算子(kernel integral operator)实现的:

(K(a;ϕ)vt)(x):=Dκ(x,y,a(x),a(y);ϕ)vt(y)dy

作者选择核的形式为κϕ(x,y,a(x),a(y))=κϕ(xy),则上述操作形式上和卷积操作相似,因此可将其通过傅里叶变换表示:

(K(a;ϕ)vt)(x)=F1(F(κϕ)F(vt))(x)

引入一个参数矩阵Rϕ,其可以对较低的傅里叶模式进行变换,并过滤掉较高的模式。则最终将傅里叶神经算子表示为:

(K(a;ϕ)vt)(x)=F1(RϕF(vt))(x)

通过实验,本文提出的方法能够较好地预测2N-S方程的解,相比其他方法取得更低的相对误差: