Physics Informed Deep Learning (Part I): Data-driven Solutions of Nonlinear Partial Differential Equations
- 关联论文:1711.10561
- 作者:Tom
- 更新:2026-07-23
一句话结论
Physics Informed Neural Networks(PINN)将物理定律(由非线性偏微分方程 PDE 描述)编码为神经网络的损失函数约束,使网络在数据稀缺甚至无标签数据的情况下也能学习到符合物理规律的真解,且输出对所有输入坐标和自由参数天然可导。
解决什么真问题
传统科学计算依赖数值方法(有限元、有限差分、有限体积法)求解偏微分方程,这些方法在规则网格上表现优秀,但面临三大痛点:
- 高维问题维度灾难:三维空间的网格点数随维数指数爆炸,高维 PDE(如金融中的 Black-Scholes 方程)数值方法几乎不可行
- 复杂边界条件处理困难:不规则区域、自适应网格、多尺度物理现象使得数值方法实现复杂且计算量大
- 数据同化困难:实验观测数据与数值模拟之间的融合缺乏统一框架
深度学习在图像、语音等领域取得了巨大成功,但其本质是「数据驱动」——模型从海量标注数据中学到输入输出的映射关系。问题是,在科学计算场景中,有标注的训练数据往往极其稀缺(高分辨率数值模拟成本极高),且数据本身常常带有噪声。
PINN 的核心洞察是:物理定律本身就是一种强大的正则化信号。如果把 PDE 方程本身作为约束加入损失函数,神经网络就不仅仅是从数据中学习,而是在「已知物理定律 + 少量观测数据」的共同约束下求解。这使得在数据极其有限的情况下也能得到合理的解。
核心方法
核心思想:物理定律编码为损失函数
给定一个一般形式的非线性 PDE:
$$ u_t + \mathcal{N}[u] = 0 $$
其中 $u(\mathbf{x}, t)$ 是解,$\mathcal{N}[\cdot]$ 是非线性微分算子(如 Navier-Stokes 中的对流项、扩散项)。
PINN 用一个神经网络 $f(\mathbf{x}, t; \theta)$ 来近似解 $u$:
$$ u(\mathbf{x}, t) \approx f(\mathbf{x}, t; \theta) $$
然后定义一个「残差网络」(physics network):
$$ r(\mathbf{x}, t; \theta) = f_t + \mathcal{N}[f] $$
物理定律的强制约束体现为:残差 $r$ 应该处处为零。
损失函数三项合一
PINN 的总损失为三项之和:
$$ L(\theta) = L_{data}(\theta) + L_{PDE}(\theta) + L_{BC/IC}(\theta) $$
| 损失项 | 含义 | 公式 |
|---|---|---|
| $L_{data}$ | 数据拟合项 | $\frac{1}{N_u} \sum_{i=1}^{N_u} |
| $L_{PDE}$ | PDE 残差项 | $\frac{1}{N_r} \sum_{i=1}^{N_r} |
| $L_{BC/IC}$ | 边界/初值条件项 | (类似地,对边界点和初值点计算偏差) |
关键技术细节:
- PDE 残差的计算依赖 $f$ 对输入 $(\mathbf{x}, t)$ 的高阶导数,这通过 TensorFlow/PyTorch 的自动微分(Automatic Differentiation)实现——不需要手动编写导数公式
- $L_{PDE}$ 在配置点(collocation points)$(\mathbf{x}_i, t_i)$ 上计算,这些点可以均匀分布、随机采样或自适应选择
- 当无任何观测数据时(pure PDE solving),$L_{data}=0$,全靠 $L_{PDE}$ 和 $L_{BC/IC}$ 驱动训练
连续时间 vs. 离散时间模型
论文提出两类算法:
连续时间模型:输入 $(\mathbf{x}, t)$,网络直接输出 $u(\mathbf{x}, t)$,通过自动微分计算 $u_t$。适用于任意时间范围的 PDE。
离散时间模型:利用时间步进(time-marching)思想,用 Neural Network 预测下一个时间步的解,将时间离散化。适用于需要长时序预测的 PDE,计算效率更高。
代表性 PDE 示例
论文在以下方程上验证了方法:
-
Navier-Stokes 方程:二维不可压缩流体,描述速度场 $\mathbf{u}(\mathbf{x}, t)$ 和压力 $p(\mathbf{x}, t)$ - 连续性方程:$\nabla \cdot \mathbf{u} = 0$ - 动量方程:$\mathbf{u}_t + (\mathbf{u} \cdot \nabla)\mathbf{u} = -\nabla p + \nu \Delta \mathbf{u}$
-
Korteweg-de Vries(KdV)方程:孤立波描述 - $u_t + uu_x + \delta u_{xxx} = 0$
-
Schrödinger 方程:量子力学 - $i h_t + \frac{h_{xx}}{2} + |h|^2 h = 0$(复值解)
关键实验与数据
| 场景 | 结果 |
|---|---|
| Navier-Stokes(圆柱绕流) | 在雷诺数 Re=100 条件下,无标签配置点训练,解与参考数值解高度吻合(原文未明确给出具体误差数值) |
| KdV 方程(孤立波传播) | 单孤立波和多孤立波场景,均能精确恢复波的振幅、速度和相位 |
| Schrödinger 方程(孤子相互作用) | 两孤子碰撞后相位和形状均准确复现 |
数据效率:即使只有极少量观测数据(如边界上的 10-100 个测量点),PINN 也能恢复全场解——这是传统数值方法完全无法做到的。
亮点与局限
亮点
- 数据效率极高:少量稀疏观测点 + 物理定律 → 恢复全场解,适合实验数据稀缺的科学场景
- 高维友好:不依赖网格,自动微分天然支持任意维度(5维、10维均可);在高维 Black-Scholes 期权定价等金融问题上有独特优势
- 可导性:网络输出对所有输入坐标和参数可导,可直接用于敏感性分析、优化、控制等下游任务
- 通用性:同一框架可处理完全不同类型的 PDE,只需要改写 $\mathcal{N}[\cdot]$ 的定义
- 无网格方法:避免了传统有限元方法的网格生成和维护成本
局限
- 收敛困难:$L_{PDE}$ 项的梯度与 $L_{data}$ 项的梯度尺度可能相差数十个数量级,导致训练不稳定,需要仔细平衡权重或使用自适应策略
- 表达能力:对于高度非线性、存在激波(shock wave)等不连续解的 PDE,纯 PINN 表现较差(后续有专门工作解决激波问题)
- 计算精度:在平滑区域精度优秀,但边界层(boundary layer)等高梯度区域,精度可能不如精调的传统数值方法
- 收敛保证缺失:没有理论保证网络一定能收敛到正确解
- 高分辨率需求:如果需要输出高分辨率全场解,PINN 需要与卷积/超分辨率等网络结构结合
对工程落地的启发
- 数据同化(Data Assimilation):当有传感器稀疏观测数据时,PINN 是将物理模型和数据融合的统一框架;在工业设备状态监控、天气预报等场景有直接价值
- 代理模型(Surrogate Model):PINN 训练完成后,神经网络求值速度远快于数值求解器,可作为实时仿真器嵌入优化控制回路(如 CFD 实时优化)
- 不确定性量化:可结合贝叶斯神经网络,对预测结果提供置信区间,对工程安全评估非常重要
- 逆问题求解:如果 PDE 中有未知参数(如材料属性、流体粘度),PINN 可以同时学习未知参数和解本身(通过将参数也加入可训练 $\theta$)
与同方向工作的关系
- 本文是 PINN 开山之作(Part I专注求解,Part II专注发现 PDE 方程本身)
- vs. 传统数值方法(PDENet、FNO):FNO(Fourier Neural Operator)将 PDE 解映射到函数空间,用傅里叶变换层处理全局信息;PINN 是点态(pointwise)方法,各有适用场景
- vs. 纯数据驱动(DMD、SINDy):SINDy 通过稀疏回归发现 PDE 结构;PINN 假设 PDE 已知,主要用于求解
- 后续发展:PINN 催生了大量改进工作——如保守PINN(cPINN)、隐式PINN(hp-VPINN)、扩展PINN(XPINN)等,分别从区域分解、不确定性量化、多尺度问题等角度进行改进
适合谁读
- 科学计算/计算力学研究者:理解深度学习与传统 PDE 求解的融合点
- 工业界工程师:掌握用少量传感器数据重建全场物理场的方法(流场、温度场、压力场)
- AI + Science 研究者:入门 Physics-informed ML 的必读奠基论文
- 量化金融工程师:理解 PINN 如何优雅地解决高维期权定价问题
- 地球科学/气象研究者:PINN 在解决数据同化和高维反演问题上展示了独特潜力
工程落地与核查(Jay)
事实核查
- [需澄清] "无网格方法"表述不准确:PINN 实际需要配置点(collocation points)在定义域内采样、选择和迭代管理,并非完全无网格。"无网格"说法在工程界存在广泛误解——配置点的数量和分布对解的精度有直接影响,分布不当会导致局部区域解质量差。需原文 §2.2 或 §3 核验配置点策略的具体描述。
- [待补] Navier-Stokes 方程描述不完整:文件中只列出连续性方程 $\nabla \cdot \mathbf{u} = 0$ 和动量方程,完整的不可压缩 NS 问题还需状态方程 $p = p(\rho, T)$(简化场景为常数密度)或压力投影法的 Poisson 方程。建议标注"此处为简化版动量方程+连续性方程,全套方程见原始论文 §3.1"。
- [待补] Part I vs Part II 关联说明缺失:Raissi et al. 2019 PINN 系列分 Part I(求解已知 PDE)和 Part II(从数据发现未知 PDE)两部分,Part II 方法论与 Part I 有本质区别——发现 PDE 需要结构化稀疏性假设(SINDy 谱系)。两份文件应分开归档,避免读者混淆。
- [存疑] 收敛困难的解决方案:文件指出 PDE 损失项与数据损失项梯度尺度差异大导致训练不稳定,但仅描述问题未提供解决方案。原文提出的自适应权重策略(autodiff-balancing)的具体效果需原文 §4.2 核验。
- [原文缺失] 批量生产部署的具体数字:Abstract 未给出 Re=100 圆柱绕流的具体误差数值(L2 误差、最大偏差等),读者无法评估精度是否达到工程验收标准。
工程落地要点
- 框架选型建议:PyTorch 生态(DeepXDE)是目前最成熟的生产级 PINN 库,支持自适应采样、残差自适应细化(ra-PINN)和多方程耦合;TensorFlow 1.x 原始实现已过时,PaddlePaddle 有部分支持但生态较弱。
- 训练稳定性核心配置:欠损平衡(underloss balancing)与自适应权重策略对收敛至关重要——推荐从 DeepXDE 的 hard boundary conditions 模式起步,配合 Learning Rate Annealing(先大学习率后小学习率先粗解后细解)。这是工程落地的第一道关。
- 内存与规模管理:PINN 的计算图包含全部配置点,反向传播的内存开销在配置点数 >10⁵ 时显著增加。高分辨率问题建议使用残差自适应细化(residual-based adaptive refinement)或域分解(cPINN/XPINN),而非粗暴增加配置点。
- 已知失效场景(工程预警): - 激波/不连续解:原始 PINN 无法处理激波(shock wave),需使用 SC-PINN、level-set 方法或直接加 TVD(total variation diminishing)正则项; - 高雷诺数 NS 方程:湍流的多尺度特性使 PINN 收敛极慢且精度差,需结合 turbulence modeling(RANS/LES + PINN 混合方法); - 病态逆问题:当未知参数(粘度、热导率)与解高度非线性耦合时,需要多稳态初始化策略和贝叶斯推断框架,单次训练几乎不可能收敛到正确解。
- 推理加速优势:训练完成后,神经网络前向求值速度比数值求解器快 10²~10⁶ 倍,是嵌入实时优化控制回路(如工业设备数字孪生、CFD 快速预测)的核心价值点。
- 精度验收标准建议:对每个 PDE 问题同时跑传统数值求解器(FEniCS/FEniCSx、COMSOL、OpenFOAM)作为 ground truth 参考,验收标准为全场相对 L2 误差 <1%,且边界层区域满足物理约束(能量守恒、不可压缩等)。
- 开源代码起点:Raissi 原始 TensorFlow 1.x 实现已过时(API 已废弃);建议使用 DeepXDE(https://github.com/lululxvi/deepxde)作为生产级起点,文档齐全且持续维护。