as02 PINN:让神经网络自己"发现"物理方程的解
WARNING
🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。
上一节 as01 AI4S 全景 中,我们定义了"PDE 残差"这把标尺。这一节我们用它来真正训练一个神经网络求解方程。
1. 核心想法:把 PDE 残差变成损失函数
物理信息神经网络(Physics-Informed Neural Network, PINN,Raissi et al., 2019)的核心思想极其简单:
不给神经网络任何"标准答案"(
的标注数据对),而是让它在训练过程中自己利用物理方程本身作为监督信号。
回顾 as01 定义的一维 Poisson 边值问题:
用一个神经网络
其中

图解说明:网络输出
。对 自动微分得到 ,残差 进损失;边界点另外惩罚。残差被训到接近 0 时,网络就是 PDE 的一个近似解。
逐步推导:为什么「残差为 0」等价于满足 Poisson 方程(点击展开)
一维 Poisson
则它就是边值问题的解(解的唯一性由椭圆方程理论保证,本课
训练不能在连续统上处处取零,于是在配点上把
制造解(manufactured solution)在 科学计算导论:先指定
2. 自动微分:PINN 相较传统数值方法的关键武器
as01 中我们用有限差分近似
关键实现技巧是 torch.autograd.grad(..., create_graph=True):设置 create_graph=True 后,求导操作本身也会被记录进计算图,这样我们才能对一阶导数再求一次导(得到二阶导数),并且这个二阶导数依然可以继续反向传播去更新网络参数
这是 PINN 最重要的工程细节:它意味着 PINN 完全无网格(mesh-free)——不需要像有限差分/有限元那样离散化定义域,配点可以在连续域内任意采样,导数是解析精确的(在浮点精度范围内),不存在离散化误差。

图解说明:输入坐标
(配点 + 边界点)经过一个 tanh激活的多层感知机(MLP)得到。上分支对 自动微分两次得到 ,组装出 PDE 残差 ,贡献 ;下分支把边界点 送入同一个网络,与真实边界值(此处均为 0)比较,贡献 。两个损失加权求和后反向传播,同时更新网络的全部参数——两个分支共享同一套权重,这保证了学到的 在整个定义域内是一个统一、光滑的函数,而不是两套独立拟合的结果。
3. 为什么用 tanh,不用 ReLU?
这是初学者容易忽略但对 PINN 至关重要的一个细节:PINN 的网络必须选择处处二次可微(或更高阶可微)的激活函数。
- ReLU 是分段线性函数,二阶导数几乎处处为 0(在非光滑点甚至未定义)。用 ReLU 网络计算
,会得到一个几乎恒为 0 的(无意义的)二阶导数,PDE 残差损失根本学不到东西。 - tanh / sin / GELU 等光滑激活函数处处无穷次可微,可以支持任意阶的自动微分求导,这正是本章 demo 选择
tanh的原因。
4. 边界条件权重 的直觉
配点集合
实践经验:
5. 训练结果
本章 demo 用一个 1 → 20 → 20 → 20 → 1(tanh 激活)的全连接网络,在

图解说明:蓝色总损失、橙色 PDE 残差损失、绿色边界条件损失均在对数坐标下随训练单调下降,且边界条件损失下降得更快、更彻底——因为只有 2 个点,网络很容易"记住"它们;PDE 残差损失覆盖了整个定义域上的无穷多个点(每轮重新看到同样的 50 个配点),下降得更平缓,这是模型真正"学会方程结构"的过程。

图解说明:左图对比 PINN 预测的
(红色虚线)与解析真解 (黑色实线),两者几乎完全重合,最终相对 误差在 量级;右图展示逐点绝对误差,误差在整个区间内都很小且分布均匀——这说明网络学到的不是"记住几个点的值",而是整个函数的光滑逼近。关键在于:训练过程中网络从未见过任何一个 的真实取值,所有信息都来自 PDE 残差和边界条件。
6. PINN 的优势与局限
| 维度 | 优势 | 局限 |
|---|---|---|
| 数据需求 | 不需要任何标注数据,只需要方程和边界条件 | 如果方程本身是错的/不完整的,PINN 也学不到正确答案 |
| 网格依赖 | 无网格,配点可以任意采样,适合不规则/高维域 | 配点采样策略对收敛速度和精度影响很大,需要调参 |
| 精度 | 导数解析精确,无离散化误差 | 训练是非凸优化,容易陷入局部最优(尤其是含多尺度/高频解的问题) |
| 复用性 | 可以直接用作反问题(已知观测数据反推方程参数)的框架 | 每次方程参数、边界条件、源项改变,都需要重新训练——这是 PINN 最大的局限,也是下一章 FNO/PINO 要解决的问题 |
| 适用规模 | 特别适合小规模、高精度的正问题/反问题 | 大规模复杂几何、湍流等强非线性问题上训练稳定性和精度还是开放难题 |
PINN 最大的局限——一个训练好的 PINN 只对应一组特定的
7. 本章小结
- 核心思想:用 PDE 残差 + 边界条件误差构造损失函数,让神经网络在没有标注数据的情况下"发现"方程的解。
- 关键工具:自动微分(
create_graph=True)计算任意阶精确导数,替代有限差分。 - 关键细节:激活函数必须光滑可微(tanh 而非 ReLU);边界条件损失通常需要更大的权重
。 - 核心局限:一个 PINN 只解一个特定问题,换参数需要重新训练——这是下一章 as03 Neural Operator / FNO 的出发点。
下一节 as03 Neural Operator 与 FNO 将学习如何训练一个"一次训练,处处泛化"的算子模型,直接学习"源项函数 → 解函数"这个映射本身。
📥 Code
| File | View | Download |
|---|---|---|
| demo.py | Open | Download |
| exercise.py | Open | Download |
参考
- Raissi, M., Perdikaris, P., & Karniadakis, G. E. (2019). Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations. Journal of Computational Physics. [链接]
- Lu, L., Meng, X., Mao, Z., & Karniadakis, G. E. (2021). DeepXDE: A deep learning library for solving differential equations. SIAM Review. [arXiv:1907.04502]
- Wang, S., Teng, Y., & Perdikaris, P. (2021). Understanding and mitigating gradient flow pathologies in physics-informed neural networks. SIAM Journal on Scientific Computing. (讨论边界条件权重自适应) [链接]
- Karniadakis, G. E., Kevrekidis, I. G., Lu, L., et al. (2021). Physics-informed machine learning. Nature Reviews Physics. [链接]