1. 课程导入与反问题评估全景
反问题建模与正问题建模的根本差别,在于“已知什么、要求什么”。正问题是由模型参数推演观测数据,例如给定地下介质速度场,用波动方程算出地震记录;反问题则反过来,从含噪、不完备的观测数据出发,反推模型参数、初始条件、边界条件或源项。这一“反向”特性决定了反问题几乎总是不适定的:解可能不存在、不唯一,或对数据扰动极度敏感。因此,反问题课程的核心不只是“把参数反演出来”,而是回答一个更严格的问题——反演得到的模型,凭什么可信?换一批数据、换一个场景,它还能成立吗?这正是交叉验证与泛化评估要解决的问题。
先建立反问题建模的基本范式。一个典型的反问题可以写成算子形式:
d = F(m) + ε
目标:由 d 估计 m
其中 d ∈ R^N 为观测数据,m ∈ R^M 为待反演模型参数,
F 为正演算子(通常是非线性、需数值求解的 PDE 算子),
ε 为观测噪声与模型误差的合成项。
求解时通常构造带正则项的目标函数 J(m) = ||F(m) − d||² + λR(m),通过梯度类方法(如 Gauss-Newton、共轭梯度)或全局搜索方法迭代求解。这里已经埋下了评估难题:正则化参数 λ 的选择、正演算子 F 的离散误差、噪声水平 ε 的估计,都会让反演结果产生系统性偏差。如果只用“反演残差小”来判断模型好坏,就会掉进过拟合的陷阱——残差可以靠拟合噪声压得很低,但模型已经偏离真实物理结构。
交叉验证正是对抗这一陷阱的基本工具。其核心思想是:把数据划分为训练部分与验证部分,用训练部分反演模型,用验证部分检验模型对“未见数据”的预测能力。对反问题而言,K 折交叉验证的典型做法是:将观测数据按空间位置或炮检点分组,轮流留出一折作为验证集,其余用于反演,记录每折在验证集上的预测误差,最后取均值与方差。这里有一个反问题特有的关键细节——数据划分必须尊重数据的空间相关性与采集结构。若随机打乱炮检点,训练集与验证集在空间上高度重叠,验证误差会被严重低估;更合理的做法是按区块、按测线或按时间窗分组划分,模拟“预测未知区域”的真实场景。
泛化评估则更进一步,它关心的不是同一数据集内部的插值能力,而是模型迁移到新条件后的表现。对反问题模型,泛化至少包含三个层次:数据泛化(新噪声水平、新采样密度下的稳定性)、参数泛化(反演目标参数分布变化时的适应性)、物理泛化(正演算子或边界条件改变时的可靠性)。评估时常用的指标包括验证集均方误差、相对模型误差 ||m̂ − m_true||/||m_true||(在合成数据场景下可得)、以及分辨率与不确定性指标,如点扩散函数宽度、后验协方差的置信区间覆盖率。需要强调的是,在真实数据场景中 m_true 不可得,此时应依赖数据残差 + 物理一致性 + 独立观测校验的组合判据,而不能只看单一误差数字。
为了让上述抽象框架落地,本课程设置了一个贯穿全程的实战项目:一维层状介质走时反演与泛化评估。设定如下(示例参数,用于教学演示):地下为水平层状结构,真实层速度取 [1500, 2200, 3000, 4000] m/s,层厚 [200, 300, 400, 500] m;在地表布设 24 个检波器,间距 50 m,激发 5 个炮点;正演采用射线追踪计算初至走时,并在走时上叠加标准差为 8 ms 的高斯噪声。待反演参数为各层速度与层厚,共 8 个未知量。项目要求学员完成四件事:其一,用 Gauss-Newton 迭代反演,观察残差随迭代下降的曲线;其二,按炮点分组做 5 折交叉验证,比较训练残差与验证残差是否出现明显分叉;其三,将噪声标准差从 4 ms 逐步提高到 20 ms,绘制验证误差随噪声变化的曲线,判断模型在何种噪声水平下开始失效;其四,用反演结果做一次“留出一层”的预测检验,即用反演模型预测未参与反演的某层走时,评估物理泛化能力。