高斯过程分类(Gaussian Process Classification, GPC)的期望传播(Expectation Propagation, EP)算法原理与计算过程
题目描述
高斯过程分类(GPC)是高斯过程(GP)在分类任务上的扩展。与用于回归的高斯过程回归(GPR)不同,GPC预测的是离散的类别标签,这使得模型变为非高斯的,因为似然函数(例如伯努利似然)不再是高斯的。为了在保持计算可处理性的同时进行近似贝叶斯推断,期望传播(EP)算法是一种常用且高效的近似方法。本题要求详细讲解在高斯过程分类模型中,如何使用期望传播算法来近似计算后验分布,并进行预测。
解题过程
第一步:建立高斯过程分类模型框架
- 潜在函数与先验:对于二分类问题(标签 \(y_i \in \{+1, -1\}\) ),我们引入一个潜在函数 \(f(\mathbf{x})\)。对于一个包含 \(n\) 个样本的数据集 \(D = \{(\mathbf{x}_i, y_i)\}_{i=1}^n\),我们定义潜在函数值的向量 \(\mathbf{f} = [f(\mathbf{x}_1), f(\mathbf{x}_2), ..., f(\mathbf{x}_n)]^T\)。我们在 \(\mathbf{f}\) 上放置一个高斯过程先验:
\[ p(\mathbf{f} | X) = \mathcal{N}(\mathbf{f} | \mathbf{0}, K) \]
其中,$ K $ 是一个 $ n \times n $ 的协方差矩阵,其元素 $ K_{ij} = k(\mathbf{x}_i, \mathbf{x}_j; \theta) $ 由核函数(如RBF核)计算,$ \theta $ 是超参数。均值设为零是常见做法。
- 似然函数:观测到的标签 \(y_i\) 通过潜在函数 \(f_i = f(\mathbf{x}_i)\) 和一个sigmoid函数(如逻辑函数或累积高斯函数)相关联。这里以累积高斯函数(probit似然)为例,因为它与EP结合在数学上更便利:
\[ p(y_i | f_i) = \Phi(y_i f_i) = \int_{-\infty}^{y_i f_i} \mathcal{N}(z | 0, 1) dz \]
其中 $ \Phi(\cdot) $ 是标准高斯分布的累积分布函数。这个似然是**非高斯**的。所有样本的似然是独立的:
\[ p(\mathbf{y} | \mathbf{f}) = \prod_{i=1}^{n} p(y_i | f_i) = \prod_{i=1}^{n} \Phi(y_i f_i) \]
- 后验推断目标:根据贝叶斯定理,潜在函数的后验分布为:
\[ p(\mathbf{f} | X, \mathbf{y}) = \frac{p(\mathbf{y} | \mathbf{f}) p(\mathbf{f} | X)}{p(\mathbf{y} | X)} \]
其中,边缘似然(证据) $ p(\mathbf{y} | X) = \int p(\mathbf{y} | \mathbf{f}) p(\mathbf{f} | X) d\mathbf{f} $。
直接计算这个后验是**难以处理的**,因为先验是高斯的,但似然是非高斯的,导致后验 $ p(\mathbf{f} | X, \mathbf{y}) $ 不再是高斯分布。我们的目标是找到一个高斯分布 $ q(\mathbf{f}) $ 来近似这个真实后验。
第二步:期望传播(EP)算法的核心思想
期望传播是一种确定性近似推断算法。其核心思想是:
- 用一个简单的“指数族”分布(这里是高斯分布) \(q(\mathbf{f})\) 来近似复杂的真实后验 \(p(\mathbf{f} | X, \mathbf{y})\)。
- EP通过迭代地局部近似每个非高斯的似然项 \(t_i(f_i) = p(y_i | f_i)\),来构造全局的高斯近似。
具体步骤如下:
- 因式分解:我们将后验重写为:
\[ p(\mathbf{f} | X, \mathbf{y}) \propto p(\mathbf{f} | X) \prod_{i=1}^{n} t_i(f_i) \]
其中 $ t_i(f_i) = p(y_i | f_i) $ 是**真实似然项**。
- 引入近似项:EP为每个真实似然项 \(t_i(f_i)\) 引入一个近似的“局部因子” \(\tilde{t}_i(f_i)\),这个近似因子必须是指数族分布。对于高斯过程分类,我们选择:
\[ \tilde{t}_i(f_i) = \tilde{Z}_i \cdot \mathcal{N}(f_i | \tilde{\mu}_i, \tilde{\sigma}_i^2) \quad \text{(一元分布)} \]
更准确地,它通常以“非归一化的高斯”形式表示:$ \tilde{t}_i(f_i) \propto \exp(-\frac{1}{2} \tilde{\tau}_i f_i^2 + \tilde{\nu}_i f_i) $,其中 $ \tilde{\tau}_i = 1/\tilde{\sigma}_i^2 $, $ \tilde{\nu}_i = \tilde{\mu}_i / \tilde{\sigma}_i^2 $。参数 $ (\tilde{\nu}_i, \tilde{\tau}_i) $ 是EP需要更新的“局部参数”。
- 构造近似后验:用近似因子 \(\tilde{t}_i(f_i)\) 替换真实因子 \(t_i(f_i)\),得到近似后验 \(q(\mathbf{f})\):
\[ q(\mathbf{f}) \propto p(\mathbf{f} | X) \prod_{i=1}^{n} \tilde{t}_i(f_i) = \mathcal{N}(\mathbf{f} | \mathbf{0}, K) \prod_{i=1}^{n} [\tilde{Z}_i \mathcal{N}(f_i | \tilde{\mu}_i, \tilde{\sigma}_i^2)] \]
由于高斯分布的自共轭性质,这个乘积的结果仍然是一个**高斯分布** $ q(\mathbf{f}) = \mathcal{N}(\mathbf{f} | \mathbf{\mu}, \Sigma) $。
- 全局参数与局部参数的关系:可以证明,近似后验的均值和协方差可以通过以下公式由局部参数计算得到:
\[ \Sigma = (K^{-1} + \tilde{T})^{-1} \]
\[ \mathbf{\mu} = \Sigma \tilde{\mathbf{\nu}} \]
其中,$ \tilde{T} = \text{diag}(\tilde{\tau}_1, ..., \tilde{\tau}_n) $ 是一个对角矩阵,$ \tilde{\mathbf{\nu}} = (\tilde{\nu}_1, ..., \tilde{\nu}_n)^T $。
第三步:期望传播算法的迭代步骤
EP通过循环处理每个数据点 \(i\),更新其对应的局部参数 \((\tilde{\nu}_i, \tilde{\tau}_i)\)。对于每个点 \(i\):
- 计算“剔除”后验(Cavity Distribution):
首先,从当前的全局近似后验 \(q(\mathbf{f})\) 中,移除第 \(i\) 个近似因子 \(\tilde{t}_i(f_i)\) 的贡献,得到一个中间分布,称为“剔除”分布 \(q^{\setminus i}(\mathbf{f})\)。
\[ q^{\setminus i}(\mathbf{f}) \propto \frac{q(\mathbf{f})}{\tilde{t}_i(f_i)} \]
由于都是高斯分布,其边缘分布 $ q^{\setminus i}(f_i) $ 也是高斯的,参数为:
\[ \mu_{-i} = \mathbb{E}_{q^{\setminus i}}[f_i], \quad \sigma_{-i}^2 = \text{Var}_{q^{\setminus i}}[f_i] \]
可以通过公式计算:$ \sigma_{-i}^2 = (\sigma_{ii}^{-1} - \tilde{\tau}_i)^{-1} $ 和 $ \mu_{-i} = \sigma_{-i}^2 (\mu_i / \sigma_{ii} - \tilde{\nu}_i) $,其中 $ \mu_i, \sigma_{ii} $ 是 $ q(\mathbf{f}) $ 的边缘均值和方差。
- 计算“倾斜”后验(Tilted Distribution):
将剔除后验 \(q^{\setminus i}(f_i)\) 与真实的似然项 \(t_i(f_i)\) 结合,形成一个一维的、非高斯的“倾斜”后验:
\[ \hat{p}_i(f_i) \propto q^{\setminus i}(f_i) \cdot t_i(f_i) = q^{\setminus i}(f_i) \cdot \Phi(y_i f_i) \]
- 投影(矩匹配):
这一步是EP的核心。我们寻找一个新的高斯分布 \(\hat{q}_{new}(f_i)\),使其与这个一维的倾斜后验 \(\hat{p}_i(f_i)\) 的前两阶矩(均值和方差)相匹配。
我们需要计算:
\[ Z_i = \mathbb{E}_{q^{\setminus i}}[t_i(f_i)] = \int \Phi(y_i f_i) \mathcal{N}(f_i | \mu_{-i}, \sigma_{-i}^2) df_i \]
\[ \hat{\mu}_i = \mathbb{E}_{\hat{p}_i}[f_i] = \frac{1}{Z_i} \int f_i \Phi(y_i f_i) \mathcal{N}(f_i | \mu_{-i}, \sigma_{-i}^2) df_i \]
\[ \hat{\sigma}_i^2 = \mathbb{E}_{\hat{p}_i}[f_i^2] - (\hat{\mu}_i)^2 \]
对于probit似然 $ \Phi(y_i f_i) $,这些积分可以通过高斯累积分布函数和概率密度函数解析计算(涉及一些标准公式)。
- 更新近似因子参数:
得到了匹配后的高斯分布 \(\hat{q}_{new}(f_i) = \mathcal{N}(f_i | \hat{\mu}_i, \hat{\sigma}_i^2)\)。
现在,我们需要反推出一个新的近似因子 \(\tilde{t}_i^{new}(f_i)\),使得当把它乘回剔除后验 \(q^{\setminus i}(f_i)\) 时,能得到这个匹配后的分布。即:
\[ \hat{q}_{new}(f_i) \propto q^{\setminus i}(f_i) \cdot \tilde{t}_i^{new}(f_i) \]
解出新的局部参数 $ \tilde{\tau}_i^{new} $ 和 $ \tilde{\nu}_i^{new} $:
\[ \tilde{\tau}_i^{new} = (\hat{\sigma}_i^2)^{-1} - (\sigma_{-i}^2)^{-1} \]
\[ \tilde{\nu}_i^{new} = \hat{\mu}_i / \hat{\sigma}_i^2 - \mu_{-i} / \sigma_{-i}^2 \]
同时,更新近似因子的归一化常数:$ \tilde{Z}_i^{new} = Z_i $。
- 更新全局后验:
用新的局部参数 \((\tilde{\nu}_i^{new}, \tilde{\tau}_i^{new})\) 更新全局近似后验 \(q(\mathbf{f})\) 的均值和协方差矩阵 \(\mathbf{\mu}, \Sigma\)。
为了避免在每次更新一个因子后都进行 \(O(n^3)\) 的矩阵求逆,通常采用秩-1更新(Woodbury公式)来高效更新 \(\Sigma\) 和 \(\mathbf{\mu}\),复杂度为 \(O(n^2)\)。
第四步:迭代收敛与预测
-
迭代:对数据点 \(i = 1, ..., n\) 依次执行上述步骤(可以随机顺序),称为一次“扫掠”(sweep)。重复多次扫掠,直到所有局部参数 \((\tilde{\nu}_i, \tilde{\tau}_i)\) 不再发生显著变化,算法收敛。
-
边缘似然近似:算法收敛后,我们可以计算对数边缘似然(证据)的EP近似,用于超参数 \(\theta\) 优化(如类型II最大似然估计):
\[ \log p(\mathbf{y} | X) \approx \log Z_{EP} = \text{一个复杂的表达式,涉及到} \mathbf{\mu}, \Sigma, \tilde{\mathbf{\nu}}, \tilde{T}, \text{以及} \tilde{Z}_i。 \]
这个表达式是解析可求的,可以通过梯度下降优化超参数 $ \theta $。
- 预测:对于一个新的测试点 \(\mathbf{x}_*\):
- 首先计算潜在函数 \(f_*\) 和 \(\mathbf{f}\) 的联合先验分布。
- 然后利用近似后验 \(q(\mathbf{f})\) 作为真实后验的替代,计算预测分布 \(q(f_*)\)。
- 最终,通过对潜在函数进行积分,得到预测类别概率:
\[ \pi_* = p(y_* = +1 | X, \mathbf{y}, \mathbf{x}_*) = \int \Phi(f_*) q(f_*) df_* = \Phi\left( \frac{\mathbf{k}_*^T (K+\tilde{T}^{-1})^{-1} \tilde{\mathbf{\nu}}}{\sqrt{1 + k_{**} - \mathbf{k}_*^T (K+\tilde{T}^{-1})^{-1} \mathbf{k}_*}} \right) \]
其中,$ \mathbf{k}_* = [k(\mathbf{x}_1, \mathbf{x}_*), ..., k(\mathbf{x}_n, \mathbf{x}_*)]^T $, $ k_{**} = k(\mathbf{x}_*, \mathbf{x}_*) $。
总结:
期望传播算法通过迭代地进行“计算剔除后验 -> 与真实似然结合形成倾斜后验 -> 矩匹配投影为高斯 -> 反推并更新近似因子”这一核心循环,巧妙地将非高斯的分类似然信息吸收到一系列局部高斯近似因子中,最终组合成一个全局的高斯近似后验。这使得复杂的高斯过程分类模型能够进行高效且相对精确的贝叶斯推断和预测。