使用深度学习和物理约束求解偏微分方程


偏微分方程(PDE)是研究各种自然现象的重要工具,被广泛用于解释各种物理规律。此外,许多工程和技术问题可以用偏微分方程进行建模和分析,如尾流湍流、光纤通信、大气污染物扩散等。因此,偏微分方程的研究对于航空航天、数值天气预报等许多领域都具有重要意义。目前,偏微分方程与其他许多学科的联系日益紧密,相互促进。因此,对偏微分方程的研究具有重要意义。然而,偏微分方程研究中的一个主要困难是往往不可能获得解析解。为此,相关研究人员提出了各种求解偏微分方程的数值方法,如有限差分法、有限元法、有限体积法等。数值方法极大地促进了偏微分方程的研究。如今,这些方法已经得到了广泛的应用,并且还在不断完善。与此同时,研究人员也在努力开发解决偏微分方程的新方法和新工具 1

如今,越来越多的研究人员使用深度学习方法来研究偏微分方程。在众多的研究中,Raissi2等人提出的物理信息神经网络(PINN) 是一项不可忽视的重要工作。该神经网络模型考虑了偏微分方程所包含的物理规律,并将其作为正则项编码到神经网络中,提高了神经网络模型的性能。

微分方程求解介绍

传统的前向神经网络完全基于数据驱动的方法,没有考虑数据中包含的物理规律。因此,为了得到合理的模型,往往需要大量的数据对神经网络进行训练。相反,物理信息神经网络通过强迫网络输出满足相应的偏微分方程,将物理信息引入网络。具体地说,通过在损失函数中加入偏微分方程的正则化,使得模型在训练过程中考虑了物理规律。 这种处理使得训练过程需要较少的数据,并且加快了训练过程。物理信息神经网络不仅可以用来解决正向问题,即求偏微分方程的近似解,还可以用来求解反问题,即从训练数据中获得偏微分方程的参数。.
前向神经网络介绍

前向全连接神经网络(FNN)的结构图
它由输入层、一个或多个隐藏层和一个输出层组成,每个层包含一个或多个人工神经元

迭代法求解微分方程

对于任意一个二阶微分方程,我们都可以用这个方程表示出
G ( x ⃗ , ψ ( x ⃗ ) , ∇ ψ ( x ⃗ ) , ∇ 2 ψ ( x ⃗ ) ) = 0 , x ⃗ ∈ D G(\vec{x},\psi (\vec{x}), \nabla\psi (\vec{x}), \nabla^2\psi (\vec{x}))=0,\vec{x}\in D G(x ,ψ(x ),ψ(x ),2ψ(x ))=0,x D

求解目的就是找出这样的一个方程: ψ ( x ⃗ ) \psi (\vec{x}) ψ(x ),能够满足以上的 G ( x ⃗ ) G(\vec{x}) G(x )函数。

求解微分方程的数值解,常常使用计算机辅助求解。

对于计算机求解,第一步要将其离散化处理:
G ( x i ⃗ , ψ ( x i ⃗ ) , ∇ ψ ( x i ⃗ ) , ∇ 2 ψ ( x i ⃗ ) ) = 0 , ∀ x i ⃗ ∈ D ^ G(\vec{x_i},\psi (\vec{x_i}), \nabla\psi (\vec{x_i}), \nabla^2\psi (\vec{x_i}))=0, \forall\vec{x_i}\in \hat{D} G(xi ,ψ(xi ),ψ(xi ),2ψ(xi ))=0,xi D^
离散化后,微分项就变成差分项:
∂ ψ ∂ x ≈ ψ k − ψ k − 1 Δ x , ∂ 2 ψ ∂ x 2 ≈ ψ k + 1 − 2 ψ k + ψ k − 1 Δ x 2 \frac{\partial\psi}{\partial x} \approx\frac{\psi^k-\psi^{k-1}}{\Delta x}, \frac{\partial^2\psi}{\partial x^2} \approx\frac{\psi^{k+1}-2\psi^{k}+\psi^{k-1}}{\Delta x^2} xψΔxψkψk1,x22ψΔx2ψk+12ψk+ψk1
然后使用计算机按照步长 Δ x {\Delta x} Δx迭代求解即可。

PINN法求解微分方程

人工神经网络若要求解该方程,那就设 ψ ( x ⃗ ) \psi (\vec{x}) ψ(x )为如下形式:
ψ ( x ⃗ ) ≡ N m ( x ⃗ , { w , b ⃗ } ) \psi (\vec{x})\equiv N_m(\vec{x},\begin{Bmatrix} w ,\vec{b}\end{Bmatrix}) ψ(x )Nm(x ,{w,b })
上式中, N m N_m Nm表示神经网络的第 m m m层的输出,在这里也就表示整个前向神经网络的输出。 { w , b ⃗ } \begin{Bmatrix} w ,\vec{b}\end{Bmatrix} {w,b }表示全连接神经网络的权重与偏置。

微分项借助神经网络的连接规则,采用 反向传播(Back Propagation, BP)算法 进行计算。
在这里插入图片描述

反向传播算法示意图

传播过程中满足如下公式:
∂ ( n ) ψ ∂ ψ ( j ) = ∑ i , j ∈ P a ( ψ ( i ) ) ∂ ψ ( n ) ∂ ψ ( i ) ∂ ψ ( i ) ∂ ψ ( j ) \frac{\partial^{(n)}\psi}{\partial \psi^{(j)}}= \sum_{i,j\in Pa(\psi^{(i)})}\frac{\partial\psi^{(n)}}{\partial \psi^{(i)}}\frac{\partial\psi^{(i)}}{\partial \psi^{(j)}} ψ(j)(n)ψ=i,jPa(ψ(i))ψ(i)ψ(n)ψ(j)ψ(i)
具体的,对于整个网络来说,输出对输入参数的微分即为:
∂ k ψ ∂ x k = ∑ i = 1 m v i w i , j k σ i ( k ) \frac{\partial^{k}\psi}{\partial x^{k}}= \sum_{i=1}^mv_iw_{i,j}^k\sigma_i^{(k)} xkkψ=i=1mviwi,jkσi(k)
其中 σ i \sigma_i σi表示第 i i i层网络的激活函数。

PINN方法是将物理公式编码到神经网络的正则化项中,其损失函数包含物理背景。
L ( { w , b ⃗ } ) = 1 i m a x ∑ i , m ∣ ∣ F ^ ( x i ⃗ , ψ ^ m ( x ⃗ i ) , … ∇ 2 ψ ^ ( x i ⃗ ) ) ∣ ∣ + ∑ B . C . ∣ ∣ ∇ p ψ ^ m ( x ⃗ b ) − K ( x b ⃗ ) ∣ ∣ L(\begin{Bmatrix} w ,\vec{b}\end{Bmatrix})=\frac{1}{i_{max}}\sum_{i,m}\left|\right|\hat F(\vec{x^i},\hat \psi_m(\vec x^i), \dots \nabla^2\hat\psi(\vec{x^i}))\left|\right|+\sum_{B.C.}\left|\right|\nabla^p\hat\psi_m(\vec x^b)-K(\vec{x_b})\left|\right| L({w,b })=imax1i,mF^(xi ,ψ^m(x i),2ψ^(xi ))+B.C.pψ^m(x b)K(xb )
在这个损失函数中,第一项表示由物理公式产生的损失,第二项表示由初始值(Initial conditions)\边界值(Boundary conditions)带来的误差,将损失函数 L ( { w , b ⃗ } ) L(\begin{Bmatrix} w ,\vec{b}\end{Bmatrix}) L({w,b })的损失值降到最小,即表示神经网络的输出值能满足边界条件的情况下,也能满足物理公式! 也就是建立起输出到输入的前向神经网络,该网络能够满足求解需要。

方法验证

伯格斯方程验证

伯格斯方程(Burgers equation) 是一个模拟冲击波的传播和反射的非线性偏微分方程。伯格斯方程也称为粘性伯格斯方程,只适用于一个空间维度。通过求解该方程验证PINN方法在偏微分下的有效性。

伯格斯方程的表达形式:
ψ t + ψ ψ x − ( 0.01 / π ) ψ x x = 0 , x ∈ [ − 1 , 1 ] , t ∈ [ 0 , 1 ] \psi_t+\psi\psi_x-(0.01/\pi)\psi_{xx}=0,x\in [-1,1],t\in[0,1] ψt+ψψx(0.01/π)ψxx=0,x[1,1],t[0,1]
边界条件如下:
B . C . { ψ ( 0 , x ) = − s i n ( π x ) , ψ ( t , − 1 ) = u ( t , 1 ) = 0 B.C. \begin{cases} \psi(0,x)=-sin(\pi x), & \\ \psi(t,-1)=u(t,1)=0 \end{cases} B.C.{ψ(0,x)=sin(πx),ψ(t,1)=u(t,1)=0
在这里插入图片描述

伯格斯方程解析解

下图为网络结构图,绿色部分是前向全连接神经网络,红色部分是偏微分方程构成的内嵌网络部分。全连接神经网络的输入即为伯格斯方程的两个自变量,输出为方程的解。灰色部分为内嵌物理公式与边界条件构成的损失值部分。

在这里插入图片描述

PINN网络结构图

在这里插入图片描述

使用PINN方法求解出的伯格斯方程解

拉普拉斯算子的二阶偏微分方程验证

使用PINN网络求解二阶偏微分方程。偏微分方程的方程式由下面的方程给出。
∇ 2 ψ ( x , y ) = e − x ( x − 2 + y 3 + 6 y ) , x , y ∈ [ 0 , 1 ] \nabla^2\psi(x,y)=e^{-x}(x-2+y^3+6y),x,y\in [0,1] 2ψ(x,y)=ex(x2+y3+6y),x,y[0,1]
边界条件如下:
B . C . { ψ ( 0 , y ) = y 3 , ψ ( i , y ) = ( 1 + y 3 ) e − 1 , ψ ( x , 0 ) = x e − x , ψ ( x , 1 ) = e − x ( x + 1 ) . B.C. \begin{cases} \psi(0,y)=y^3, & \\ \psi(i,y)=(1+y^3)e^{-1},\\ \psi(x,0)=xe^{-x},\\ \psi(x,1)=e^{-x}(x+1). & \end{cases} B.C.ψ(0,y)=y3,ψ(i,y)=(1+y3)e1,ψ(x,0)=xex,ψ(x,1)=ex(x+1).
这个方程有明确的解析解,解析解的表达式为: ψ a ( x , y ) = e − x ( x + y 3 ) \psi_a(x,y)=e^{-x}(x+y^3) ψa(x,y)=ex(x+y3)
根据表达式绘制出解析解的图像:
在这里插入图片描述

二阶偏微分方程解析解图

二阶偏微分方程解析解图像。x1和x2分别表示两个输入。

使用神经网络求解的偏微分方程图像如图:
在这里插入图片描述

PINN方法求解结果图

解析解与神经网络求解之间各个点的绝对误差使用下图展示。图中可以分析出PINN网络对求解二阶偏微分方程的准确度较高,可用于二阶偏微分方程的求解。
在这里插入图片描述

解析解与PINN方法求解的绝对误差

代码展示

下面展示求解PINN偏微分方程使用的代码,该代码求解的方程为一维形式的Allen-Cahn方程。更改 loss_ped() 方法代码可方便求解其他偏微分方程。(代码保护暂不支持查看)

结语

PINN方法是一种融合物理信息的神经网络求解偏微分方程的方法。该方法是对以往物理信息神经网络的改进。在该方法中,将偏微分方程中包含的物理定律作为正则化引入到神经网络中。这一改进激励神经网络更好地从有限数量的观测中学习偏微分方程的解。该方法对于物理模型明确但是数据难以测量的模型建模有重要意义。 物理信息神经网络最重要的任务是引入物理信息的合理规则化。物理信息的使用使神经网络能够更好地从较少的观测中学习偏微分方程的解。


  1. 链接: Solving Partial Differential Equations Using Deep Learning and Physical Constraints. ↩︎

  2. 链接: Hidden fluid mechanics: Learning velocity and pressure fields from flow visualizations. ↩︎

  • 8
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
物理内嵌神经网络(Physics-Informed Neural Networks,PINNs)是一种将物理知识融入神经网络的编程方法。PINNs可以用于解决与偏微分方程(PDE)相关的问题,包括方程求解、参数反演、模型发现、控制与优化等。PINNs的基本思想是通过在神经网络中嵌入物理方程作为约束条件,使得网络能够学习到物理规律并用于求解问题。这种方法的优势在于可以利用神经网络强大的非线性拟合能力和灵活性来解决复杂的物理问题,同时还能够结合数值方法的精确性和稳定性。 具体而言,物理内嵌神经网络的编程过程包括以下几个步骤: 1. 确定物理方程:首先需要确定待解决问题的物理方程,例如偏微分方程或其他物理规律。 2. 构建神经网络:接下来,需要设计神经网络的结构,包括输入层、隐藏层和输出层的节点数。可以根据问题的复杂程度和要求选择适当的网络结构。 3. 嵌入物理方程:将物理方程嵌入神经网络中,作为网络的约束条件。这可以通过在损失函数中添加物理方程的残差项来实现,以引导网络学习到符合物理规律的解。 4. 训练网络:使用已知的数据进行网络的训练,通过最小化损失函数来优化网络的参数。可以使用梯度下降等优化算法来实现参数的更新。 5. 验证和测试:训练完成后,需要对网络进行验证和测试,以评估其在未知数据上的性能和准确性。可以使用交叉验证等方法来进行模型评估。 物理内嵌神经网络编程的应用非常广泛,包括计算机视觉、生物医学、油气工程等领域。它不仅能够发现物理规律,还能够求解偏微分方程,为各个领域的科学研究和工程应用提供了一种强大的工具和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值