此文档用于介绍Physics-informed Neural Networks (PINN)。PINN技术最早是由Brown大学的一篇文章提出的:

Physics Informed Deep Learning (Part I): Data-driven Solutions of...

其目的是使用神经网络解决一般非线性偏微分方程(general nonlinear PDE)求解问题。PINN(Part1)解决PDE正向求解问题,与PINN(Part2)(同组的另一篇文章)提出的反问题有所不同。此文档将介绍PINN(Part1)。

问题设定

给定PDE:

$$ u_t + \mathcal{N}[u;\lambda] = 0, x \in \Omega, t \in [0, T] $$

其中$\mathcal{N}[u;\lambda]$是被$\lambda$参数控制的非线性微分算子,$x$为空间变量,$t$为时间变量,$u_t$为u对t的偏导数。我们用$u(x,t)$来表示给定x$x$t下的隐藏的解$u$。

例子(一维伯格斯方程

image.png

其中

image.png

$$ \lambda_1 = 1 \\ \lambda_2 = \frac{0.01}{\pi} $$

初始和边界条件为

image.png

Continuous Time Model

定义

image.png

PDE的目标是在满足初始和边界条件的前期下,输入给定的$(x,t)$,输出u使得$f= 0$。PINN的思路是将$(x,t)$输入到一个常规的的MLP神经网络中,设置dim=1的输出层用于表示u。这个MLP并没有得到任何的物理信息指示,故暂时不能被称为physics-informed。但当我们把得到的这个u重新带入到上式,计算出$u_t + \mathcal{N}[u]$,得到的值便和PDE有了关系,我们称MLP+PDE这一整套计算为一个PINN。

例子(一维伯格斯方程

以下代码使用Python TensorFlow语言表示,TensorFlow和其他深度学习框架(例如PyTorch)的autograd功能保证了$u_t, u_{xx}$等微分表达的计算。

image.png