高斯过程回归模拟器 返回
机器学习模拟器

高斯过程回归 — RBF核与95%置信带

实时可视化一维 GP 回归。改变观测点数、长度尺度、信号方差和噪声,理解贝叶斯不确定性估计的行为。

参数设置
观测点数 N
长度尺度 l
信号方差 σ_f
噪声 σ_n

真实函数 $y=\sin(x)+0.5\cos(2x)$ 加上确定性噪声的 N 个观测(LCG seed=42 固定)进行 GP 回归。

计算结果
x*=5 处的预测均值 μ
x*=5 处的预测标准差 σ
全预测点的平均不确定性
对数边际似然 log p(y)
GP 回归的预测均值与95%置信带

灰色虚线=真实函数 $\sin(x)+0.5\cos(2x)$ / 黑色圆点=观测点 / 蓝色实线=预测均值 μ(x) / 蓝色填充=μ ± 1.96σ 的95%置信带

理论与主要公式

高斯过程回归用核函数表示观测点之间的协方差,再对观测数据进行条件化得到预测分布。

RBF 核(信号方差 $\sigma_f$,长度尺度 $l$):

$$k(x, x') = \sigma_f^2 \exp\!\left(-\frac{(x - x')^2}{2 l^2}\right)$$

核矩阵加上噪声方差($\delta_{ij}$ 是克罗内克 δ):

$$K_{ij} = k(x_i, x_j) + \sigma_n^2 \delta_{ij}$$

预测点 $x_\ast$ 处的预测均值和预测方差:

$$\mu(x_\ast) = \mathbf{k}_\ast^\top K^{-1} \mathbf{y}, \qquad \sigma^2(x_\ast) = k(x_\ast, x_\ast) - \mathbf{k}_\ast^\top K^{-1} \mathbf{k}_\ast$$

95% 置信带为 $\mu \pm 1.96\,\sigma$。距观测点越远方差越大,不确定性自动膨胀,这是 GP 的标志性特征。

什么是高斯过程回归模拟器

🙋
我只懂最小二乘回归,「高斯过程回归」到底有什么不一样?
🎓
最大的区别是「预测自带不确定性」。最小二乘只给一条最佳曲线,而 GP 在每个预测点都给出一对「均值+离散度」。上方模拟器里的蓝色实线就是预测均值,淡蓝色带状区域是95%置信带。在观测点(黑色圆点)附近带子很窄,远离时就变宽——这是肉眼可见的不确定性。
🙋
真的耶!没有数据的区间带子膨胀了。这是自动的吗?
🎓
对,没人专门编程让「远离数据时不确定性变大」。GP 的数学本身就告诉你。预测方差 $\sigma^2(x_\ast) = k(x_\ast,x_\ast) - \mathbf{k}_\ast^\top K^{-1} \mathbf{k}_\ast$。远离观测点时 $\mathbf{k}_\ast$ 变小,被减项变小,所以方差变大。这就是「免费获得不确定性」的秘密。
🙋
把「长度尺度」滑块向左拉,曲线就变得弯弯曲曲;向右拉,几乎成了直线。
🎓
这就是 l 的效果。RBF 核 $\exp(-(x-x')^2 / 2l^2)$ 里,l 决定「相距多远的两点仍然相似」。l 小则只有很近的点互相影响,函数就会扭曲振荡。l 大则连远处的点也认为「相似」,结果太平滑而捕捉不到真实变化。实际中通过最大化「对数边际似然」自动选择 l。看着 logML 卡片拖动 l 滑块吧——使 logML 最大的 l 大体就是「最优」。
🙋
原来如此。那增大「噪声 σ_n」会怎样?
🎓
σ_n 越大,GP 越认为「观测不够精确」,所以均值曲线不再严格穿过每个观测点,变得更平滑。反过来如果 σ_n 非常小,就强行通过每个点,容易过拟合。实务里「真实噪声水平」要靠估计才行,通常也是通过最大化对数边际似然来自动调参。GP 厉害的地方在于:l、σ_f、σ_n 这些超参数都能在同一个框架内「从数据中一致地学出来」。

常见问题

有很多选择:Matérn(ν=1/2、3/2、5/2)、有理二次(rational quadratic)、周期核、线性核等。RBF 是无限阶可微的,有时过于平滑;Matérn 3/2 或 5/2 能表达更真实的粗糙度。周期现象(季节变化、振动等)用周期核,多种行为的组合则用核的加法或乘法(kernel composition)。
对超参数 θ = (l, σ_f, σ_n) 用梯度法(如 L-BFGS)最大化 log p(y|X, θ)。这个目标自然平衡「对数据的拟合」与「模型复杂度的惩罚」,相当于自带正则化,能防止过拟合。在实现上,sklearn.gaussian_process、GPy、GPflow 等库会自动处理求导和优化。
当 N 达到几千甚至几万时,O(N³) 计算已不现实,于是用 M≪N 个「诱导点(inducing points)」近似数据。SVGP(Stochastic Variational GP)通过变分推断学习诱导点,并支持小批量训练。还有 FITC、DTC、KISS-GP 等多种近似方法,可把可处理的数据规模扩展到上百万。精度与计算代价的权衡由设计决定。
常用的是 EI(期望改进)、UCB(置信上界)、PI(改进概率)。EI 最大化「相对当前最优的期望改进量」;UCB 评分 μ + κσ,「均值高且不确定性大」的点优先。κ 越大越偏向探索,越小越偏向利用。多目标优化则使用 EHI(期望超体积改进)等专门的采集函数。

实际应用

贝叶斯优化:机器学习的超参数搜索(学习率、层数、正则化系数等)往往单次评估要几小时甚至几天。GP 给出预测均值和不确定性,采集函数决定下一步在哪评估,使得相比随机搜索或网格搜索能以少得多的试验次数找到最佳点。AutoML、SigOpt、Optuna 等工具广泛实现了这种循环。

材料设计与实验规划:探索新材料合成条件(温度、组成、时间)时,每次实验成本极高。基于 GP 的贝叶斯优化能从过去的实验结果中提出「下一步应试的最有希望条件」,显著减少实验次数。已在电池材料、催化剂、合金开发、新药研发中实用化。

仿真的代理模型(surrogate model):与其多次运行重型 CFD 或 FEM 仿真,不如用少量计算结果训练一个 GP 作为代理模型。设计优化、灵敏度分析、不确定性传播分析的计算代价可降低几个数量级。飞机机翼气动设计、汽车碰撞分析的稳健优化等均有应用。

地统计学(Kriging):GP 的地理空间版本「Kriging」自1960年代起就用于矿床评估、土壤污染图、气象数据的空间插值。能从少量测点估计未测点的值及其不确定性,也有助于选择下一个采样位置。其实 GP 在地统计学界很早就以「Kriging」之名为人所知。

常见误解与注意事项

最常见的误解是认为「超参数(l, σ_f, σ_n)可以随便设」。实际上这些值决定了预测质量。在模拟器里把 l 滑块拉到 0.1 和 5.0 两个极端,前者完全过拟合观测噪声,后者则完全捕捉不到真实振动。实务中务必通过最大化对数边际似然自动调参,最起码也要用交叉验证选 l。「目测看着合理的值」非常危险。

其次常见的是把 GP 的预测区间误读为「预测值一定有95%概率落在那里」。这是「在当前模型(核选择+超参数)下的概率」,如果模型与现实不符就毫无意义。例如真实函数是周期的但用了 RBF 核,置信带只能表达「平滑函数下的不确定性」,会忽略结构性偏差。除了带宽,还要单独验证「预测均值与真实函数的偏离程度」。

最后要注意,「增加观测点未必能提升精度」。N 增大时核矩阵条件数会变差,Cholesky 分解容易出现数值不稳定。实现上要在对角线加上微小的 jitter(10⁻⁶ 量级)以稳定计算。计算量也按 O(N³) 增长,所以 N 超过几千就需要考虑稀疏 GP 或诱导点法。本模拟器把 N 上限设为 30,但实用中要时常权衡「增加数据」与「重新审视核选择」哪个更有效。