有位叫小P的学徒,想学会预测一锅老汤在炖煮时每一处的温度。他有一颗聪明的“神经网络大脑”,可光有大脑不会自学,还得靠师父手里一张“评分表”来指路。评分表上写着四道考题:温度计测过的点,预测对不对得上;传热过程,符不符合热传导定律;刚下锅时,整锅汤是不是同一个温度;锅底被火烤的那一侧,是不是恒温不变。更讲究的是,每道题占多少分还得反复掂量——温度计只盖得住几个点,物理定律却管着整锅汤。这张评分表的设计,就是物理信息神经网络(PINN)的灵魂:损失函数设计。本文就带你把这张表从头到尾设计一遍。

岗位关联

学懂损失函数设计,你就握住了 PINN 训练的方向盘:残差怎么算、条件怎么加、权重怎么配,都是 AI 物理仿真工程落地的分水岭。

目录
  1. 可视化演示
  2. 损失函数基础
  3. PINN结构概述
  4. 数据项损失
  5. 物理残差损失
  6. 初边值条件
  7. 权重平衡策略
  8. 优化与调参
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

演示PINN损失项构建、多损失加权与损失优化,理解不同PDE类型的损失函数设计。

本节配有交互动效(进入视口后自动加载,约 3KB)。

损失项:多损失构建 损失 中心 L 多损失项组合

损失函数基础

师父收下小P那天,递给他一张“评分表”,说:“你每练一天,我就按这张表给你打分。分数越低,说明你离名师的水平越近。”小P起初不懂,练得满头大汗却毫无方向。后来他才明白:没有评分表,练习就是瞎练;有了评分表,每一次练习都知道该往哪儿使劲。这张评分表,在机器学习里就叫“损失函数”——它是整个训练过程的方向盘。

损失函数衡量的是“模型的预测”和“我们认可的真相”之间的差距。预测离真相越远,损失值越大;训练要做的事,就是把损失值一点点压小。最常见的评分方式叫“均方误差”(MSE):把每个点上的偏差取平方再求平均。取平方的好处是,差一点点扣小分,差很多扣大分,绝不放过离谱的预测。小P每天看着自己的分数从几百降到几十,心里就有了「进步」的实感。

在数学上,均方误差写成一个简洁的式子:假设有 N 个样本,第 i 个样本的真实值是 y_i,网络的预测值是 ŷ_i,那么:

对天才徒弟和笨徒弟,这张表是同一张,它不问过程只看差距——这正是损失函数最朴素也最公平的地方。而到了物理仿真里,这张表要复杂得多,因为“真相”不止来自温度计,还来自物理定律。

L=1N∑i=1N(yi−y^i)2\displaystyle \mathcal{L} = \frac{1}{N}\sum_{i=1}^{N}\left(y_i - \hat{y}_i\right)^{2}
MSE 就像“平均差距的放大镜”:每个点的偏差先平方再平均,让大偏差暴露无遗。
  1. y_i 与 ŷ_iy_i 是第 i 个样本的真实值,ŷ_i 是模型的预测值,两者之差就是“偏差”。
    yi−y^iy_i - \hat{y}_i
  2. 平方运算偏差取平方,让正负偏差都被惩罚,且大偏差被加倍惩罚。
    (yi−y^i)2\left(y_i - \hat{y}_i\right)^{2}
  3. 求和与平均把所有样本的平方偏差加起来,再除以样本总数 N,得到平均差距。
    1N∑i=1N(yi−y^i)2\frac{1}{N}\sum_{i=1}^{N}\left(y_i - \hat{y}_i\right)^{2}

PINN结构概述

光有评分表还不行,小P得先了解自己的“大脑”。小P的大脑是一台名叫“神经网络”的计算装置:给它喂两个数——汤里某个位置 x 和某个时刻 t,它就会吐出一个数:这个位置此刻的温度 u。神奇的是,没人告诉它热传导公式,它也能通过训练把这个映射学出来。这就是“万能近似”的本事:只要有足够多的参数和足够的训练,它就能逼近任意复杂的函数。

但这里有个关键机关:要让物理定律参与打分,光会输出温度还不够,还得会“算导数”——比如温度随时间的快慢 ∂u/∂t、温度在空间上的弯曲程度 ∂²u/∂x²。普通程序算导数靠人工推公式,而神经网络有个天生的本领叫“自动微分”:沿着计算图反向一推,导数手到擒来。没有它,物理方程根本没法“写进”损失函数。

PINN 的目标是找一个“参数化的温度函数” u_θ(x,t),其中 θ 是网络里成千上万个可调参数。它一边逼近真实解,一边要被求导、被代入物理方程接受检验:

小P这下明白了:他的大脑既不是纯靠背数据,也不是纯套公式,而是“用神经网络去逼近一个满足物理定律的函数”。接下来师父的评分表,就是围绕这个目标展开的。

u(x,t)≈uθ(x,t),∂u∂t=α∂2u∂x2\displaystyle u(x,t) \approx u_{\theta}(x,t), \qquad \frac{\partial u}{\partial t} = \alpha \frac{\partial^{2}u}{\partial x^{2}}
热传导方程是“温度变化的物理剧本”:温度随时间的变化率,正比于它在空间上的弯曲程度。
  1. 网络映射u_θ(x,t) 表示以 θ 为参数的神经网络,输入位置与时刻,输出温度场。
    uθ(x,t)u_{\theta}(x,t)
  2. 时间偏导∂u/∂t 是温度随时间的变化快慢,由自动微分算出。
    ∂u∂t\frac{\partial u}{\partial t}
  3. 空间二阶偏导∂²u/∂x² 是温度在空间上的弯曲程度,等号右边是热扩散的驱动力,α 是扩散系数。
    α∂2u∂x2\alpha \frac{\partial^{2}u}{\partial x^{2}}
  4. 等式成立当等式左右两边相等时,u 就是热传导方程的解——这是后面“物理残差”的判定标准。
    ∂u∂t=α∂2u∂x2\frac{\partial u}{\partial t} = \alpha \frac{\partial^{2}u}{\partial x^{2}}

数据项损失

汤里插着三根温度计,分别在锅的左侧、中间和右侧,记录了一组温度:45度、65度、85度。师父说:第一条评分标准很简单——你的预测曲线,必须在这三根温度计读数附近。数据告诉你“这几个位置的真相”,这是最直接的证据。小P立刻让预测曲线穿过这些红点,数据项的分数嗖嗖往下掉。

不过在动手之前得认清现实:整锅汤有成千上万个位置,温度计只有三根。数据是稀疏的,而且温度计读数还有误差。如果只对着三根温度计拼命拟合,神经网络很容易“死记硬背”出弯弯绕绕的曲线——在机器学习里这叫“过拟合”:训练点上的误差为零,但换个位置就离谱。只信数据,就像只背考卷答案的考生,换一套题就不会了。

数据项的数学形式就是均方误差,只不过主角换成网络的输出 u_θ 和观测值 u_obs。把每根温度计测到的差值平方后取平均,就得到数据损失。设共有 N 个观测点:

数据损失是把双刃剑:它让预测贴着真相走,但稀少又带噪声的数据也会把网络带偏。好在,师父手里还有另外三条评分标准——尤其是“物理定律”这位不讲情面的考官。

Ldata=1N∑i=1N∣ uθ(xi,ti)−uobs(xi,ti) ∣2\displaystyle \mathcal{L}_{\text{data}} = \frac{1}{N}\sum_{i=1}^{N}\left|\,u_{\theta}(x_i, t_i) - u_{\text{obs}}(x_i, t_i)\,\right|^{2}
数据损失是“让预测贴着实测走”的胶水,但胶水只涂在温度计那三个点上。
  1. 预测值 u_θ(x_i, t_i)把第 i 根温度计的位置和时刻喂给网络,得到该点的预测温度。
    uθ(xi,ti)u_{\theta}(x_i, t_i)
  2. 观测值 u_obs温度计实测的温度,是“地面真相”。
    uobs(xi,ti)u_{\text{obs}}(x_i, t_i)
  3. 偏差平方两数之差取平方,偏离大的点被加倍惩罚。
    ∣ uθ(xi,ti)−uobs(xi,ti) ∣2\left|\,u_{\theta}(x_i, t_i) - u_{\text{obs}}(x_i, t_i)\,\right|^{2}
  4. 平均求和对所有观测点求平均,得到数据项损失。
    1N∑i=1N∣ uθ(xi,ti)−uobs(xi,ti) ∣2\frac{1}{N}\sum_{i=1}^{N}\left|\,u_{\theta}(x_i, t_i) - u_{\text{obs}}(x_i, t_i)\,\right|^{2}

物理残差损失

三根温度计之外,剩下的汤怎么办?师父神秘一笑:“真正的名厨不用温度计,也知道整锅汤每一处该多烫——因为传热必须服从热传导定律。”他把物理定律比作一位无处不在的隐形考官:锅里任意位置、任意时刻,温度变化都得符合方程,躲都躲不掉。这正是 PINN 最迷人的地方——让定律亲自监考。

具体做法是:在汤的时空范围里随机撒一批“配点”(collocation points),每个点相当于一个“考场座位”。在每个配点上,把网络的预测代入热传导方程,算一算方程两边差多少。这个差值叫“残差”(residual)——残差越大,说明网络输出越“违背物理”。小P很快发现,配点撒得越密,考试就越严格,物理规律就约束得越全面。

残差的平方取平均,就是物理残差损失。它不需要任何实测数据,只要方程写得出来,物理定律就能监督训练。设共有 M 个配点:

隐形考官管得比温度计宽多了:温度计只盯三个点,它却盯着全锅每一处。数据损失管“看得见的点”,物理损失管“看不见的全部”,两者一配合,小P的预测才真正有了物理的筋骨。

r(x,t)=∂uθ∂t−α∂2uθ∂x2,Lphys=1M∑j=1Mr(xj,tj)2\displaystyle r(x,t) = \frac{\partial u_{\theta}}{\partial t} - \alpha \frac{\partial^{2}u_{\theta}}{\partial x^{2}}, \qquad \mathcal{L}_{\text{phys}} = \frac{1}{M}\sum_{j=1}^{M} r(x_j, t_j)^{2}
物理残差损失相当于“隐形考官”的评分:方程两边越不匹配,扣分越狠。
  1. 残差定义把网络输出代入方程,等号左边减右边,差值 r 就是“违背物理的程度”。
    r(x,t)=∂uθ∂t−α∂2uθ∂x2r(x,t) = \frac{\partial u_{\theta}}{\partial t} - \alpha \frac{\partial^{2}u_{\theta}}{\partial x^{2}}
  2. 时间项网络输出温度随时间的变化率,由自动微分计算。
    ∂uθ∂t\frac{\partial u_{\theta}}{\partial t}
  3. 扩散项温度在空间上的二阶导数乘以扩散系数 α,描述热量如何散开。
    α∂2uθ∂x2\alpha \frac{\partial^{2}u_{\theta}}{\partial x^{2}}
  4. 残差损失对所有配点残差取平方求平均,物理损失越小,解越符合定律。
    Lphys=1M∑j=1Mr(xj,tj)2\mathcal{L}_{\text{phys}} = \frac{1}{M}\sum_{j=1}^{M} r(x_j, t_j)^{2}

初边值条件

物理场还有两个“比赛规则”:发令枪响之前的状态,和场地边界的规矩。小P要预测的热汤,开火前整锅都是28度——这叫初始条件(Initial Condition);锅底被火焰烧着的那一侧永远保持100度——这叫边界条件(Boundary Condition)。小P刚开始不以为然,觉着这不过是“开场的摆设”。

如果没有这两条约束,微分方程会有无数个解:物理定律只约束“怎么变”,不约束“从哪变、在哪变”。就像师父只教你颠勺的手法,却不告诉你食材从哪来、灶台在哪,这道菜根本没法学。初边值条件就是给解“定锚”的锚点:锚不牢,整条解曲线都会飘移。小P这才意识到,它们是物理场的“地基”。

PINN 的处理方式与数据项类似:在初始时刻撒一批点,让网络输出逼近给定初值;在边界上撒一批点,让输出逼近边界值。两笔账都记进损失函数,一条都不能省:

锚点虽小,作用极大。少了初值,网络不知道“从哪开始”;少了边值,网络不知道“边界规矩”。四条评分标准凑齐,接下来就是最考验功底的一步——它们各占多少分。

Lic=1Nic∑k(uθ(xk,0)−u0(xk))2,Lbc=1Nbc∑k(uθ(0,tk)−uwall)2\displaystyle \mathcal{L}_{\text{ic}} = \frac{1}{N_{ic}}\sum_{k}\left(u_{\theta}(x_k, 0) - u_0(x_k)\right)^{2}, \qquad \mathcal{L}_{\text{bc}} = \frac{1}{N_{bc}}\sum_{k}\left(u_{\theta}(0, t_k) - u_{\text{wall}}\right)^{2}
初始条件锁“起点”,边界条件锁“边界”,两个锚点共同保证解的唯一性。
  1. 初始条件在 t=0 时刻采样一批位置,要求网络输出逼近初值 u_0(x)。
    Lic=1Nic∑k(uθ(xk,0)−u0(xk))2\mathcal{L}_{\text{ic}} = \frac{1}{N_{ic}}\sum_{k}\left(u_{\theta}(x_k, 0) - u_0(x_k)\right)^{2}
  2. 边界条件在左边界 x=0 处采样时刻,要求输出逼近壁面温度 u_wall。
    Lbc=1Nbc∑k(uθ(0,tk)−uwall)2\mathcal{L}_{\text{bc}} = \frac{1}{N_{bc}}\sum_{k}\left(u_{\theta}(0, t_k) - u_{\text{wall}}\right)^{2}
  3. 共同作用一个锁住“起点”,一个锁住“边界”,两个条件一起保证解不漂移。
    uθ(xk,0)=u0(xk),uθ(0,tk)=uwallu_{\theta}(x_k, 0) = u_0(x_k), \qquad u_{\theta}(0, t_k) = u_{\text{wall}}

权重平衡策略

评分表列好四条之后,师父开始发愁:每一条该占多少分?如果数据损失占90分、物理损失占10分,小P会变成“背答案机器”,在温度计之间瞎猜;反过来,如果物理损失权重过大,他又会无视实测数据,学成一套“纸上谈兵”的理论温度。四条考官意见不一致时,听谁的?这就像三个师傅抢一个徒弟,得有个主次。

更麻烦的是,四项损失天生的“量级”就不同:温度观测值是几十度,残差的单位却是“度每秒”,算出来的数值可能差好几个数量级。如果不加权直接相加,大数项会霸占梯度,小数项直接被淹没——这就是训练里常说的“梯度病理”。小P亲眼见过一次:总损失在降,可物理损失纹丝不动,因为它的数值太小,梯度根本推不动它。

经典做法是给每项配一个权重系数 λ,总损失为加权和。进阶做法是自适应加权:训练中观察各损失下降的速度,动态调整权重,对“学得慢”的项多给一点注意力,让所有考官的声音都听得见:

师父最后总结:评分表上没有“标准答案”,权重的本质是表达“你更相信谁”。数据可靠就多信数据,数据稀疏就多靠物理。这张平衡表,正是损失函数设计的核心手艺。

Ltotal=λdLdata+λpLphys+λicLic+λbcLbc\displaystyle \mathcal{L}_{\text{total}} = \lambda_{d}\mathcal{L}_{\text{data}} + \lambda_{p}\mathcal{L}_{\text{phys}} + \lambda_{ic}\mathcal{L}_{\text{ic}} + \lambda_{bc}\mathcal{L}_{\text{bc}}
权重 λ 是“话语权”:谁的数值大,谁就更能左右训练方向。
  1. 四个分量总分由数据、物理、初值、边值四项损失组成,每一项都配一个 λ 权重。
    λdLdata+λpLphys+λicLic+λbcLbc\lambda_{d}\mathcal{L}_{\text{data}} + \lambda_{p}\mathcal{L}_{\text{phys}} + \lambda_{ic}\mathcal{L}_{\text{ic}} + \lambda_{bc}\mathcal{L}_{\text{bc}}
  2. 权重含义λ 是正数标量,表达“多相信谁”,用来压缩量级大的项、放大量级小的项。
    λd,λp,λic,λbc>0\lambda_{d}, \lambda_{p}, \lambda_{ic}, \lambda_{bc} > 0
  3. 加权求和四项加起来得到唯一的总损失,后续的梯度下降就以此为导航。
    Ltotal=λdLdata+λpLphys+λicLic+λbcLbc\mathcal{L}_{\text{total}} = \lambda_{d}\mathcal{L}_{\text{data}} + \lambda_{p}\mathcal{L}_{\text{phys}} + \lambda_{ic}\mathcal{L}_{\text{ic}} + \lambda_{bc}\mathcal{L}_{\text{bc}}

优化与调参

评分表定了,小P开始日复一日地练习。练习遵循一个朴素的逻辑:预测越差的地方,越要往反方向调整。在数学上,这个“调整方向”由损失函数对参数的导数——梯度——给出。沿着梯度下降的方向走,损失就会变小,这就是梯度下降法。小P的“肌肉记忆”(参数 θ)就这样一格格被修正。

每一步走多大,由“学习率”决定。步子太小,练一万遍都进步缓慢;步子太大,直接跨过最低点,在谷底两侧来回蹦跳,损失曲线像心电图一样震荡。师父的经验是:先用较大的学习率快速“下山”,再逐步减小,稳稳逼近谷底。小P把这条经验记在小本本上,管它叫“学习率策略”。

训练时不能只盯总分。最专业的做法是把四条损失分别画出来观察:如果总分降了、但物理损失纹丝不动,多半是权重失衡或配点不足;如果损失长期不降,可能是学习率太小或网络容量不够。这种“分项诊断”是收敛性判断的关键——就像看病不能只看体温,还要逐项化验。参数更新的数学规则是:

小P翻着厚厚的练习日志,终于明白:一张好的评分表不是写出来就完事,还要在训练中不断观察、微调。设计损失函数,本质上是一门“用评分表引导学习”的手艺——这正是 PINN 工程师每天在做的事。

θ←θ−η∇θLtotal\displaystyle \theta \leftarrow \theta - \eta \nabla_{\theta}\mathcal{L}_{\text{total}}
梯度下降是“跟着反方向的山坡往下走”:梯度指向上坡,取反就是下坡。
  1. 参数向量 θ神经网络中的所有权重与偏置,是学徒大脑里的“肌肉记忆”。
    θ\theta
  2. 梯度总损失对每个参数求偏导,指向损失上升最快的方向;取反就是下降方向。
    ∇θLtotal\nabla_{\theta}\mathcal{L}_{\text{total}}
  3. 学习率 η控制每一步迈多大,太大震荡、太小蜗牛。
    η\eta
  4. 更新规则沿负梯度方向迈出一步,损失下降,参数更新。
    θ←θ−η∇θLtotal\theta \leftarrow \theta - \eta \nabla_{\theta}\mathcal{L}_{\text{total}}

AI 应用场景

消费电子散热仿真

阶段:模型训练 / 物理约束求解

解决的问题:传统热仿真用有限元做网格剖分,建模慢、迭代久,改一次边界条件就要重新剖分。PINN 把少量红外测温当作数据损失,把热传导方程当作物理损失,不画网格也能预测整块散热片的温度分布。

具体案例:某手机厂商在芯片高负载压测中,用 PINN 预测电池仓与外壳的温度场。实测只有 20 余个采样点,配合全域物理残差约束,预测误差控制在 2°C 以内,单次仿真耗时从 2 小时缩到 5 分钟。

锂电池热失控预警

阶段:损失函数约束设计 / 在线推断

解决的问题:电池热失控是“传热+产热”的强非线性过程,边界条件随环境剧烈变化。纯数据驱动模型在少样本下极易误报,PINN 把热传导方程与初边值条件写进损失,用少量实测温度就能反推出内部温度场。

具体案例:某储能企业在电池模组中只布设了少量温度传感器,用 PINN 在线反演电芯内部最高温度。物理残差约束保证了未布点区域也不会失真,提前 3 分钟给出热失控预警。

Python 演示

python68 行
import torchimport torch.nn as nn  class PINN(nn.Module):    def __init__(self):        super().__init__()        self.net = nn.Sequential(            nn.Linear(2, 20),            nn.Tanh(),            nn.Linear(20, 20),            nn.Tanh(),            nn.Linear(20, 1),        )     def forward(self, x, t):        return self.net(torch.cat([x, t], dim=1))  def main():    torch.manual_seed(0)    model = PINN()    opt = torch.optim.Adam(model.parameters(), lr=0.001)    alpha = 0.1     x_data = torch.tensor([[0.2], [0.5], [0.8]])    t_data = torch.tensor([[0.5], [0.5], [0.5]])    u_data = torch.tensor([[45.0], [65.0], [85.0]])     x_col = torch.rand(200, 1, requires_grad=True)    t_col = torch.rand(200, 1, requires_grad=True)     x_bc = torch.zeros(50, 1)    t_bc = torch.rand(50, 1)    u_bc = torch.full_like(t_bc, 100.0)     x_ic = torch.rand(50, 1)    t_ic = torch.zeros_like(x_ic)    u_ic = torch.full_like(x_ic, 28.0)     for epoch in range(3000):        opt.zero_grad()        loss_data = ((model(x_data, t_data) - u_data) ** 2).mean()         u = model(x_col, t_col)        u_t = torch.autograd.grad(u, t_col, torch.ones_like(u), create_graph=True)[0]        u_x = torch.autograd.grad(u, x_col, torch.ones_like(u), create_graph=True)[0]        u_xx = torch.autograd.grad(u_x, x_col, torch.ones_like(u_x), create_graph=True)[0]        loss_phys = ((u_t - alpha * u_xx) ** 2).mean()         loss_ic = ((model(x_ic, t_ic) - u_ic) ** 2).mean()        loss_bc = ((model(x_bc, t_bc) - u_bc) ** 2).mean()         loss = loss_data + loss_phys + loss_ic + loss_bc        loss.backward()        opt.step()         if epoch % 500 == 0:            print("epoch", epoch,                  "data", round(loss_data.item(), 4),                  "phys", round(loss_phys.item(), 4),                  "ic", round(loss_ic.item(), 4),                  "bc", round(loss_bc.item(), 4))    print("train done")  if __name__ == "__main__":    main()
目的:用 PyTorch 训练一个最小可运行的 PINN,求解一维热传导方程,把数据、物理、初值、边值四项损失同时压小。
  1. self.net = nn.Sequential(...)三层全连接网络,搭出小P的“大脑”。
  2. x_col = torch.rand(200, 1, requires_grad=True)随机撒 200 个配点,作为物理考场的“座位”。
  3. u_t = torch.autograd.grad(u, t_col, torch.ones_like(u), create_graph=True)[0]自动微分求温度对时间的导数。
  4. u_x = torch.autograd.grad(u, x_col, torch.ones_like(u), create_graph=True)[0]自动微分求一阶空间导数。
  5. u_xx = torch.autograd.grad(u_x, x_col, torch.ones_like(u_x), create_graph=True)[0]对导数再求一次导,得到二阶空间导数。
  6. loss_phys = ((u_t - alpha * u_xx) ** 2).mean()物理残差项:强迫网络输出满足热传导方程。
  7. loss_ic = ((model(x_ic, t_ic) - u_ic) ** 2).mean()初始条件项:锁住 t=0 时刻的起点。
  8. loss_bc = ((model(x_bc, t_bc) - u_bc) ** 2).mean()边界条件项:锁住 x=0 处的火焰温度。
  9. loss = loss_data + loss_phys + loss_ic + loss_bc四条评分标准合成总分。
  10. loss.backward()反向传播算出每个参数的梯度。
  11. opt.step()让优化器沿着梯度下降方向更新参数。

常见误区

误区我训练 PINN 时把所有精力放在把观测点温度拟合准,物理项随便写写。反正数据是“真”的,拟合好数据不就行了?

正解这正是“背答案”误区。温度计只有三根,纯拟合必然在数据稀疏区域乱猜;物理项约束的是“全部时空”的规律,两项互补才能还原真实温度场。就像只背食谱成品的照片学不会火候,必须加上烹饪原理才能真正掌握。

为何常见:初学者都从传统监督学习入门,天然认为“数据越多越准”,忽略了物理信息才是 PINN 区别于普通神经网络的灵魂。

误区PINN 的总损失就是把数据、物理、初值、边值四项直接相加,我一般把 λ 全部设成 1,方便省事还显得公平。

正解四项损失的数值量级往往差几个数量级——残差的单位是“度每秒”,初值边值的单位是“度”。直接相加会让大数项霸占梯度、小数项被淹没。权重设计是损失函数的核心,至少要按量级来配,最好用自适应加权。

为何常见:四个数相加看起来“公平”,但机器只看数值大小,不看物理意义,公平不等于等权。

误区训练结束看总损失从 1e-1 降到了 1e-4,非常开心,认为模型一定很准,直接交付。

正解总分低可能是“偏科”——数据项压得很低,物理项却纹丝不动。正确做法是分别观察四项损失曲线;物理项不降,说明配点或权重有问题,模型在无数据区域依然违背物理定律。

为何常见:习惯了监督学习只看一个 loss 的做法,没有建立 PINN 特有的“分项诊断”意识。

误区物理残差在固定几十个点上算一算就行,配点数量和分布对结果没什么影响,多了还浪费时间。

正解配点是物理考官的“监考座位”,覆盖不足就像只抽查教室的几个角落,其余地方照样违反物理。配点应当随机散布、覆盖整个时空域,密度不够时物理约束形同虚设。

为何常见:每个配点都要走一次自动微分,计算成本高,初学者容易“省钱”,结果省出了模型学歪的代价。

面试题

Q1. 与普通神经网络相比,PINN 最核心的差异是什么?

单选题 · easy

  • A.在损失中加入物理方程约束← 正确答案
  • B.使用更深更宽的神经网络
  • C.在网络输出层加入随机噪声
  • D.完全不需要任何训练数据

答案:A。PINN 的精髓是把 PDE 残差写进损失函数,让物理定律参与训练。它仍然需要数据、深度网络和梯度下降,所以 B、C、D 均不是核心差异。

Q2. 均方误差(MSE)的数学含义是?

单选题 · easy

  • A.预测与真实差值的平方平均← 正确答案
  • B.预测与真实差值的绝对平均
  • C.预测值在数据集中的出现频率
  • D.真实值本身的大小总和

答案:A。MSE 将每个样本的偏差平方后取平均,A 正是它的定义;B 少了平方运算,C、D 与“差距度量”完全无关。

Q3. 在热传导 PINN 中,物理残差损失衡量的是?

单选题 · mid

  • A.预测解违背热传导方程的程度← 正确答案
  • B.预测解与温度计数据的差距
  • C.网络参数在内存中占用的空间
  • D.训练过程消耗的总计算时间

答案:A。残差 r = u_t − αu_xx 的平方均值,正是方程两边不匹配的程度;B 是数据损失,C、D 与物理约束无关。

Q4. PINN 中的“配点”主要用来做什么?

单选题 · mid

  • A.计算物理残差并施加方程约束← 正确答案
  • B.存储训练数据的临时缓存位置
  • C.确定网络每一层的神经元数量
  • D.记录损失函数的历史变化曲线

答案:A。配点是在时空域中采样的点,网络的预测在这些点上代入 PDE 计算残差,从而把物理约束“撒遍”全域。其余选项描述的都不是配点的作用。

Q5. 在 PINN 中,初始条件损失的作用是?

单选题 · mid

  • A.约束初始时刻网络输出符合初值← 正确答案
  • B.约束边界位置输出符合边界值
  • C.让网络权重在训练前全部归零
  • D.让物理残差在初始时刻自动消失

答案:A。初始条件锁住 t=0 时刻的解,边界条件锁住空间边界;C 把权重归零与初值混淆,D 是对残差的错误理解。

Q6. 关于 PINN 各项损失权重,下列说法正确的是?

多选题 · mid

  • A.全部设为相同值永远最优
  • B.需要根据损失量级来平衡← 正确答案
  • C.自适应加权可在训练中调整← 正确答案
  • D.权重越大模型精确度必定越高

答案:BC。权重平衡要按损失量级来配,B 对;自适应加权会在训练中动态调整权重,C 对;A 忽视量级差异,D 中权重过大反而会压垮其他损失项。

Q7. 训练中发现物理损失长时间不下降,最应优先排查的是?

单选题 · mid

  • A.配点是否覆盖完整的时空区域← 正确答案
  • B.观测数据是否包含随机噪声
  • C.输出层是否使用线性激活
  • D.测试集样本数量是否足够

答案:A。物理损失不降,通常是物理约束“没被监考到”——配点覆盖不足或权重失衡。B 影响的是数据项,C、D 与物理损失没有直接关系。

Q8. “梯度病理”在 PINN 训练中的典型表现是?

单选题 · hard

  • A.各项损失梯度大小相差几个数量级← 正确答案
  • B.网络参数全部同时变成非负数
  • C.数据损失为零但物理损失极大
  • D.自动微分无法计算二阶导数

答案:A。数据残差与 PDE 残差单位不同、量级悬殊,大梯度项主导更新,小梯度项被淹没,这正是梯度病理。C 是其后果之一而非定义,B、D 张冠李戴。

Q9. 下列哪些是 PINN 损失函数的组成部分?

多选题 · mid

  • A.数据观测值的拟合损失← 正确答案
  • B.物理方程的残差损失← 正确答案
  • C.初始边界条件的约束← 正确答案
  • D.网络参数随机初始化值

答案:ABC。数据、物理残差、初边值约束构成典型的 PINN 总损失;D 是训练前的参数设置,不属于损失函数的评判项。

Q10. 针对 PINN 损失项权重难以平衡的问题,常见思路包括?

多选题 · hard

  • A.依据各损失初始量级设定权重← 正确答案
  • B.在训练过程中动态调节权重← 正确答案
  • C.用梯度范数反馈修正权重参数← 正确答案
  • D.删除物理损失只保留数据拟合

答案:ABC。固定加权看初始量级,自适应加权看训练动态,C 是自适应的一种实现方式;D 会让模型退化为纯数据拟合,失去物理约束的意义。