4. 物理信息神经网络(PINN)原理

物理信息神经网络(Physics-Informed Neural Network,PINN)的核心思想,是把“数据拟合”与“物理规律约束”放进同一个优化目标里。传统神经网络只依赖样本标签,而 PINN 用偏微分方程(PDE)的残差作为额外的监督信号:网络输出不仅要贴近观测数据,还要在采样点上满足方程、边界条件和初始条件。这样一来,即使观测数据稀疏,网络也能借助物理约束把解“撑”起来。

设待求场量为 u(x,t),控制方程为 N[u]=f,其中 N 是含空间与时间导数的微分算子。PINN 用一个多层网络 u_θ(x,t) 近似解,θ 为可训练参数。损失函数通常由四部分构成:方程残差损失、边界条件损失、初始条件损失和数据损失。以权重 λ 调节各项比例,可写成:

L(θ) = λ_r · mean( (N[u_θ] - f)^2 )        # PDE 残差
     + λ_b · mean( (B[u_θ] - g)^2 )        # 边界条件
     + λ_i · mean( (u_θ(x,0) - u0)^2 )     # 初始条件
     + λ_d · mean( (u_θ - u_obs)^2 )       # 观测数据

关键难点在于:N[u_θ] 中的 ∂u/∂x、∂u/∂t、∂²u/∂x² 等导数如何得到?PINN 使用自动微分(Automatic Differentiation,AD)。网络本身是可微的复合函数,AD 沿计算图反向传播,能精确算出输出对输入的导数,而不是用有限差分近似。以二阶导数为例,在 PyTorch 中可这样实现:

u = net(x, t)
u_x = torch.autograd.grad(u, x, grad_outputs=torch.ones_like(u),
                          create_graph=True)[0]
u_xx = torch.autograd.grad(u_x, x, grad_outputs=torch.ones_like(u_x),
                           create_graph=True)[0]
u_t = torch.autograd.grad(u, t, grad_outputs=torch.ones_like(u),
                          create_graph=True)[0]

注意 create_graph=True 必须保留,否则二阶导数无法继续反传。残差项一般写成 res = u_t - alpha * u_xx(以一维热传导为例,alpha 为热扩散系数),再对残差取均方。采样点通常分两类:配点(collocation points)用于计算方程残差,可随机撒在求解域内部;边界点和初始点则用于约束条件。配点数量、分布密度和权重比例会显著影响收敛。

自动微分得到的是网络对输入的解析导数,精度高于有限差分;但高阶导数会放大数值误差,建议对输入做归一化,并控制网络深度与激活函数(tanh、sin 较常用,ReLU 二阶导为零,不适合二阶 PDE)。

边界条件与初始条件的处理方式直接决定问题是否可解。常见做法是“软约束”:把边界/初始偏差写进损失函数,让优化器去压低它。另一种是“硬约束”:通过输出变换强制满足条件,例如令 u_θ = g(x) + φ(x)·net(x),其中 φ 在边界上为零,从而边界值恒等于 g。硬约束收敛更稳,但构造较复杂;软约束实现简单,需仔细调权重。初始条件在时间推进类问题中尤其重要,若权重过小,网络可能收敛到满足方程但初值错误的“伪解”。

PINN 损失构成与正/反问题求解路径 输入坐标 (x, t) 配点/边界/初值 神经网络 u_θ(x,t) 多层全连接 + 激活 自动微分求导 PDE 残差损失 N[u_θ]−f 在配点 边界条件损失 B[u_θ]−g 在边界 初始条件损失 u_θ(x,0)−u0 观测数据损失 u_θ−u_obs(可选) 加权总损失 L = Σ λᵢ Lᵢ 反向传播更新 θ 正问题:方程与参数已知 已知 N、f、边界/初值 → 求 u(x,t) 损失中 λ_r、λ_b、λ_i 固定,训练网络 输出:全场近似解 反问题:参数或源项未知 未知 α、f 或边界 → 与 θ 一起训练 用观测数据约束,反演物理参数 输出:u(x,t) 与未知参数估计

正问题与反问题是 PINN 的两大应用方向。正问题中,方程形式、系数、边界和初值都已知,目标是求场量 u。此时损失里的 λ_r、λ_b、λ_i 固定,网络只学 θ。反问题中,某些物理参数(如热扩散系数 α、源项 f、甚至边界形状)未知,可把它们设为可训练变量,与 θ 一起优化。观测数据损失在反问题中变得关键——正是稀疏的 u_obs 提供了识别未知参数的依据。例如一维热传导反演 α:给定若干时刻的温度测点,令 α 为可学习标量,损失同时包含残差与数据项,训练后 α 会收敛到接近真值的估计。

实际实现时,一个可复现的最小流程如下。以一维热传导 u_t = α u_xx,域 x∈[0,1]、t∈[0,1],边界 u(0,t)=u(1,t)=0,初值 u(x,0)=sin(πx),α=0.1 为例(示例参数,非实测)。网络取 4 层、每层 64 个神经元、tanh 激活。配点用拉丁超立方在域内取 2000 个,边界各取 200 个,初值取 200 个。训练 5000 步,Adam 学习率 1e-3,后接 LBFGS 精调。判断收敛可观察总损失是否降至 1e-4 量级,并在若干测试点上与解析解 u=exp(−απ²t)sin(πx) 对比相对误差;若边界附近误差偏大,通常是 λ_b 偏小或边界配点不足。

常见排障点:① 损失不降——检查自动微分是否保留计算图、输入是否归一化;② 满足方程但边界错——提高 λ_b 或改用硬约束;③ 反问题参数漂移——数据点太少或 λ_d 过小,需增加观测或调权;④ 高阶导数噪声大——改用 tanh/sin 激活并减小网络深度。

与纯数据驱动模型相比,PINN 的优势在于把已知物理规律变成“免费的正则”,在数据稀缺、边界复杂或多尺度耦合场景中尤其有价值;代价是训练成本较高、损失权重需要调参。理解残差、自动微分、条件约束与正反问题这四者的关系,是后续把 PINN 用到多尺度建模中的基础。