Skip to content

as04 PINO:物理信息神经算子

WARNING

🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。

上一章我们学了 FNO(Fourier Neural Operator):一次训练、终身推理,把「系数场 / 源项 → 解」学成一个算子。再往前一章是 PINN:不需要标注数据,但每个新参数实例都要重新训练。

本章的主角 PINO(Physics-Informed Neural Operator) 回答的问题是:

能不能既像 FNO 一样「学一次用一生」,又像 PINN 一样把 PDE 残差写进损失函数,从而少用标注数据?

答案是可以——而且这正是科学机器学习里最实用的折中之一。


1. 三种范式:一张图看清差异

方法学什么需要标签?新参数 a 到来时核心代价
PINN单个解 ua(x)否(用 PDE 残差)重新训练上线慢
FNO算子 Gθ:aua是(大量 (a,ua)一次前向标注贵
PINO同一个算子 Gθ少量标签 + 大量无标签实例上的 PDE 残差一次前向实现稍复杂

PINN / FNO / PINO 三种范式如何组合「物理」与「数据」

图解说明:PINN 只学单个解(换参数要重训);FNO 学算子但依赖大量 (a,u) 标签;PINO 在同一算子网络上叠加 PDE 残差,用少量标签 + 无标签物理约束降低标注成本,推理仍是一次前向。

直觉一句话:

  • PINN = 物理老师(没有标准答案,靠方程批改作业),但每个学生单独上课;
  • FNO = 题海战术(刷大量标准答案),训好后秒答新题,但没题就学不动;
  • PINO = 题海 + 物理老师:少量标准答案定锚,其余用方程批改——标注需求大幅下降。

2. 本章实验问题:一维变系数扩散(Darcy 风格)

我们采用 FNO / PINO 文献里常见的 Darcy 流 简化版——一维变系数扩散方程:

ddx(ka(x)dudx)=f(x),x[0,1],u(0)=u(1)=0

其中扩散系数(「渗透率」)由标量参数 a 控制:

ka(x)=1+asin(πx),f(x)=sin(πx)

为什么选这个方程?

  1. a 非线性地进入系数 k,而不是简单地缩放解——「参数 → 解」是真正的非线性算子
  2. 有标准的二阶有限体积离散,可与 PINO 的可微残差完全对齐
  3. 一维、小规模,CPU 上几分钟就能跑完对比实验。

ground truth ua 没有简单解析式,我们用有限体积组装三对角矩阵后直接线性求解,作为数值精确解。


3. PINO 的损失函数

设算子网络为 Gθ,输入扩散系数场 ka,输出预测解 u^a=Gθ(ka)。PINO 的训练损失是两项之和:

LPINO=1|Alab|aAlabu^aua2数据损失(少量标注)+λ1|A|aAR(u^a;ka,f)2PDE 残差(全部实例,无需标签)

其中残差算子 R 就是离散形式的 PDE:

R(u^;k,f)=(ku^)f

再加边界条件惩罚 u^(0)2+u^(1)2

本 demo 数字(与代码一致): 网格 N=65 点均分 [0,1]a[1,3] 上等距 11 个训练参数;测试 a=1.5,2.5(插值)与 3.4,4.0(外推)。FNO-few / PINO 只用 3 个标注 a(首、中、尾);FNO-full 用全部 11 个。PINN 每个测试 a 单独训 1200 epoch。算子网络 modes=8width=16n_layers=2,训 1200 epoch,lr=3e-3。物理项权重:λPDE=0.1λBC=1.0。种子 42

关键洞察:对没有标签的参数 a,我们仍然知道 kaf,因此仍能计算残差——物理先验把「无标签实例」变成了可用的训练信号。

逐步推导:变系数扩散的有限体积残差,以及 PINO 损失两项从哪来(点击展开)

方程 (ku)=f。有限体积:在半点取 ki+1/2=(ki+ki+1)/2,通量 Fi+1/2=ki+1/2(ui+1ui)/Δx。内部点离散成三对角

ki1/2+ki+1/2Δx2uiki1/2Δx2ui1ki+1/2Δx2ui+1=fi,

两端 u0=uN1=0solve_variable_coeff_poisson 用这套矩阵当 ground truth;pde_residual_and_bc 必须用同一套 stencil,否则「物理损失」在改另一个方程。

PINO:u^=Gθ(k)。数据项只在 3 个已求解的 a 上算 u^u2。残差项对全部 11aR(u^;k,f)2,外加边界平方。总损失

L=Ldata+0.1LPDE+1.0LBC.

无标签的 a 没有 u,但有 kf,残差照样能回传——这就是「用方程换数据」。外推 a=4.0k 仍由同一公式生成,PDE 约束还在,所以 PINO 往往比只看 3 个标签的 FNO-few 稳。λ 太大残差主导、拟合标注变差;太小则退回 FNO-few。0.1 是这套一维玩具的工作点,不是普适常数。

逐步推导:为什么 ka=1+asin(πx) 让「au」是非线性算子(点击展开)

若方程是 u=a(x)(常系数 Poisson),au 是线性的:源项加倍,解加倍。本章是 (kau)=f,源项 f 固定,a 进了系数 k。叠加 a1+a2 并不给出 ua1+ua2,因为微分算子本身在变。这才需要学一个非线性算子网络,而不是「对 f 做一次除以 (kπ)2」。有限体积矩阵 A(k) 依赖于 a,解 u=A(k)1ba 也不是线性的。PINO 用同一套 A(k) 写残差,保证数据和物理在描述同一件事。


4. 实验设计:四个对照

模型标注 a 数量是否用 PDE 残差期望行为
PINN0(逐实例)精度尚可,但每个新 a 都要重训
FNO-few3插值尚可,外推崩
FNO-full11数据充足时很强,但标注贵
PINO3标注量同 FNO-few,外推逼近 FNO-full

训练范围:a[1,3](11 个等距点)。
测试:a=1.5,2.5(插值)与 a=3.4,4.0(外推)。

保姆级:插值 vs 外推。 a=1.5 夹在训练网格里,纯数据模型也常常能蒙对。a=4.0 已经跑出 [1,3],FNO-few 没见过那么强的渗透率对比,曲线会歪;PINO 仍要求 (ku^)f,等于在参数轴上用方程「填缝」。这不是万能外推:方程写错或离散不一致时,残差会把模型推向错误物理。


5. 结果怎么读

运行 python demo.py 后会生成三张图:

测试参数上的预测曲线:插值 vs 外推

相对误差与新实例上线成本对比

算子网络训练损失曲线

你应该观察到:

  1. PINN 每个测试 a 都要单独训几千步——上线成本是秒~十秒级,而算子方法是毫秒级前向;
  2. FNO-few 在训练范围内还行,一出范围(a>3)误差迅速增大;
  3. PINO 用同样 3 个标注 + 物理残差,外推明显好于 FNO-few,接近甚至局部超过数据更多的 FNO-full;
  4. 这不是说「永远不需要数据」——物理残差的离散格式、权重 λ、边界处理都会影响效果;PINO 的价值是:在标注昂贵时,用已知 PDE 换数据

6. 和 PINN / FNO 的公式级对照

PINN(固定 a):

minθ1NiR(uθ(xi);ka,f)2+BC

FNO(数据驱动算子):

minθ1|Alab|aGθ(ka)ua2

PINO(两者相加):

minθLdata+λLPDE

网络骨架可以继续用 FNO 的谱卷积层;PINO 改的是损失,不是必须换架构。这也是它落地成本低的原因:已有 FNO 代码库往往只需加一个可微残差模块。


7. 何时用 PINO?

场景更合适的选择
只要求解一个固定 PDE 实例PINN / 传统数值方法
有海量高精度仿真数据、方程复杂难写残差纯数据 FNO / DeepONet
要覆盖一整个参数族,但标注仿真很贵PINO
方程形式不完全可信(模型误差大)降低 λ,或改用弱形式 / 观测残差

工业界常见做法:用少量高保真仿真做数据锚点,再用 PDE(或低保真物理)在参数空间里「填缝」——这就是 PINO 思想的工程版。


本章总结

  • PINO = 神经算子 + PDE 残差损失,同时继承 FNO 的快速推理和 PINN 的物理先验;
  • 核心收益是降低标注需求、改善外推,尤其在参数族求解场景;
  • 实现要点:残差离散必须与 ground truth 求解器一致(本章用同一套有限体积格式),并仔细调节 λ

下一章我们将进入另一条 AI4S 主干——科学计算中的图神经网络(GNN):把分子、网格、粒子都看成图,用消息传递统一处理。


📥 Code

FileViewDownload
demo.pyOpenDownload
exercise.pyOpenDownload

参考

  1. Li, Z., et al. (2021). Physics-Informed Neural Operator for Learning Partial Differential Equations. [arXiv:2111.03794]
  2. Li, Z., et al. (2020). Fourier Neural Operator for Parametric Partial Differential Equations. ICLR 2021. [arXiv:2010.08895]
  3. Raissi, M., Perdikaris, P., & Karniadakis, G. E. (2019). Physics-informed neural networks. JCP. [doi:10.1016/j.jcp.2018.10.045]