1. 课程导入与问题界定

在工程与科学计算中,我们几乎不会面对一个“干净”的模型。水文模型里的渗透系数、结构有限元模型里的弹性模量、化工反应器模型里的活化能、乃至机器学习代理模型里的超参数,都带有不确定性。这些输入的不确定性会沿着模型传递,最终让输出——洪峰流量、最大应力、反应转化率、预测误差——也变成一个分布,而不是一个确定的数。敏感性分析要回答的核心问题就是:在输出不确定性的总方差中,各个输入各自贡献了多少?

局部敏感性分析(如在某点求偏导、做单因素±10%扰动)回答的是“在当前工作点附近,输入变化一点点会怎样”。它计算便宜、解释直观,但有两个致命局限:其一,它只在局部有效,而真实输入往往在较大范围内变动;其二,它无法捕捉输入之间的交互作用——当两个参数同时变化时产生的效应,可能远大于它们各自单独变化之和。Sobol方法正是为突破这两点而设计的全局、基于方差分解的敏感性分析框架。

核心思想:把输出方差“分账”

Sobol方法把模型写成 Y = f(X₁, X₂, …, X_d),其中各输入 Xᵢ 是相互独立的随机变量,各自服从给定的分布(均匀、正态、对数正态等)。在此前提下,输出方差 Var(Y) 可以严格分解为:

Var(Y) = Σᵢ Vᵢ + Σᵢ<ⱼ Vᵢⱼ + … + V₁₂…d
Vᵢ    = Var( E[Y | Xᵢ] )          —— 一阶(主)效应
Vᵢⱼ   = Var( E[Y | Xᵢ, Xⱼ] ) − Vᵢ − Vⱼ   —— 二阶交互效应
Sᵢ    = Vᵢ / Var(Y)               —— 一阶敏感性指数
Sᵀᵢ   = E[ Var(Y | X₋ᵢ) ] / Var(Y) —— 总效应指数

这里 E[Y | Xᵢ] 的含义是:固定 Xᵢ 取某个值,让其余所有输入在其分布上自由变动,得到的条件期望;再让 Xᵢ 遍历其分布,这个条件期望的方差就是 Vᵢ。直观地说,Sᵢ 衡量“只把 Xᵢ 的不确定性消除,输出方差能减少的比例”;Sᵀᵢ 衡量“把 Xᵢ 连同它参与的所有交互全部消除,输出方差能减少的比例”。两者之差 Sᵀᵢ − Sᵢ 就是该输入参与交互作用的程度,这是Sobol方法最有诊断价值的输出之一。

输入不确定性 → 输出方差分解 → 敏感性指数 输入(独立随机变量) X₁ 渗透系数 对数正态 X₂ 糙率 均匀分布 X₃ 降雨强度 正态分布 X₄ 初始水位 均匀分布 水文模型 Y = f(X₁…X₄) 输出:洪峰流量 输出方差分解 Var(Y) = V₁ + V₂ + V₃ + V₄ + V₁₂ + V₁₃ + V₂₃ + … + V₁₂₃ + … + V₁₂₃₄ Vᵢ = Var( E[Y | Xᵢ] ) Vᵢⱼ = Var( E[Y | Xᵢ,Xⱼ] ) − Vᵢ − Vⱼ Sᵢ = Vᵢ / Var(Y) Sᵀᵢ = E[ Var(Y | X₋ᵢ) ] / Var(Y) 结果判读(示例数值,非实测) X₁ S₁ = 0.42 X₂ S₂ = 0.12 X₃ S₃ = 0.25 X₄ S₄ = 0.05 总效应 Sᵀᵢ Sᵀ₁ = 0.55 Sᵀ₂ = 0.31 Sᵀ₃ = 0.38 Sᵀ₂−S₂=0.19 → X₂ 交互显著 Sᵢ 与 Sᵀᵢ 的差值揭示交互作用强度;ΣSᵢ < 1 说明存在不可忽略的交互项

从“是什么”到“怎么用”:本课程的学习路径

理解公式只是起点。真正把Sobol方法用起来,需要打通四个环节。第一是问题界定:明确输出量是什么、输入变量有哪些、每个输入的分布如何设定、变量之间是否满足独立性假设。这一步做错,后面所有指数都会失真。第二是采样设计:Sobol估计依赖特定的样本矩阵结构(如Saltelli采样),样本量 N×(2d+2) 随维数线性增长,需要在精度与计算成本之间权衡。第三是指数估计:用Monte Carlo或拟Monte Carlo方法估计 Sᵢ 与 Sᵀᵢ,并给出置信区间。第四是结果解读与决策:识别关键参数、发现交互结构、指导参数率定优先级或实验设计。

需要特别提醒的是独立性假设。经典Sobol分解要求输入相互独立;若参数间存在相关性(例如两个几何尺寸受同一工艺约束),方差分解不再唯一,需要改用基于Shapley值或条件分解的扩展方法。课程后续会专门讨论这一边界条件。

学习建议:每学完一种估计方法,都用一个小型解析算例(如 Y = X₁ + 2X₂ + X₁X₂,输入均为[0,1]均匀分布)手算或编程验证指数,这比直接套用现成工具包更能建立对 Sᵢ、Sᵀᵢ 数值含义的直觉。

本课程共30节,将从方差分解的数学基础出发,依次覆盖Saltelli采样、一阶与总效应估计、收敛性诊断、相关性输入的处理、代理模型加速,以及在水文、结构、化工等场景中的完整案例。第1节的任务不是记住所有公式,而是建立一张“问题地图”:知道Sobol方法解决什么问题、不解决什么问题、输入输出分别是什么、结果长什么样。带着这张地图进入后续学习,每一个技术细节才能找到自己的位置。