高斯过程分类(Gaussian Process Classification)的原理与预测过程
题目描述
高斯过程分类(GPC)是一种基于贝叶斯方法的非参数分类算法,适用于二分类或多分类问题。其核心思想是:假设隐函数(latent function)服从高斯过程先验,通过观测数据对隐函数进行后验推断,再利用softmax或sigmoid函数将隐函数值映射为类别概率。与高斯过程回归(GPR)不同,GPC需处理非高斯的观测似然(如伯努利分布),因此需用近似推断(如拉普拉斯近似或变分推断)求解后验。
解题过程详解
1. 定义隐函数与高斯过程先验
- 设输入数据为 \(X = \{\mathbf{x}_1, \dots, \mathbf{x}_n\}\),二分类标签为 \(\mathbf{y} = \{y_1, \dots, y_n\} \in \{0,1\}\)。
- 引入隐函数 \(f(\mathbf{x})\),假设其服从高斯过程先验:
\[ f(\mathbf{x}) \sim \mathcal{GP}(m(\mathbf{x}), k(\mathbf{x}, \mathbf{x}')) \]
其中 \(m(\mathbf{x})\) 为均值函数(常设为0),\(k(\mathbf{x}, \mathbf{x}')\) 为协方差函数(如径向基函数RBF)。
- 隐函数值 \(\mathbf{f} = [f(\mathbf{x}_1), \dots, f(\mathbf{x}_n)]^T\) 的先验分布为多元高斯分布:
\[ p(\mathbf{f} \mid X) = \mathcal{N}(\mathbf{0}, K) \]
这里 \(K\) 是核矩阵,满足 \(K_{ij} = k(\mathbf{x}_i, \mathbf{x}_j)\)。
2. 构建观测似然模型
- 对于二分类问题,标签 \(y_i\) 由隐函数 \(f(\mathbf{x}_i)\) 通过sigmoid函数(如logistic函数)生成:
\[ p(y_i \mid f_i) = \sigma(y_i f_i) = \frac{1}{1 + e^{-y_i f_i}} \]
注意:这里 \(y_i \in \{-1,1\}\) 或 \(\{0,1\}\) 需调整sigmoid形式,通常使用 \(\sigma(f_i)^{y_i} (1-\sigma(f_i))^{1-y_i}\)。
- 整个数据集的似然为:
\[ p(\mathbf{y} \mid \mathbf{f}) = \prod_{i=1}^n p(y_i \mid f_i) \]
由于似然非高斯,后验 \(p(\mathbf{f} \mid X, \mathbf{y})\) 无法直接解析求解。
3. 后验推断的近似方法(以拉普拉斯近似为例)
- 目标:近似后验 \(p(\mathbf{f} \mid X, \mathbf{y}) \propto p(\mathbf{y} \mid \mathbf{f}) p(\mathbf{f} \mid X)\)。
- 步骤:
a. 找到后验众数 \(\hat{\mathbf{f}}\)(即最大化 \(\log p(\mathbf{f} \mid X, \mathbf{y})\) 的 \(\mathbf{f}\)):
\[ \hat{\mathbf{f}} = \arg\max_{\mathbf{f}} \left[ \log p(\mathbf{y} \mid \mathbf{f}) - \frac{1}{2} \mathbf{f}^T K^{-1} \mathbf{f} \right] \]
使用牛顿迭代法求解,迭代公式为:
\[ \mathbf{f}_{\text{new}} = (K^{-1} + W)^{-1} W \mathbf{z} \]
其中 \(W = -\nabla_{\mathbf{f}} \nabla_{\mathbf{f}} \log p(\mathbf{y} \mid \mathbf{f})\) 为对角阵,\(\mathbf{z} = \mathbf{f} + W^{-1} \nabla_{\mathbf{f}} \log p(\mathbf{y} \mid \mathbf{f})\)。
b. 在 \(\hat{\mathbf{f}}\) 处对后验做二阶泰勒展开,得到高斯近似:
\[ p(\mathbf{f} \mid X, \mathbf{y}) \approx \mathcal{N}(\hat{\mathbf{f}}, (K^{-1} + W)^{-1}) \]
4. 对新样本的预测
- 对于新输入 \(\mathbf{x}_*\),首先计算隐函数后验 \(p(f_* \mid X, \mathbf{y}, \mathbf{x}_*)\)。
联合先验为:
\[ p(\mathbf{f}, f_*) = \mathcal{N}\left( \mathbf{0}, \begin{bmatrix} K & K_* \\ K_*^T & k_{**} \end{bmatrix} \right) \]
其中 \(K_* = [k(\mathbf{x}_*, \mathbf{x}_1), \dots, k(\mathbf{x}_*, \mathbf{x}_n)]\),\(k_{**} = k(\mathbf{x}_*, \mathbf{x}_*)\)。
- 利用高斯条件分布公式,隐函数后验均值和方差为:
\[ \mathbb{E}[f_*] = K_*^T K^{-1} \hat{\mathbf{f}}, \quad \mathbb{V}[f_*] = k_{**} - K_*^T (K^{-1} - (K + W^{-1})^{-1}) K_* \]
- 最终分类概率通过积分计算:
\[ p(y_* = 1 \mid X, \mathbf{y}, \mathbf{x}_*) = \int \sigma(f_*) p(f_* \mid X, \mathbf{y}, \mathbf{x}_*) df_* \]
该积分无闭式解,可通过数值积分(如高斯-埃尔米特积分)或蒙特卡洛采样近似。
5. 多分类扩展
- 对 \(C\) 个类别,为每个类别引入一个隐函数 \(f_c(\mathbf{x})\),隐函数向量 \(\mathbf{f} = [f_1, \dots, f_C]\) 服从联合高斯过程。
- 使用softmax似然: \(p(y_i = c \mid \mathbf{f}_i) = \frac{e^{f_c(\mathbf{x}_i)}}{\sum_{j=1}^C e^{f_j(\mathbf{x}_i)}}\)。
- 后验推断需更复杂的近似(如变分推断),因softmax导致计算复杂度增加。
关键点总结
- GPC通过隐函数的高斯过程先验和非线性似然函数结合,实现概率化分类。
- 拉普拉斯近似将非高斯后验转化为高斯分布,简化预测过程。
- 核函数的选择(如RBF、Matern)影响分类边界的光滑性。