4. 残差评估方法
在物理残差自适应采样中,采样策略的“眼睛”就是残差评估。只有把每个候选点上的物理残差算得准、算得快,后续的加密、加点、重采样才有可靠依据。本节围绕四个相互关联的问题展开:单点残差怎么算、多个残差分量如何聚合成一个标量、导数项用什么方式求、以及精度与成本之间如何取舍。
一、点wise残差计算:从方程到标量
设一个由偏微分方程描述的物理问题写成残差形式 R(x) = N[u](x) - f(x),其中 N 是微分算子,u 是当前近似解(例如神经网络或插值函数给出的解),f 是源项。所谓点wise残差,就是在给定坐标 x_i 处,把近似解代入算子后得到的局部违背量。对一维稳态热传导 -k u''(x) = q(x),点wise残差即 R(x_i) = -k u''(x_i) - q(x_i);对二维不可压 Navier–Stokes 的动量方程,残差是一个向量,每个分量对应一个方程。
实际实现时,点wise残差通常不是孤立计算的,而是对一批候选点 {x_i}_{i=1}^{M} 批量求值,得到残差数组。需要注意三点:其一,残差必须在与方程一致的坐标系和单位下计算,若解被归一化,源项和系数也要同步归一化;其二,边界点与内部点的残差含义不同,边界残差衡量边界条件违背,内部残差衡量方程违背,二者不宜直接混入同一个范数;其三,对含多个物理场的问题,应保留分场残差,便于定位是哪个方程在“拖后腿”。
二、残差范数选择:把向量压成标量
自适应采样需要一个可比较的标量指标来决定“哪里最该加点”。常见选择有:
- L∞ 范数:
||R||∞ = max_i |R_i|,对最大违背最敏感,适合强调最坏点、防止局部严重失真,但容易被单个异常点主导。 - L2 范数:
||R||2 = (Σ |R_i|²)^{1/2},平滑、对整体误差敏感,适合作为全局收敛判据,但对局部尖峰不敏感。 - L1 范数:
||R||1 = Σ |R_i|,对离群点更稳健,适合残差分布重尾的情形。 - 加权范数:
||R||w = (Σ w_i |R_i|²)^{1/2},用w_i体现单元体积、物理量纲或先验重要性,是多物理场问题的常用做法。
选择范数不是纯数学偏好,而是与采样目标绑定:若目标是“消除最坏局部误差”,用 L∞ 或带阈值的最大残差;若目标是“整体精度达标”,用 L2;若残差量纲差异大(如温度与压力同批比较),必须先无量纲化再加权。一个实用做法是同时监控 L∞ 与 L2:L∞ 触发局部加密,L2 判断整体是否收敛。
三、数值微分与自动微分
残差中的导数项是精度与成本的主要来源。数值微分(有限差分)实现简单:一维二阶中心差分为 u''(x_i) ≈ (u_{i-1} - 2u_i + u_{i+1}) / h²,误差为 O(h²),但步长 h 过大会截断误差大,过小会放大舍入误差,且在高维、非结构网格上构造差分模板较繁琐。数值微分只用到函数值,适合解由黑箱插值给出的场景。
自动微分(AD)则对计算图逐节点应用链式法则,前向模式适合输入维度低、输出维度高的情形,反向模式适合输出为标量损失、输入维度高的情形。对神经网络近似解,反向模式一次前向加一次反向即可得到所有输入点的梯度,二阶导数可通过嵌套或 Hessian-向量积实现。AD 的导数精度达到机器精度,不受步长困扰,但需要框架支持,且高阶导数的计算图会显著膨胀。
# 示例:用自动微分计算一维残差(PyTorch 风格伪代码)
x = torch.tensor(xi, requires_grad=True)
u = model(x) # 近似解
u_x = torch.autograd.grad(u, x, grad_outputs=ones, create_graph=True)[0]
u_xx = torch.autograd.grad(u_x, x, grad_outputs=ones, create_graph=True)[0]
R = -k * u_xx - q(x) # 点wise残差
选择建议:解由可微模型给出、需要高阶导数或高维输入时优先 AD;解为离散插值、或只需一阶导数且网格规则时,有限差分更轻量。混合使用也常见——内部用 AD,边界用差分,但必须保证两处导数精度量级一致,否则残差会被数值噪声污染。
四、精度与成本权衡
残差评估的成本由三部分构成:函数/模型前向求值次数、导数计算开销、以及候选点数量 M。AD 反向模式单点成本约等于数次前向,但二阶导可能达到数十倍;有限差分每个导数方向都要额外前向,维度 d 时成本随 d 增长。因此,在采样迭代早期,候选点多、精度要求低,可用一阶差分或低阶 AD 快速筛出高残差区域;在收敛后期,候选点少、需要精确判据,再切换到高阶 AD 或更细差分。
还需警惕“残差评估误差被误读为物理误差”。若差分步长不当,残差图会出现棋盘状噪声,自适应算法会把点加到噪声最大处而非真正误差最大处。判断方法是:固定解、缩小步长或改用 AD 重算残差,若高残差区域位置明显漂移,说明原评估不可信。另一个判据是残差随候选点加密是否收敛——若 M 翻倍后最大残差位置稳定,评估可信度较高。
把上述四件事串起来,一个可复现的评估流程是:确定残差表达式与坐标系 → 选择导数计算方式并验证步长或 AD 精度 → 对候选点批量计算分场残差 → 按物理量纲加权并选择范数 → 用粗筛/精评两阶段控制成本 → 检查残差分布是否随候选点加密而稳定。只要其中任一步的精度与成本失衡,自适应采样就会把计算资源投到错误的位置,这正是残差评估方法必须单独设计的原因。