《高斯过程(Gaussian Process, GP)的预测分布计算过程》
字数 5050 2025-12-15 06:31:47

《高斯过程(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_*\),并给出预测的不确定性(即预测分布)。

关键思想

  1. 将函数 \(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 \]

这反映了预测总不确定性,包括模型不确定性和观测噪声。


六、计算步骤总结

  1. 选择核函数并初始化超参数(如RBF核的 \(\ell\)\(\sigma_f^2\) 和噪声方差 \(\sigma_n^2\))。
  2. 计算协方差矩阵
    • 训练集协方差 \(\mathbf{K}_{XX}\)\(n \times n\))。
    • 带噪声的协方差 \(\mathbf{K}_y = \mathbf{K}_{XX} + \sigma_n^2 \mathbf{I}_n\)
  3. 计算测试点相关向量
    • \(\mathbf{k}_{X*}\)\(n \times 1\)):每个训练点与测试点的协方差。
    • \(k_{**}\):测试点自身的协方差(标量)。
  4. 求解线性系统
    • 计算 \(\mathbf{K}_y^{-1} \mathbf{y}\)(通常通过Cholesky分解高效求解,避免显式求逆)。
  5. 计算预测分布
    • 均值:\(\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\)
  6. 输出结果:预测分布为 \(\mathcal{N}(\mu_{f_*}, \sigma_{f_*}^2)\)(对函数值)或 \(\mathcal{N}(\mu_{y_*}, \sigma_{y_*}^2)\)(对观测值)。

七、关键点解释

  1. 非参数特性:高斯过程不假设参数化函数形式,而是通过核函数定义函数之间的协方差,灵活适应数据。
  2. 不确定性量化:预测方差天然提供置信区间,在测试点远离训练数据时方差增大(体现先验不确定性)。
  3. 计算复杂度:主要瓶颈在于求 \(\mathbf{K}_y^{-1}\)\(O(n^3)\)),适用于中等规模数据(\(n < 10^4\))。对于大规模数据,需采用稀疏近似或随机特征方法。
  4. 核函数选择:协方差函数决定了函数的平滑度、周期等性质,不同核函数适用于不同数据模式。

通过以上步骤,高斯过程不仅给出点预测,还提供完整的概率预测分布,使其在需要不确定性估计的领域(如贝叶斯优化、主动学习)中非常有用。

《高斯过程(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}') \) 是协方差函数(核函数),衡量两个输入点之间的相似性。 基于训练数据,计算函数值在测试点处的后验分布(即预测分布)。 二、高斯过程的先验定义 假设均值函数为零(\( 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 \))。对于大规模数据,需采用稀疏近似或随机特征方法。 核函数选择 :协方差函数决定了函数的平滑度、周期等性质,不同核函数适用于不同数据模式。 通过以上步骤,高斯过程不仅给出点预测,还提供完整的概率预测分布,使其在需要不确定性估计的领域(如贝叶斯优化、主动学习)中非常有用。