Fourier Neural Operator(FNO)求解非线性偏微分方程
FNO的前世今生
继上次的DeepONet求解偏微分方程的文章,这次是介绍联合傅里叶算子和图神经网络的办法,也就是傅里叶神经算子办法,这篇创造性地引入了傅里叶算子,取得了能够与DeepONet扳手段的速度和经度
Li, Zongyi, et al. "Fourier neural operator for parametric partial differential equations." International Conference on Learning Representing, 2021. (arXiv preprint arXiv:2010.08895).
DeepONet的作者陆路博士还将FNO与DeepONet进行了比拟,也进行了一些拓展,有趣味的读者能够参考以下的论文:
Lu, Lu, et al. "A comprehensive and fair comparison of two neural operators (with practical extensions) based on fair data." Computer Methods in Applied Mechanics and Engineering 393 (2022): 114778.
如果间接看FNO那篇论文,大部分一开始的感觉都是不知所云,我也是这样的。这里我举荐能够先看一下论文一作Zongyi Li博士的之前两篇文章,能够帮忙更好地了解FNO这篇论文:
Li, Zongyi, et al. "Neural operator: Graph kernel network for partial differential equations." ICLR 2020 Workshop on Integration of Deep Neural Models and Differential Equations, 2020.
当然了,读者也能够疏忽下面的简介,上面我尽量把FNO介绍地比较清楚。
图核函数网络
这里就间接叙述图核函数网络的想法,上面给出一个个别模式的偏微分方程的零碎
$$\begin{aligned}\left(\mathcal{L}_{a} u\right)(x) &=f(x), & & x \in D \\u(x) &=0, & & x \in \partial D\end{aligned}$$
其中\( u(x)=u(x,t) \),作者在这里是疏忽了工夫这个维度\(t\),此外还默认\( u(x) \)是一个标量,这里的参数\(a\)能够是零碎的不同参数或者管制输出,这里的\(f(x)\)是一个固定的函数,在训练和应用的时候都是不变(并不是管制输出,这里要了解)。
随后,作者就引入了Green函数这个概念,\(G: D \times D \rightarrow \mathbb{R}\)是上面这个方程的惟一解
$$\mathcal{L}_{a} G(x, \cdot)=\delta_{x}$$
其中\(\delta_{x}\)就是复变中的狄利克雷函数,是一个定义在实数范畴上、值域不间断的函数。狄利克雷函数的图像以Y轴为对称轴,是一个偶函数,它处处不间断,处处极限不存在,不可黎曼积分。
这个Green函数忽然跳进去是很诡异的,然而其领有很多良好的性质,能够示意偏微分方程的解
$$u(x)=\int_{D} G_{a}(x, y) f(y) d y$$
下面的式子示意的意思,只有可能找到这样一个Green函数,那么在整个管制域内做积分就能失去偏微分方程的解\(u(x)\),这显然是不事实的,Green函数只在多数的状况下是解析的,这也就意味着解析的准确解是无奈失去,然而能够利用神经网络的弱小拟合能力对Green函数进行迫近,这也就是FNO办法的次要思维。
上面就是用核函数对Green函数进行迫近:
$$v_{t+1}(x)=\sigma\left(W v_{t}(x)+\int_{D} \kappa_{\phi}(x, y, a(x), a(y)) v_{t}(y) \nu_{x}(d y)\right)\tag{1}$$
其中\(\kappa_{\phi}(x, y, a(x), a(y))\)就是核函数,\(\sigma\)是激活函数,\(\nu_{x}(d y)\)是测度(这里不必管),然而还是有问题,这个公式是要在整个管制域\( D\)上进行计算,其计算量是十分大,相当于是一个全连贯的图网络,根本是偏微分方程的维度上来之后,这就是不可行的,这里\(v(x) \)是对\(u(x) \)的一个可逆变换,失去一个更高维的向量,具备更多的特色。
为了进步问题的一般性,作者随后就提出本人的算法用节点的邻域\(B(x,r)\)来代替\( D\),上面是对下面办法的一个近修改
$$\begin{aligned} v_0(x)=&P\left( x,a(x),a_{\epsilon}(x),\nabla a_{\epsilon}(x) \right) +p\\ v_{t+1}(x)=&\sigma \left( Wv_t(x)+\int_{B(x,r)}{\kappa _{\phi}}(x,y,a(x),a(y))v_t(y)\mathrm{d}y \right)\\ u(x)=&Qv_T(x)+q\\\end{aligned}$$
其中\( a_{\epsilon}(x)\)是对\( a(x)\)的高斯润滑版本,相当于晋升对于不同参数\( a(x)\)的泛化性能,P是将低维投影到高维的矩阵,Q则是将高维向量投影到低维的矩阵,都是投影算子,为了减少神经网络的特色维度。
上面就是用神经网络对核函数\( \kappa _{\phi}(x,y,a(x),a(y)) \)进行毕竟,此外,还要留神到这是在邻域\(B(x,r)\)上的,咱们很天然地就想到是消息传递图神经网络,就是上面的模式
$$v_{t+1}(x)=\sigma\left(W v_{t}(x)+\frac{1}{|N(x)|} \sum_{y \in N(x)} \kappa_{\phi}(e(x, y)) v_{t}(y)\right)$$
须要指出的是,这里的边特色定义为\( e(x, y)=(x, y, a(x), a(y)) \),剩下的工作就是搭建适合的神经网络对核函数的\(\kappa _{\phi}\)进行迫近,这里的具体实现形式能够参考图网络外面的一些办法,也有一些翻新点能够做。
如果本文中是思考在整个管制域\( D\)上构建全连贯神经网络,那么复杂度就是\( \mathcal{O}\left(K^{2}\right)\),作者这里提供了一个思路,就是采集\( l\)个子图,每个子图平均随机采样\( m \ll K\)个节点,那么复杂度就是\( \mathcal{O}\left(lm^{2}\right)\),这里的复杂度就能有所降落,随后作者还给出了一个升高复杂度的准确度误差的上界,这就是FNO的没有引入傅里叶算子的版本,前面的FNO就是为了升高对核函数\(\kappa _{\phi}\)的迫近老本。
升高\(\kappa _{\phi}\)的迫近老本上面的论文给出了一个办法:
Li, Zongyi, et al. "Multipole graph neural operator for parametric partial differential equations." Advances in Neural Information Processing Systems 33 (2020): 6755-6766.
FNO的庐山真面目
通过下面的介绍Zongyi Li博士的两篇论文,FNO能够天然地被导出。
如果咱们去掉对函数\(\kappa _{\phi}\)对 \(a \)的依赖并强加\(\kappa_{\phi}(x, y)=\kappa_{\phi}(x-y) \),能够失去(1)是一个卷积算子。
对于卷积算子,利用傅里叶变换能够失去如下的后果:
$$\left(\mathcal{K}(a ; \phi) v_{t}\right)(x)=\mathcal{F}^{-1}\left(\mathcal{F}\left(\kappa_{\phi}\right) \cdot \mathcal{F}\left(v_{t}\right)\right)(x)$$
解除上述公式对\( a\)的依赖,咱们能够失去
$$\left(\mathcal{K}(\phi) v_{t}\right)(x)=\mathcal{F}^{-1}\left(R_{\phi} \cdot\left(\mathcal{F} v_{t}\right)\right)(x) \quad \forall x \in D$$
其中\( k\in D, \left( \mathcal{F} v_t \right) (k)\in \mathbb{C} ^{d_v},R_{\phi}(k)\in \mathbb{C} ^{d_v \times d_v}\),都是一个函数空间,因为图网络其实是对间断空间的一个离散化,这里咱们也就思考对这些参数进行离散化,并利用疾速FFT进行变动。此外,因为傅里叶变换的频率是\( -\infty \rightarrow +\infty \),那么这里是对频率进行了一个限度,也就是说把傅里叶变换截断到下限频率
\( k_{\max}=\left| Z_{k_{\max}} \right|\),\( R_{\phi} \)是一个\( \left( k_{\max}\times d_v\times d_v \right) \)维的三阶张量。
上面给出了算法的具体实现流程图:
作者在试验局部进行了比拟,与U-Net、TF-Net和ResNet等经典办法相比具备显著的劣势
这里FNO-2D与FNP-3D的次要区别就是,FNO-2D利用了RNN构造,能够将解以固定距离长度\(\varDelta t \) 的增量流传到任意工夫\(T\),是一种自回归迭代的办法;FNP-3D间接将工夫维度增广到管制维度下来,以Conv3D构造间接训练,能够间接失去任意离散工夫点\(t\)上进行求解,不须要递推式的解法去求解,和DeepONet一样,是一种间接映射。FNO-3D办法更具表现力且更易于训练,然而试验里看出的是参数量更多且体现晋升不多。
论断
傅里叶神经算子在噪声数据上的体现是超过DeepONet,我猜是因为傅里叶变换时把高频的噪声信号给滤去了,这样傅里叶神经算子就对噪声不敏感了。FNO算法也启发了起初的很多钻研,大家有趣味地能够深刻浏览以下的论文,也是利用消息传递图神经网络,然而是利用的自回归办法,算是对传统办法的一个加强:
Johannes Brandstetter and Daniel E. Worrall and Max Welling. "Message passing neural PDE solvers." International Conference on Learning Representations (2022).