物理信息深度学习(PINN)
偏微分方程的数据驱动解和数据驱动发现
在 GitHub 上查看
作者
马齐亚·赖西, 巴黎·佩迪卡里斯, 和 乔治·埃姆·卡尼亚达基斯
摘要
我们介绍了物理信息神经网络-神经网络训练解决监督学习任务,同时尊重任何给定的物理定律,由一般非线性偏微分方程描述。我们在解决两类主要问题的背景下提出了我们的发展:偏微分方程的数据驱动解和数据驱动发现。根据可用数据的性质和布局,我们设计了两类不同的算法,即连续时间模型和离散时间模型。由此产生的神经网络形成了一种新的数据高效的通用函数近似器,可以自然地将任何潜在的物理定律编码为先验信息。在第一部分中,我们将演示如何使用这些网络来推断偏微分方程的解,并获得关于所有输入坐标和自由参数的完全可微的物理代理模型。在第二部分,我们重点讨论了偏微分方程的数据驱动发现问题。
非线性偏微分方程的数据驱动解
连续时间模型
定义 f ( t , x ) f(t,x) f(t,x) 为
f : = u t + N [ u ] , f := u_t + \mathcal{N}[u], f:=ut+N[u],
并通过深度神经网络逼近 u ( t , x ) u(t,x) u(t,x). 这个假设产生了一个物理信息的神经网络 f ( t , x ) f(t,x) f(t,x). 这个网络可以通过计算图的演算得到:反向传播。
示例(Burgers方程)
定义 f ( t , x ) f(t,x) f(t,x) 为
f : = u t + u u x − ( 0.01 / π ) u x x , f := u_t + u u_x – (0.01/\pi) u_{xx}, f:=ut+uux−(0.01/π)uxx,
并通过深度神经网络逼近 u ( t , x ) u(t,x) u(t,x). 为了强调实现这个想法的简单性,使用 Tensorflow 包给出一个 Python 代码片段。为此, u ( t , x ) u(t,x) u(t,x) 可以简单地定义为
def u(t, x): u = neural_net(tf.concat([t,x],1), weights, biases) return u
相应地,物理信息神经网络 f ( t , x ) f(t,x) f(t,x) 的形式为
def f(t, x): u = u(t, x) u_t = tf.gradients(u, t)[0] u_x = tf.gradients(u, x)[0] u_xx = tf.gradients(u_x, x)[0] f = u_t + u*u_x - (0.01/tf.pi)*u_xx return f
神经网络 u ( t , x ) u(t,x) u(t,x) 和 f ( t , x ) f(t,x) f(t,x) 之间的共享参数可以通过最小化均方误差损失来学习
M S E = M S E u + M S E f , MSE = MSE_u + MSE_f, MSE=MSEu+MSEf,
其中
M S E u = 1 N u ∑ i = 1 N u ∣ u ( t u i , x u i ) − u i ∣ 2 , MSE_u = \frac{1}{N_u}\sum_{i=1}^{N_u} |u(t^i_u,x_u^i) – u^i|^2, MSEu=Nu1i=1∑Nu∣u(tui,xui)−ui∣2,
M S E f = 1 N f ∑ i = 1 N f ∣ f ( t f i , x f i ) ∣ 2 . MSE_f = \frac{1}{N_f}\sum_{i=1}^{N_f}|f(t_f^i,x_f^i)|^2. MSEf=Nf1i=1∑Nf∣f(tfi,xfi)∣2.
这里, { t u i , x u i , u i } i = 1 N u \{t_u^i, x_u^i, u^i\}_{i=1}^{N_u} {
tui,xui,ui}i=1Nu 表示 u ( t , x ) u(t,x) u(t,x) 的初始和边界训练数据和指定 f ( t , x ) f(t,x) f(t,x) 的配置点 { t f i , x f i } i = 1 N f \{t_f^i, x_f^i\}_{i=1}^{N_f} {
tfi,xfi}i=1Nf. 损失 M S E u MSE_u MSEu 对应于初始和边界数据,而 M S E f MSE_f MSEf 在有限的配置点集上强制执行 Burgers 方程强加的结构。
Burgers 方程: Top: 预测解连同初始和边界训练数据。此外,我们还使用了10,000个使用拉丁超立方抽样策略生成的搭配点。 Bottom: 顶部图片中白色垂直线描绘的三个时间快照对应的预测解和精确解的比较。在单个
NVIDIA Titan X GPU卡上进行模型训练大约需要 60 秒。
示例 (Shrödinger 方程)
Shrödinger 方程: Top: 预测解连同初始和边界训练数据。此外,我们还使用了使用拉丁超立方体采样策略生成的20,000个搭配点. Bottom: 顶部图片中垂直虚线描绘的三个时间快照对应的预测解和精确解的比较。
到目前为止所考虑的连续时间神经网络模型的一个潜在限制源于需要使用大量搭配点 N f N_f Nf 以在整个时空域中强制执行物理信息约束。虽然这对一维或二维空间的问题没有造成重大问题,但它可能会在高维问题中引入严重的瓶颈,因为全局强制执行物理信息约束所需的配置点总数(即在我们的情况下为偏微分方程)将呈指数增长。在下一节中,我们提出了一种不同的方法,该方法通过利用经典的 Runge-Kutta 时间步进方案引入更结构化的神经网络表示来规避对配置点的需求。
离散时间模型
让我们利用 q q q阶龙格-库塔方法的一般形式,得到
u n + c i = u n − Δ t ∑ j = 1 q a i j N [ u n + c j ] , i = 1 , … , q , u n + 1 = u n − Δ t ∑ j = 1 q b j N [ u n + c j ] . \begin{array}{ll} u^{n+c_i} = u^n – \Delta t \sum_{j=1}^q a_{ij} \mathcal{N}[u^{n+c_j}], \ \ i=1,\ldots,q,\\ u^{n+1} = u^{n} – \Delta t \sum_{j=1}^q b_j \mathcal{N}[u^{n+c_j}]. \end{array} un+ci=un−Δt∑j=1qaijN[un+cj], i=1,…,q,un+1=un−Δt∑j=1qbjN[un+cj].
这里, u n + c j ( x ) = u ( t n + c j Δ t , x ) u^{n+c_j}(x) = u(t^n + c_j \Delta t, x) un+cj(x)=u(tn+cjΔt,x) 对于 j = 1 , … , q j=1, \ldots, q j=1,…,q. 这种通用形式封装了隐式和显式时间步进方案,具体取决于参数 { a i j , b j , c j } \{a_{ij},b_j,c_j\} {
aij,bj,cj}. 的选择。上面的方程可以等价地(转换为其余各层与第 n n n层的关系)表示为
u n = u i n , i = 1 , … , q , u n = u q + 1 n , \begin{array}{ll} u^{n} = u^n_i, \ \ i=1,\ldots,q,\\ u^n = u^n_{q+1}, \end{array} un=uin, i=1,…,q,un=uq+1n,
其中
u i n : = u n + c i + Δ t ∑ j = 1 q a i j N [ u n + c j ] , i = 1 , … , q , u q + 1 n : = u n + 1 + Δ t ∑ j = 1 q b j N [ u n + c j ] . \begin{array}{ll} u^n_i := u^{n+c_i} + \Delta t \sum_{j=1}^q a_{ij} \mathcal{N}[u^{n+c_j}], \ \ i=1,\ldots,q,\\ u^n_{q+1} := u^{n+1} + \Delta t \sum_{j=1}^q b_j \mathcal{N}[u^{n+c_j}]. \end{array} uin:=un+ci+Δt∑j=1qaijN[un+cj], i=1,…,q,uq+1n:=un+1+Δt∑j=1qbjN[un+cj].
我们先放置一个多输出神经网络
[ u n + c 1 ( x ) , … , u n + c q ( x ) , u n + 1 ( x ) ] . \begin{bmatrix} u^{n+c_1}(x), \ldots, u^{n+c_q}(x), u^{n+1}(x) \end{bmatrix}. [un+c1(x),…,un+cq(x),un+1(x)].
这个先验假设加上上面的方程式得到了一个以 x x x作为输入和输出的物理信息神经网络
[ u 1 n ( x ) , … , u q n ( x ) , u q + 1 n ( x ) ] . \begin{bmatrix} u^n_1(x), \ldots, u^n_q(x), u^n_{q+1}(x) \end{bmatrix}. [u1n(x),…,uqn(x),uq+1n(x)].
示例 (Allen-Cahn 方程)
这个例子旨在强调提出的离散时间模型处理控制偏微分方程中不同类型非线性的能力。为此目的,让我们考虑 Allen-Cahn 方程和周期边界条件
u t − 0.0001 u x x + 5 u 3 − 5 u = 0 , x ∈ [ − 1 , 1 ] , t ∈ [ 0 , 1 ] , u ( 0 , x ) = x 2 cos ( π x ) , u ( t , − 1 ) = u ( t , 1 ) , u x ( t , − 1 ) = u x ( t , 1 ) . \begin{array}{l} u_t – 0.0001 u_{xx} + 5 u^3 – 5 u = 0, \ \ \ x \in [-1,1], \ \ \ t \in [0,1],\\ u(0, x) = x^2 \cos(\pi x),\\ u(t,-1) = u(t,1),\\ u_x(t,-1) = u_x(t,1). \end{array} ut−0.0001uxx+5u3−5u=0, x∈[−1,1], t∈[0,1],u(0,x)=x2cos(πx),u(t,−1)=u(t,1),ux(t,−1)=ux(t,1).
Allen-Cahn 方程是反应扩散系统领域的一个著名方程。它描述了多组分合金体系的相分离过程,包括有序-无序转变。对于 Allen-Cahn 方程,给出了非线性算子
N [ u n + c j ] = − 0.0001 u x x n + c j + 5 ( u n + c j ) 3 − 5 u n + c j , \mathcal{N}[u^{n+c_j}] = -0.0001 u^{n+c_j}_{xx} + 5 \left(u^{n+c_j}\right)^3 – 5 u^{n+c_j}, N[un+cj]=−0.0001uxxn+cj+5(un+cj)3−5un+cj,
并且可以通过最小化误差平方和来学习神经网络的共享参数
S S E = S S E n + S S E b , SSE = SSE_n + SSE_b, SSE=SSEn+SSEb,
其中
S S E n = ∑ j = 1 q + 1 ∑ i = 1 N n ∣ u j n ( x n , i ) − u n , i ∣ 2 , SSE_n = \sum_{j=1}^{q+1} \sum_{i=1}^{N_n} |u^n_j(x^{n,i}) – u^{n,i}|^2, SSEn=j=1∑q+1i=1∑Nn∣ujn(xn,i)−un,i∣2,
S S E b = ∑ i = 1 q ∣ u n + c i ( − 1 ) − u n + c i ( 1 ) ∣ 2 + ∣ u n + 1 ( − 1 ) − u n + 1 ( 1 ) ∣ 2 + ∑ i = 1 q ∣ u x n + c i ( − 1 ) − u x n + c i ( 1 ) ∣ 2 + ∣ u x n + 1 ( − 1 ) − u x n + 1 ( 1 ) ∣ 2 . % \begin{array}{rl} SSE_b =& \sum_{i=1}^q |u^{n+c_i}(-1) – u^{n+c_i}(1)|^2 + |u^{n+1}(-1) – u^{n+1}(1)|^2 \\ +& \sum_{i=1}^q |u_x^{n+c_i}(-1) – u_x^{n+c_i}(1)|^2 + |u_x^{n+1}(-1) – u_x^{n+1}(1)|^2. \end{array} % SSEb=+∑i=1q∣un+ci(−1)−un+ci(1)∣2+∣un+1(−1)−un+1(1)∣2∑i=1q∣uxn+ci(−1)−uxn+ci(1)∣2+∣uxn+1(−1)−uxn+1(1)∣2.
这里, { x n , i , u n , i } i = 1 N n \{x^{n,i}, u^{n,i}\}_{i=1}^{N_n} {
xn,i,un,i}i=1Nn 对应于时间 t n t^n tn 的数据.
Allen-Cahn 方程: Top: 解以及初始训练(t=0.1)到最终预测(t=0.9)训练快照的位置. Bottom: 顶部图片中白色垂直线描绘的初始训练数据和最终预测快照。
非线性偏微分方程的数据驱动发现
在下文中,我们将概述我们解决这个问题的两种主要方法,即连续时间模型和离散时间模型,以及针对各种基准集合的一系列结果和系统研究。在第一种方法中,我们将假设在整个时空域中可以使用分散的和潜在的噪声测量。 在后者中,我们将尝试仅从在不同时刻拍摄的两个数据快照推断未知参数 λ \lambda λ。本手稿中使用的所有数据和代码均可在 GitHub 上公开获取.
连续时间模型
定义 f ( t , x ) f(t,x) f(t,x) 为
f : = u t + N [ u ; λ ] f := u_t + \mathcal{N}[u;\lambda] f:=ut+N[u;λ]
然后通过深度神经网络逼近 u ( t , x ) u(t,x) u(t,x). 这个假设生成了一个物理信息神经网络 f ( t , x ) f(t,x) f(t,x). 这个网络可以通过计算图的演算得到:反向传播。值得强调的是,微分算子 λ \lambda λ 的参数变成了物理信息神经网络 f ( t , x ) f(t,x) f(t,x) 的参数。
示例 (Navier-Stokes 方程)
下图显示了我们在此示例中的结果摘要。

Navier-Stokes 方程: Top: Re=100时,不可压缩流动和动态涡脱落经过圆柱体。时空训练数据对应于圆柱体尾流中所描绘的矩形区域. Bottom: 流向和横向速度分量的训练数据点的位置。.

Navier-Stokes 方程: Top: 代表时刻的预测与精确瞬时压力场。根据定义,压力可以恢复到一个常数,从而证明两个图之间的不同幅度是合理的。这种显着的定性一致性突出了基于物理的神经网络在模型训练期间没有使用压力数据而识别整个压力场的能力。Bottom: 对偏微分方程进行了修正.
到目前为止,我们的方法是假设在整个时空域都可以获得分散的数据。然而,在许多实际感兴趣的情况下,人们可能只能在不同的时间瞬间观察系统。在下一节中,我们将介绍一种不同的方法,它只使用两个数据快照来处理数据驱动的发现问题。我们将看到,如何利用经典的龙格-库塔时间步进方案,构建离散时间物理信息神经网络,即使在数据快照之间的时间差距非常大的情况下,也能保持高预测精度。
离散时间模型
我们首先采用 q q q 阶龙格-库塔方法的一般形式,得到
u n + c i = u n − Δ t ∑ j = 1 q a i j N [ u n + c j ; λ ] , i = 1 , … , q , u n + 1 = u n − Δ t ∑ j = 1 q b j N [ u n + c j ; λ ] . \begin{array}{ll} u^{n+c_i} = u^n – \Delta t \sum_{j=1}^q a_{ij} \mathcal{N}[u^{n+c_j};\lambda], \ \ i=1,\ldots,q,\\ u^{n+1} = u^{n} – \Delta t \sum_{j=1}^q b_j \mathcal{N}[u^{n+c_j};\lambda]. \end{array} un+ci=un−Δt∑j=1qaijN[un+cj;λ], i=1,…,q,un+1=un−Δt∑j=1qbjN[un+cj;λ].
这里, u n + c j ( x ) = u ( t n + c j Δ t , x ) u^{n+c_j}(x) = u(t^n + c_j \Delta t, x) un+cj(x)=u(tn+cjΔt,x) 对于 j = 1 , … , q j=1, \ldots, q j=1,…,q. 这种通用形式封装了隐式和显式时间步进方案,具体取决于参数 { a i j , b j , c j } \{a_{ij},b_j,c_j\} {
aij,bj,cj}. 的选择。上面的方程可以等价地表示为
u n = u i n , i = 1 , … , q , u n + 1 = u i n + 1 , i = 1 , … , q . \begin{array}{ll} u^{n} = u^n_i, \ \ i=1,\ldots,q,\\ u^{n+1} = u^{n+1}_{i}, \ \ i=1,\ldots,q. \end{array} un=uin, i=1,…,q,un+1=uin+1, i=1,…,q.
其中
u i n : = u n + c i + Δ t ∑ j = 1 q a i j N [ u n + c j ; λ ] , i = 1 , … , q , u i n + 1 : = u n + c i + Δ t ∑ j = 1 q ( a i j − b j ) N [ u n + c j ; λ ] , i = 1 , … , q . \begin{array}{ll} u^n_i := u^{n+c_i} + \Delta t \sum_{j=1}^q a_{ij} \mathcal{N}[u^{n+c_j};\lambda], \ \ i=1,\ldots,q,\\ u^{n+1}_{i} := u^{n+c_i} + \Delta t \sum_{j=1}^q (a_{ij} – b_j) \mathcal{N}[u^{n+c_j};\lambda], \ \ i=1,\ldots,q. \end{array} uin:=un+ci+Δt∑j=1qaijN[un+cj;λ], i=1,…,q,uin+1:=un+ci+Δt∑j=1q(aij−bj)N[un+cj;λ], i=1,…,q.
我们先放置一个多输出神经网络
[ u n + c 1 ( x ) , … , u n + c q ( x ) ] . \begin{bmatrix} u^{n+c_1}(x), \ldots, u^{n+c_q}(x) \end{bmatrix}. [un+c1(x),…,un+cq(x)].
这一先验假设产生了两个物理信息神经网络
[ u 1 n ( x ) , … , u q n ( x ) , u q + 1 n ( x ) ] , \begin{bmatrix} u^{n}_1(x), \ldots, u^{n}_q(x), u^{n}_{q+1}(x) \end{bmatrix}, [u1n(x),…,uqn(x),uq+1n(x)],
和
[ u 1 n + 1 ( x ) , … , u q n + 1 ( x ) , u q + 1 n + 1 ( x ) ] . \begin{bmatrix} u^{n+1}_1(x), \ldots, u^{n+1}_q(x), u^{n+1}_{q+1}(x) \end{bmatrix}. [u1n+1(x),…,uqn+1(x),uq+1n+1(x)].
给定两个不同时间快照的噪声测量值 { x n , u n } \{\mathbf{x}^{n}, \mathbf{u}^{n}\} {
xn,un} 和 { x n + 1 , u n + 1 } \{\mathbf{x}^{n+1}, \mathbf{u}^{n+1}\} {
xn+1,un+1} 系统的时间分别为 t n t^{n} tn 和 t n + 1 t^{n+1} tn+1, 神经网络的共享参数以及微分算子的参数 λ \lambda λ 可以通过最小化误差平方和来训练
S S E = S S E n + S S E n + 1 , SSE = SSE_n + SSE_{n+1}, SSE=SSEn+SSEn+1,
其中
S S E n : = ∑ j = 1 q ∑ i = 1 N n ∣ u j n ( x n , i ) − u n , i ∣ 2 , SSE_n := \sum_{j=1}^q \sum_{i=1}^{N_n} |u^n_j(x^{n,i}) – u^{n,i}|^2, SSEn:=j=1∑qi=1∑Nn∣ujn(xn,i)−un,i∣2,
S S E n + 1 : = ∑ j = 1 q ∑ i = 1 N n + 1 ∣ u j n + 1 ( x n + 1 , i ) − u n + 1 , i ∣ 2 . SSE_{n+1} := \sum_{j=1}^q \sum_{i=1}^{N_{n+1}} |u^{n+1}_j(x^{n+1,i}) – u^{n+1,i}|^2. SSEn+1:=j=1∑qi=1∑Nn+1∣ujn+1(xn+1,i)−un+1,i∣2.
这里, x n = { x n , i } i = 1 N n \mathbf{x}^n = \left\{x^{n,i}\right\}_{i=1}^{N_n} xn={
xn,i}i=1Nn, u n = { u n , i } i = 1 N n \mathbf{u}^n = \left\{u^{n,i}\right\}_{i=1}^{N_n} un={
un,i}i=1Nn, x n + 1 = { x n + 1 , i } i = 1 N n + 1 \mathbf{x}^{n+1} = \left\{x^{n+1,i}\right\}_{i=1}^{N_{n+1}} xn+1={
xn+1,i}i=1Nn+1, u n + 1 = { u n + 1 , i } i = 1 N n + 1 \mathbf{u}^{n+1} = \left\{u^{n+1,i}\right\}_{i=1}^{N_{n+1}} un+1={
un+1,i}i=1Nn+1.
示例 (Korteweg–de Vries 方程)
我们的最后一个例子旨在强调所提出的框架处理涉及高阶导数的控制偏微分方程的能力。在这里,我们考虑浅水表面波的数学模型; Korteweg-de Vries (KdV) 方程。 KdV 方程是 u t + λ 1 u u x + λ 2 u x x x = 0 , u_t + \lambda_1 u u_x + \lambda_2 u_{xxx} = 0, ut+λ1uux+λ2uxxx=0,
其中 ( λ 1 , λ 2 ) (\lambda_1, \lambda_2) (λ1,λ2) 是未知参数。对于 KdV 方程,非线性算子由下式给出
N [ u n + c j ] = λ 1 u n + c j u x n + c j − λ 2 u x x x n + c j \mathcal{N}[u^{n+c_j}] = \lambda_1 u^{n+c_j} u^{n+c_j}_x – \lambda_2 u^{n+c_j}_{xxx} N[un+cj]=λ1un+cjuxn+cj−λ2uxxxn+cj
以及神经网络的共享参数以及 KdV 方程中的参数 λ = ( λ 1 , λ 2 ) \lambda = (\lambda_1, \lambda_2) λ=(λ1,λ2)
可以通过最小化上面给出的误差平方和来学习。
KdV 方程n: Top: 解以及两个训练快照的时间位置. Middle: 上图中虚线所示的两个瞬时快照对应的训练数据和精确解. Bottom: 修正偏微分方程以及确定的方程
结论
尽管提出了一系列有希望的结果,但读者可能会同意,这本由两部分组成的论文提出的问题多于它的答案。在更广泛的背景下,并在寻求进一步了解这些工具的过程中,我们相信这项工作倡导机器学习和经典计算物理学之间富有成效的协同作用,有可能丰富这两个领域并导致高影响力的发展。
致谢
这项工作得到了 DARPA EQUiPS 赠款 N66001-15-2-4055 和 AFOSR 赠款 FA9550-17-1-0013 的支持。所有数据和代码都在 GitHub 上公开提供
引文
笔记来源:https://github.com/maziarraissi/PINNs
课程及参考文献
深度学习与科学计算的结合:基础与提高DeepXDE(天元数学东南中心)
DeepXDE 科学机器学习库(薛定谔方程)
课程视频下载密码:safh
Physics Informed Deep Learning (Part I)
Physics Informed Deep Learning (Part II)
DeepXDE- A Deep Learning Library for Solving Differential Equations
文献解读-Physics Informed Deep Learning(PINN)
文献解读-物理信息深度学习(PINN)
作者邮箱:turingscat@126.com
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224322.html原文链接:https://javaforall.net
