PINN 讲义第 7 章:PINN 求解偏微分方程

3356 字
17 分钟
PINN 讲义第 7 章:PINN 求解偏微分方程

本文属于“PINN 入门讲义”系列:第 7 章。如果你是第一次阅读,建议先从 总目录 开始。

阅读说明#

这份讲义面向希望系统理解 Physics-Informed Neural Networks 的读者,尽量从微分方程、数值近似和神经网络函数表示的基本语言讲起,再逐步进入 PINN 的残差构造与训练过程。

上一章用常微分方程

dudt=u,u(0)=1\frac{du}{dt}=-u,\qquad u(0)=1

展示了 PINN 的最小闭环。未知解是一个一元函数 u(t)u(t),神经网络写成 uθ(t)u_\theta(t),残差是 duθdt+uθ\frac{du_\theta}{dt}+u_\theta,初值条件只作用在一个点 t=0t=0 上。偏微分方程的结构更丰富:未知解通常依赖空间和时间,方程在一个区域内部成立,初值条件作用在初始时刻的一整片空间上,边界条件作用在空间边界随时间形成的边界面上。

本章把第 6 章的思路推广到 PDE。我们以一维热方程为主例,因为它足够典型,又不会像流体方程那样过早引入复杂非线性和多变量耦合。通过热方程,读者可以清楚看到 PINN 在 PDE 中如何组织输入变量、配置点、初值点、边界点和残差损失。章末再简要介绍 Burgers 方程,说明非线性 PDE 只是在残差结构上更复杂,基本框架并没有改变。

7.1 从时间区间到空间-时间区域#

ODE 初值问题只需要在一条时间轴上考虑函数。PDE 问题则通常在空间-时间区域中考虑函数。以一维热传导为例,设空间区间为 0<x<L0<x<L,时间区间为 0<t<T0<t<T,未知温度为 u(x,t)u(x,t)。方程写成

ut=αuxx,0<x<L,0<t<T.u_t=\alpha u_{xx}, \qquad 0<x<L,\quad 0<t<T.

这里 utu_t 表示温度随时间的变化率,uxxu_{xx} 表示温度沿空间方向的二阶变化,α>0\alpha>0 是热扩散系数。这个方程在区域内部成立,也就是在矩形区域

Ω=(0,L)×(0,T)\Omega=(0,L)\times(0,T)

内成立。这个矩形的横轴可以看作空间 xx,纵轴可以看作时间 tt

仅有方程仍然不够。还需要初值条件,例如

u(x,0)=u0(x),0xL,u(x,0)=u_0(x),\qquad 0\le x\le L,

以及边界条件,例如

u(0,t)=g0(t),u(L,t)=gL(t),0tT.u(0,t)=g_0(t),\qquad u(L,t)=g_L(t),\qquad 0\le t\le T.

初值条件位于空间-时间矩形的底边 t=0t=0,它规定初始温度分布。边界条件位于左右两条边 x=0x=0x=Lx=L,它规定杆两端在整个时间过程中的温度。PDE 的解必须同时满足区域内部的方程、底边上的初值条件和左右边界上的边界条件。

这一几何图像对理解 PINN 很重要。ODE 中的配置点只是时间轴上的点;PDE 中的配置点分布在空间-时间区域内部。ODE 中的初值点通常是一个点;PDE 中的初值点是一组位于初始时间线上的点。ODE 没有空间边界;PDE 通常必须处理空间边界。PINN 的采样策略正是围绕这些不同位置展开的。

7.2 热方程的 PINN 表示#

对热方程 PINN,神经网络输入为 (x,t)(x,t),输出为温度近似值:

(x,t)uθ(x,t).(x,t)\longmapsto u_\theta(x,t).

这里 uθu_\theta 是一个带参数的函数。若参数 θ\theta 固定,输入任意位置和时间,就能得到一个温度预测值。训练的目标是选择 θ\theta,让这个函数同时满足热方程、初值条件和边界条件。

uθu_\theta 代入热方程左端,得到残差

rθ(x,t)=uθt(x,t)α2uθx2(x,t).r_\theta(x,t) = \frac{\partial u_\theta}{\partial t}(x,t) - \alpha \frac{\partial^2u_\theta}{\partial x^2}(x,t).

这个残差与上一章 ODE 残差

rθ(t)=duθdt(t)+uθ(t)r_\theta(t)=\frac{du_\theta}{dt}(t)+u_\theta(t)

在结构上完全一致:都是把网络函数代入方程左端,得到一个应当接近零的量。差别在于,PDE 残差涉及偏导数,并且残差定义在二维输入区域上。

训练时,我们在内部区域 Ω\Omega 中选取配置点:

{(xir,tir)}i=1Nr(0,L)×(0,T).\{(x_i^r,t_i^r)\}_{i=1}^{N_r}\subset (0,L)\times(0,T).

这些点用于检查方程是否被满足。对应的 PDE 残差损失为

Lr(θ)=1Nri=1Nruθt(xir,tir)α2uθx2(xir,tir)2.\mathcal{L}_r(\theta) = \frac{1}{N_r} \sum_{i=1}^{N_r} \left| \frac{\partial u_\theta}{\partial t}(x_i^r,t_i^r) - \alpha \frac{\partial^2u_\theta}{\partial x^2}(x_i^r,t_i^r) \right|^2.

这里的 uθt\frac{\partial u_\theta}{\partial t}2uθx2\frac{\partial^2u_\theta}{\partial x^2} 都通过自动微分计算。为了得到二阶导数,程序通常先计算 uθu_\thetaxx 的一阶导数,再对这个一阶导数继续对 xx 求导。网络输出的光滑性和激活函数选择会影响这种高阶导数的稳定性,这也是 PINN 中常用较光滑激活函数的原因之一。

7.3 初值线与边界线#

热方程的初值条件

u(x,0)=u0(x)u(x,0)=u_0(x)

要求网络在 t=0t=0 这条线上匹配初始温度分布。训练时选取初值点

{(xi0,0)}i=1N0,\{(x_i^0,0)\}_{i=1}^{N_0},

并构造初值损失

L0(θ)=1N0i=1N0uθ(xi0,0)u0(xi0)2.\mathcal{L}_0(\theta) = \frac{1}{N_0} \sum_{i=1}^{N_0} \left| u_\theta(x_i^0,0)-u_0(x_i^0) \right|^2.

这个损失项的作用与上一章 ODE 中的 uθ(0)12\left|u_\theta(0)-1\right|^2 相同,只是现在初值不再是一个数,而是一条空间分布。

边界条件控制空间端点。若采用 Dirichlet 边界条件

u(0,t)=g0(t),u(L,t)=gL(t),u(0,t)=g_0(t), \qquad u(L,t)=g_L(t),

则可以在时间方向上选取边界点 {tib}i=1Nb\{t_i^b\}_{i=1}^{N_b},构造边界损失

Lb(θ)=1Nbi=1Nb(uθ(0,tib)g0(tib)2+uθ(L,tib)gL(tib)2).\mathcal{L}_b(\theta) = \frac{1}{N_b} \sum_{i=1}^{N_b} \left( \left|u_\theta(0,t_i^b)-g_0(t_i^b)\right|^2 + \left|u_\theta(L,t_i^b)-g_L(t_i^b)\right|^2 \right).

如果边界条件是 Neumann 条件,例如给定端点热流,

ux(0,t)=q0(t),ux(L,t)=qL(t),u_x(0,t)=q_0(t), \qquad u_x(L,t)=q_L(t),

边界损失中就要出现空间导数:

Lb(θ)=1Nbi=1Nb(uθx(0,tib)q0(tib)2+uθx(L,tib)qL(tib)2).\mathcal{L}_b(\theta) = \frac{1}{N_b} \sum_{i=1}^{N_b} \left( \left|\frac{\partial u_\theta}{\partial x}(0,t_i^b)-q_0(t_i^b)\right|^2 + \left|\frac{\partial u_\theta}{\partial x}(L,t_i^b)-q_L(t_i^b)\right|^2 \right).

这说明边界条件并不总是只约束函数值。有些边界条件约束导数,有些约束函数值和导数的组合。PINN 的好处是,只要这些量能通过网络和自动微分计算,就可以把它们写进损失函数。

7.4 总损失与训练过程#

对于没有额外观测数据的热方程初边值问题,一个基本 PINN 总损失可以写成

L(θ)=λrLr(θ)+λ0L0(θ)+λbLb(θ).\mathcal{L}(\theta) = \lambda_r\mathcal{L}_r(\theta) + \lambda_0\mathcal{L}_0(\theta) + \lambda_b\mathcal{L}_b(\theta).

若还有内部观测数据,例如在某些位置和时间测得温度值 uidu_i^d,则可以增加数据损失

Ld(θ)=1Ndi=1Nduθ(xid,tid)uid2,\mathcal{L}_d(\theta) = \frac{1}{N_d} \sum_{i=1}^{N_d} \left| u_\theta(x_i^d,t_i^d)-u_i^d \right|^2,

并把总损失写成

L(θ)=λrLr+λ0L0+λbLb+λdLd.\mathcal{L}(\theta) = \lambda_r\mathcal{L}_r + \lambda_0\mathcal{L}_0 + \lambda_b\mathcal{L}_b + \lambda_d\mathcal{L}_d.

训练过程可以概括为以下连续步骤。首先,在空间-时间内部采样配置点,在初始线采样初值点,在边界线采样边界点,必要时加入观测数据点。其次,把这些点输入网络,计算 uθu_\theta。然后,用自动微分计算残差所需的偏导数。接着,构造各类损失并加权求和。最后,用优化器更新参数 θ\theta

这个过程和上一章 ODE PINN 的流程完全一致,只是采样对象从一条时间轴变成了空间-时间区域。真正增加的复杂性来自三个方面。第一,输入维度更高,网络需要学习更复杂的函数。第二,损失项更多,内部、初值和边界必须同时满足。第三,偏导数阶数更高,自动微分和网络光滑性变得更重要。

7.5 采样点如何影响训练#

PINN 不需要传统意义上的网格,但它仍然需要采样点。配置点、初值点和边界点的数量与分布会显著影响训练结果。如果配置点太少,网络可能只在少数位置满足方程,而在未采样区域出现较大误差。如果边界点太少,边界条件可能满足得不稳定。如果初值点分布不充分,初始状态可能被错误表示。

在一维热方程中,内部配置点可以在矩形区域 (0,L)×(0,T)(0,L)\times(0,T) 内均匀采样,也可以随机采样。边界点位于 x=0x=0x=Lx=L 两条线,初值点位于 t=0t=0 这条线。对初学者而言,最重要的是先把这些点的几何位置弄清楚,而不是立即比较各种采样策略。

采样还和方程解的性质有关。如果解在某些区域变化剧烈,例如出现边界层、尖峰或局部高频结构,那么这些区域需要更多采样点。否则,训练损失可能低估这些局部误差。许多改进型 PINN 方法会根据残差大小自适应增加采样点,其基本动机就是让训练更关注难以满足方程的区域。

不过,采样点增加并不总是简单地带来更好结果。更多点意味着更高计算成本,也可能使优化问题更难。PINN 的训练不是线性方程组求解,而是非凸优化;采样、网络结构、损失权重和优化器会相互影响。因此,在实际使用中,采样设计往往需要结合问题经验。

7.6 结果如何展示与检查#

PDE PINN 的输出是一个函数 uθ(x,t)u_\theta(x,t),因此结果展示也比 ODE 更丰富。最常见的方式是画出空间-时间热力图,用颜色表示不同位置和时间上的函数值。对于热方程,这样的图可以展示温度如何随时间扩散和平滑。

如果解析解或高精度数值解已知,可以画误差图:

e(x,t)=uθ(x,t)uref(x,t).e(x,t)=u_\theta(x,t)-u_{\mathrm{ref}}(x,t).

误差图比单纯的预测图更能显示问题。预测图看起来平滑,不代表误差小;误差图可以揭示网络在哪些区域表现不好,例如边界附近、初始时刻附近或长时间末端。

残差分布也是重要检查对象。即使没有参考解,也可以在一组测试点上计算

rθ(x,t)=uθt(x,t)α2uθx2(x,t),r_\theta(x,t) = \frac{\partial u_\theta}{\partial t}(x,t) - \alpha \frac{\partial^2u_\theta}{\partial x^2}(x,t),

观察残差是否在整个区域内都较小。需要注意,残差小不等于真实误差一定小,但残差分布能帮助我们发现方程约束在哪些区域没有被满足。

还应检查初值和边界条件。许多 PINN 训练失败并不是因为内部残差完全降不下去,而是因为边界条件或初值条件没有被足够重视。对于热方程,可以单独画出 uθ(x,0)u_\theta(x,0)u0(x)u_0(x) 的比较,也可以画出 uθ(0,t)u_\theta(0,t)uθ(L,t)u_\theta(L,t) 与给定边界函数的比较。

7.7 非线性例子:Burgers 方程#

热方程是线性 PDE,残差中只包含 utu_tuxxu_{xx}。很多重要问题是非线性的,Burgers 方程是 PINN 文献中常用的教学和测试例子之一。它的一种形式为

ut+uuxνuxx=0.u_t+uu_x-\nu u_{xx}=0.

这里 ν>0\nu>0 是黏性系数。与热方程相比,Burgers 方程多了非线性项 uuxuu_x。这个项表示未知函数 uu 与它的空间导数 uxu_x 相乘,因此残差写成

rθ(x,t)=uθt(x,t)+uθ(x,t)uθx(x,t)ν2uθx2(x,t).r_\theta(x,t) = \frac{\partial u_\theta}{\partial t}(x,t) + u_\theta(x,t) \frac{\partial u_\theta}{\partial x}(x,t) - \nu \frac{\partial^2u_\theta}{\partial x^2}(x,t).

从 PINN 的角度看,非线性项并不改变基本流程。我们仍然用网络函数 uθu_\theta 近似未知解,仍然用自动微分计算导数,仍然在配置点上计算残差平方,并与初值、边界损失组合起来。差别在于,残差表达式更复杂,训练可能更困难。

Burgers 方程也说明了 PINN 的一个优势和一个风险。优势是,只要方程可以写成可微表达式,就可以直接构造残差;非线性项不需要像传统方法那样单独设计离散格式。风险是,非线性问题的优化 landscape 往往更复杂,残差损失可能更难下降,解中若出现陡峭梯度或接近激波的结构,普通 PINN 可能表现不佳。

因此,本章只把 Burgers 方程作为从线性 PDE 到非线性 PDE 的入口。真正理解复杂 PDE PINN,还需要讨论损失权重、采样策略、网络结构和训练稳定性,这些会在后续章节逐步展开。

本章小结#

本章把 PINN 从常微分方程推广到偏微分方程。对一维热方程,网络输入从 tt 变为 (x,t)(x,t),输出 uθ(x,t)u_\theta(x,t) 近似空间-时间温度场。PDE 残差由 uθu_\theta 的偏导数组成,内部配置点用于约束方程,初值点用于约束 t=0t=0 的初始分布,边界点用于约束空间边界。总损失把这些约束组合起来,并通过优化参数 θ\theta 选择合适的网络函数。

PDE PINN 的核心逻辑和 ODE PINN 一致,但训练难度更高。采样点分布、边界条件处理、高阶导数计算、损失权重和优化过程都会影响结果。热方程提供了最清楚的线性 PDE 示例,Burgers 方程则展示了非线性残差如何进入同一框架。下一章将专门讨论边界条件、初值条件和损失函数设计,因为这些因素往往决定 PINN 是否能训练出可靠结果。

习题#

  1. 对热方程 ut=αuxxu_t=\alpha u_{xx},写出 PINN 残差 rθ(x,t)r_\theta(x,t)
  2. 在区域 0<x<1, 0<t<T0<x<1,\ 0<t<T 中,说明内部配置点、初值点和边界点分别位于哪里。
  3. 若边界条件为 ux(0,t)=0u_x(0,t)=0ux(1,t)=0u_x(1,t)=0,写出对应的 Neumann 边界损失。
  4. 对 Burgers 方程 ut+uuxνuxx=0u_t+uu_x-\nu u_{xx}=0,解释非线性项 uuxuu_x 在 PINN 残差中如何计算。
  5. 为什么训练损失小并不一定说明 PDE PINN 在整个区域内都准确?

延伸阅读#

  1. M. Raissi, P. Perdikaris, and G. E. Karniadakis, “Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations,” Journal of Computational Physics, 378, 686-707, 2019. DOI: 10.1016/j.jcp.2018.10.045
  2. Raissi 等人的 PINN 项目页:Physics Informed Deep Learning
  3. MIT OpenCourseWare, Advanced Partial Differential Equations with Applications, Lecture 01: 18.306 Advanced PDE
  4. MIT OpenCourseWare, Numerical Methods for Partial Differential Equations18.336 Numerical Methods for PDE
  5. G. E. Karniadakis et al., “Physics-informed machine learning,” Nature Reviews Physics, 3, 422-440, 2021. DOI: 10.1038/s42254-021-00314-5

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

PINN 讲义第 7 章:PINN 求解偏微分方程
https://sciml.com.cn/posts/pinn-lecture-07/
作者
星飞帆
发布于
2026-06-25
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
星飞帆
西北工业大学24级研究生 | SciML · PINNs · 神经算子 · PDE 约束学习
欢迎
欢迎来到星飞帆的 SciML 研究笔记:这里记录论文阅读、数学推导、代码复现、实验踩坑,也分享研究生阶段可能用得上的资料。
分类
标签
站点统计
文章
21
分类
4
标签
69
总字数
70,675
运行时长
0
最后活动
0 天前

文章目录