as04 PINO:物理信息神经算子
WARNING
🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。
上一章我们学了 FNO(Fourier Neural Operator):一次训练、终身推理,把「系数场 / 源项 → 解」学成一个算子。再往前一章是 PINN:不需要标注数据,但每个新参数实例都要重新训练。
本章的主角 PINO(Physics-Informed Neural Operator) 回答的问题是:
能不能既像 FNO 一样「学一次用一生」,又像 PINN 一样把 PDE 残差写进损失函数,从而少用标注数据?
答案是可以——而且这正是科学机器学习里最实用的折中之一。
1. 三种范式:一张图看清差异
| 方法 | 学什么 | 需要标签? | 新参数 | 核心代价 |
|---|---|---|---|---|
| PINN | 单个解 | 否(用 PDE 残差) | 重新训练 | 上线慢 |
| FNO | 算子 | 是(大量 | 一次前向 | 标注贵 |
| PINO | 同一个算子 | 少量标签 + 大量无标签实例上的 PDE 残差 | 一次前向 | 实现稍复杂 |

图解说明:PINN 只学单个解(换参数要重训);FNO 学算子但依赖大量
标签;PINO 在同一算子网络上叠加 PDE 残差,用少量标签 + 无标签物理约束降低标注成本,推理仍是一次前向。
直觉一句话:
- PINN = 物理老师(没有标准答案,靠方程批改作业),但每个学生单独上课;
- FNO = 题海战术(刷大量标准答案),训好后秒答新题,但没题就学不动;
- PINO = 题海 + 物理老师:少量标准答案定锚,其余用方程批改——标注需求大幅下降。
2. 本章实验问题:一维变系数扩散(Darcy 风格)
我们采用 FNO / PINO 文献里常见的 Darcy 流 简化版——一维变系数扩散方程:
其中扩散系数(「渗透率」)由标量参数
为什么选这个方程?
非线性地进入系数 ,而不是简单地缩放解——「参数 → 解」是真正的非线性算子; - 有标准的二阶有限体积离散,可与 PINO 的可微残差完全对齐;
- 一维、小规模,CPU 上几分钟就能跑完对比实验。
ground truth
3. PINO 的损失函数
设算子网络为
其中残差算子
再加边界条件惩罚
本 demo 数字(与代码一致): 网格 modes=8、width=16、n_layers=2,训 lr=3e-3。物理项权重:42。
关键洞察:对没有标签的参数
逐步推导:变系数扩散的有限体积残差,以及 PINO 损失两项从哪来(点击展开)
方程
两端 solve_variable_coeff_poisson 用这套矩阵当 ground truth;pde_residual_and_bc 必须用同一套 stencil,否则「物理损失」在改另一个方程。
PINO:
无标签的
逐步推导:为什么 让「 」是非线性算子(点击展开)
若方程是
4. 实验设计:四个对照
| 模型 | 标注 | 是否用 PDE 残差 | 期望行为 |
|---|---|---|---|
| PINN | 0(逐实例) | ✓ | 精度尚可,但每个新 |
| FNO-few | 3 | ✗ | 插值尚可,外推崩 |
| FNO-full | 11 | ✗ | 数据充足时很强,但标注贵 |
| PINO | 3 | ✓ | 标注量同 FNO-few,外推逼近 FNO-full |
训练范围:
测试:
保姆级:插值 vs 外推。
5. 结果怎么读
运行 python demo.py 后会生成三张图:



你应该观察到:
- PINN 每个测试
都要单独训几千步——上线成本是秒~十秒级,而算子方法是毫秒级前向; - FNO-few 在训练范围内还行,一出范围(
)误差迅速增大; - PINO 用同样 3 个标注 + 物理残差,外推明显好于 FNO-few,接近甚至局部超过数据更多的 FNO-full;
- 这不是说「永远不需要数据」——物理残差的离散格式、权重
、边界处理都会影响效果;PINO 的价值是:在标注昂贵时,用已知 PDE 换数据。
6. 和 PINN / FNO 的公式级对照
PINN(固定
FNO(数据驱动算子):
PINO(两者相加):
网络骨架可以继续用 FNO 的谱卷积层;PINO 改的是损失,不是必须换架构。这也是它落地成本低的原因:已有 FNO 代码库往往只需加一个可微残差模块。
7. 何时用 PINO?
| 场景 | 更合适的选择 |
|---|---|
| 只要求解一个固定 PDE 实例 | PINN / 传统数值方法 |
| 有海量高精度仿真数据、方程复杂难写残差 | 纯数据 FNO / DeepONet |
| 要覆盖一整个参数族,但标注仿真很贵 | PINO |
| 方程形式不完全可信(模型误差大) | 降低 |
工业界常见做法:用少量高保真仿真做数据锚点,再用 PDE(或低保真物理)在参数空间里「填缝」——这就是 PINO 思想的工程版。
本章总结
- PINO = 神经算子 + PDE 残差损失,同时继承 FNO 的快速推理和 PINN 的物理先验;
- 核心收益是降低标注需求、改善外推,尤其在参数族求解场景;
- 实现要点:残差离散必须与 ground truth 求解器一致(本章用同一套有限体积格式),并仔细调节
。
下一章我们将进入另一条 AI4S 主干——科学计算中的图神经网络(GNN):把分子、网格、粒子都看成图,用消息传递统一处理。
📥 Code
| File | View | Download |
|---|---|---|
| demo.py | Open | Download |
| exercise.py | Open | Download |
参考
- Li, Z., et al. (2021). Physics-Informed Neural Operator for Learning Partial Differential Equations. [arXiv:2111.03794]
- Li, Z., et al. (2020). Fourier Neural Operator for Parametric Partial Differential Equations. ICLR 2021. [arXiv:2010.08895]
- Raissi, M., Perdikaris, P., & Karniadakis, G. E. (2019). Physics-informed neural networks. JCP. [doi:10.1016/j.jcp.2018.10.045]