《高斯过程(Gaussian Process, GP)的预测分布计算过程》
我将为你详细讲解高斯过程回归中预测分布的推导与计算过程。高斯过程是一种非参数贝叶斯模型,用于回归和分类任务,其核心思想是直接定义函数空间上的先验分布,并通过观测数据得到后验分布,从而进行预测。
一、问题描述与背景
问题:给定训练数据 \(D = \{ (\mathbf{x}_i, y_i) \}_{i=1}^n\),其中 \(\mathbf{x}_i \in \mathbb{R}^d\) 是输入特征,\(y_i \in \mathbb{R}\) 是连续输出值。假设观测值受到加性高斯噪声的影响:
\[y_i = f(\mathbf{x}_i) + \epsilon_i, \quad \epsilon_i \sim \mathcal{N}(0, \sigma_n^2) \]
目标是:对于一个新的测试点 \(\mathbf{x}_*\),预测其对应的函数值 \(f(\mathbf{x}_*)\) 和观测值 \(y_*\),并给出预测的不确定性(即预测分布)。
关键思想:
- 将函数 \(f\) 视为随机过程,假设其服从高斯过程先验:
\[ f(\mathbf{x}) \sim \mathcal{GP}(m(\mathbf{x}), k(\mathbf{x}, \mathbf{x}')) \]
其中 \(m(\mathbf{x})\) 是均值函数(通常设为0),\(k(\mathbf{x}, \mathbf{x}')\) 是协方差函数(核函数),衡量两个输入点之间的相似性。
2. 基于训练数据,计算函数值在测试点处的后验分布(即预测分布)。
二、高斯过程的先验定义
假设均值函数为零(\(m(\mathbf{x}) = 0\)),这在实际中可以通过数据中心化实现。协方差函数选择例如径向基函数(RBF核):
\[k(\mathbf{x}, \mathbf{x}') = \sigma_f^2 \exp\left( -\frac{1}{2\ell^2} \|\mathbf{x} - \mathbf{x}'\|^2 \right) \]
其中 \(\sigma_f^2\) 是信号方差,\(\ell\) 是长度尺度。这些是超参数,可以通过最大化边际似然来优化。
对于训练输入 \(\mathbf{X} = [\mathbf{x}_1, \dots, \mathbf{x}_n]^T\),函数值向量 \(\mathbf{f} = [f(\mathbf{x}_1), \dots, f(\mathbf{x}_n)]^T\) 的先验分布为:
\[\mathbf{f} \sim \mathcal{N}(\mathbf{0}, \mathbf{K}_{XX}) \]
其中 \(\mathbf{K}_{XX}\) 是 \(n \times n\) 的协方差矩阵,其元素 \([\mathbf{K}_{XX}]_{ij} = k(\mathbf{x}_i, \mathbf{x}_j)\)。
三、引入噪声的观测模型
观测值 \(\mathbf{y} = [y_1, \dots, y_n]^T\) 与 \(\mathbf{f}\) 的关系为:
\[\mathbf{y} = \mathbf{f} + \boldsymbol{\epsilon}, \quad \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \sigma_n^2 \mathbf{I}_n) \]
因此,\(\mathbf{y}\) 的先验分布为:
\[\mathbf{y} \sim \mathcal{N}(\mathbf{0}, \mathbf{K}_{XX} + \sigma_n^2 \mathbf{I}_n) \]
记 \(\mathbf{K}_y = \mathbf{K}_{XX} + \sigma_n^2 \mathbf{I}_n\),这是考虑噪声后的协方差矩阵。
四、预测分布的推导
我们关注测试点 \(\mathbf{x}_*\) 对应的函数值 \(f_* = f(\mathbf{x}_*)\) 和观测值 \(y_*\)。将训练数据和测试点联合起来,其先验分布为:
\[\begin{bmatrix} \mathbf{y} \\ f_* \end{bmatrix} \sim \mathcal{N}\left( \mathbf{0}, \begin{bmatrix} \mathbf{K}_y & \mathbf{k}_{X*} \\ \mathbf{k}_{X*}^T & k_{**} \end{bmatrix} \right) \]
其中:
- \(\mathbf{k}_{X*} = [k(\mathbf{x}_1, \mathbf{x}_*), \dots, k(\mathbf{x}_n, \mathbf{x}_*)]^T\) 是训练点与测试点之间的协方差向量(\(n \times 1\))。
- \(k_{**} = k(\mathbf{x}_*, \mathbf{x}_*)\) 是测试点的自身协方差(标量)。
应用条件高斯分布公式:
对于联合高斯分布
\[\begin{bmatrix} \mathbf{a} \\ \mathbf{b} \end{bmatrix} \sim \mathcal{N}\left( \begin{bmatrix} \boldsymbol{\mu}_a \\ \boldsymbol{\mu}_b \end{bmatrix}, \begin{bmatrix} \mathbf{A} & \mathbf{C} \\ \mathbf{C}^T & \mathbf{B} \end{bmatrix} \right) \]
条件分布 \(\mathbf{b} \mid \mathbf{a}\) 为:
\[\mathbf{b} \mid \mathbf{a} \sim \mathcal{N}\left( \boldsymbol{\mu}_b + \mathbf{C}^T \mathbf{A}^{-1} (\mathbf{a} - \boldsymbol{\mu}_a), \mathbf{B} - \mathbf{C}^T \mathbf{A}^{-1} \mathbf{C} \right) \]
在我们的设定中:
- \(\mathbf{a} = \mathbf{y}\),\(\mathbf{b} = f_*\)
- \(\boldsymbol{\mu}_a = \boldsymbol{\mu}_b = \mathbf{0}\)
- \(\mathbf{A} = \mathbf{K}_y\),\(\mathbf{C} = \mathbf{k}_{X*}\),\(\mathbf{B} = k_{**}\)
代入公式,得到 函数值 \(f_*\) 的后验分布:
\[f_* \mid \mathbf{y}, \mathbf{X}, \mathbf{x}_* \sim \mathcal{N}(\mu_{f_*}, \sigma_{f_*}^2) \]
其中:
- 预测均值:
\[ \mu_{f_*} = \mathbf{k}_{X*}^T \mathbf{K}_y^{-1} \mathbf{y} \]
这是训练观测值的线性组合,权重由协方差结构决定。
- 预测方差:
\[ \sigma_{f_*}^2 = k_{**} - \mathbf{k}_{X*}^T \mathbf{K}_y^{-1} \mathbf{k}_{X*} \]
方差衡量预测的不确定性:第一项 \(k_{**}\) 是先验不确定性,第二项(减去项)表示由于观测数据而减少的不确定性。
五、包含噪声的观测预测分布
在实际预测中,我们通常关心带噪声的观测值 \(y_* = f_* + \epsilon_*\),其中 \(\epsilon_* \sim \mathcal{N}(0, \sigma_n^2)\)。由于 \(f_*\) 和 \(\epsilon_*\) 独立,\(y_*\) 的预测分布为:
\[y_* \mid \mathbf{y}, \mathbf{X}, \mathbf{x}_* \sim \mathcal{N}(\mu_{y_*}, \sigma_{y_*}^2) \]
其中:
- 预测均值:与 \(f_*\) 相同,\(\mu_{y_*} = \mu_{f_*} = \mathbf{k}_{X*}^T \mathbf{K}_y^{-1} \mathbf{y}\)。
- 预测方差:在 \(f_*\) 方差基础上加上噪声方差:
\[ \sigma_{y_*}^2 = \sigma_{f_*}^2 + \sigma_n^2 = k_{**} - \mathbf{k}_{X*}^T \mathbf{K}_y^{-1} \mathbf{k}_{X*} + \sigma_n^2 \]
这反映了预测总不确定性,包括模型不确定性和观测噪声。
六、计算步骤总结
- 选择核函数并初始化超参数(如RBF核的 \(\ell\)、\(\sigma_f^2\) 和噪声方差 \(\sigma_n^2\))。
- 计算协方差矩阵:
- 训练集协方差 \(\mathbf{K}_{XX}\)(\(n \times n\))。
- 带噪声的协方差 \(\mathbf{K}_y = \mathbf{K}_{XX} + \sigma_n^2 \mathbf{I}_n\)。
- 计算测试点相关向量:
- \(\mathbf{k}_{X*}\)(\(n \times 1\)):每个训练点与测试点的协方差。
- \(k_{**}\):测试点自身的协方差(标量)。
- 求解线性系统:
- 计算 \(\mathbf{K}_y^{-1} \mathbf{y}\)(通常通过Cholesky分解高效求解,避免显式求逆)。
- 计算预测分布:
- 均值:\(\mu_{f_*} = \mathbf{k}_{X*}^T (\mathbf{K}_y^{-1} \mathbf{y})\)。
- 函数值方差:\(\sigma_{f_*}^2 = k_{**} - \mathbf{k}_{X*}^T (\mathbf{K}_y^{-1} \mathbf{k}_{X*})\)。
- 观测值方差:\(\sigma_{y_*}^2 = \sigma_{f_*}^2 + \sigma_n^2\)。
- 输出结果:预测分布为 \(\mathcal{N}(\mu_{f_*}, \sigma_{f_*}^2)\)(对函数值)或 \(\mathcal{N}(\mu_{y_*}, \sigma_{y_*}^2)\)(对观测值)。
七、关键点解释
- 非参数特性:高斯过程不假设参数化函数形式,而是通过核函数定义函数之间的协方差,灵活适应数据。
- 不确定性量化:预测方差天然提供置信区间,在测试点远离训练数据时方差增大(体现先验不确定性)。
- 计算复杂度:主要瓶颈在于求 \(\mathbf{K}_y^{-1}\)(\(O(n^3)\)),适用于中等规模数据(\(n < 10^4\))。对于大规模数据,需采用稀疏近似或随机特征方法。
- 核函数选择:协方差函数决定了函数的平滑度、周期等性质,不同核函数适用于不同数据模式。
通过以上步骤,高斯过程不仅给出点预测,还提供完整的概率预测分布,使其在需要不确定性估计的领域(如贝叶斯优化、主动学习)中非常有用。