高斯过程(Gaussian Process, GP)的边际似然优化与超参数学习过程
题目描述
高斯过程是一种用于回归和非参数概率建模的机器学习方法。它通过定义一个函数上的先验分布,并利用观测数据更新为后验分布来进行预测。在实际应用中,高斯过程的性能高度依赖于其协方差函数(也称核函数)中的超参数(如长度尺度、方差等)。本题目要求详细讲解如何通过最大化边际似然(Marginal Likelihood)来优化这些超参数,并解释其数学推导、梯度计算以及优化过程。
解题过程
1. 高斯过程的基本设定
高斯过程定义为函数的分布,其任何有限个函数值的集合服从多元高斯分布。形式上,高斯过程由均值函数 \(m(\mathbf{x})\) 和协方差函数 \(k(\mathbf{x}, \mathbf{x}')\) 完全描述:
\[f(\mathbf{x}) \sim \mathcal{GP}(m(\mathbf{x}), k(\mathbf{x}, \mathbf{x}')) \]
在回归任务中,我们有训练数据集 \(\mathcal{D} = \{(\mathbf{x}_i, y_i)\}_{i=1}^n\),其中观测值 \(y_i = f(\mathbf{x}_i) + \epsilon_i\),噪声 \(\epsilon_i \sim \mathcal{N}(0, \sigma_n^2)\) 独立同分布。记输入矩阵 \(\mathbf{X} = [\mathbf{x}_1, \dots, \mathbf{x}_n]^T\),输出向量 \(\mathbf{y} = [y_1, \dots, y_n]^T\)。则观测值 \(\mathbf{y}\) 的先验分布为:
\[\mathbf{y} \sim \mathcal{N}(\mathbf{0}, \mathbf{K} + \sigma_n^2 \mathbf{I}) \]
其中 \(\mathbf{K}\) 是 \(n \times n\) 的协方差矩阵,其元素 \(K_{ij} = k(\mathbf{x}_i, \mathbf{x}_j)\),\(\mathbf{I}\) 是单位矩阵。
2. 边际似然及其对数形式
边际似然是在给定超参数 \(\boldsymbol{\theta}\)(包括核参数和噪声方差)下,观测数据 \(\mathbf{y}\) 的概率。它通过积分掉隐函数 \(\mathbf{f}\) 得到:
\[p(\mathbf{y} \mid \mathbf{X}, \boldsymbol{\theta}) = \int p(\mathbf{y} \mid \mathbf{f}, \boldsymbol{\theta}) p(\mathbf{f} \mid \mathbf{X}, \boldsymbol{\theta}) d\mathbf{f} \]
由于 \(p(\mathbf{y} \mid \mathbf{f})\) 和 \(p(\mathbf{f} \mid \mathbf{X})\) 都是高斯分布,其卷积仍为高斯分布。因此,边际似然是一个多元高斯分布的对数似然:
\[\log p(\mathbf{y} \mid \mathbf{X}, \boldsymbol{\theta}) = -\frac{1}{2} \mathbf{y}^T (\mathbf{K} + \sigma_n^2 \mathbf{I})^{-1} \mathbf{y} - \frac{1}{2} \log |\mathbf{K} + \sigma_n^2 \mathbf{I}| - \frac{n}{2} \log 2\pi \]
这个公式包含三项:
- 数据拟合项:\(-\frac{1}{2} \mathbf{y}^T \mathbf{K}_y^{-1} \mathbf{y}\)(其中 \(\mathbf{K}_y = \mathbf{K} + \sigma_n^2 \mathbf{I}\)),衡量模型对数据的拟合程度。
- 复杂度惩罚项:\(-\frac{1}{2} \log |\mathbf{K}_y|\),惩罚模型复杂度,避免过拟合。
- 常数项:\(-\frac{n}{2} \log 2\pi\)。
3. 边际似然对超参数的梯度
为了最大化边际似然,我们通常使用梯度优化方法(如共轭梯度法、L-BFGS)。需要计算对数边际似然对每个超参数 \(\theta_j\) 的偏导数。利用矩阵求导技巧,可得:
\[\frac{\partial}{\partial \theta_j} \log p(\mathbf{y} \mid \mathbf{X}, \boldsymbol{\theta}) = \frac{1}{2} \mathbf{y}^T \mathbf{K}_y^{-1} \frac{\partial \mathbf{K}_y}{\partial \theta_j} \mathbf{K}_y^{-1} \mathbf{y} - \frac{1}{2} \text{tr} \left( \mathbf{K}_y^{-1} \frac{\partial \mathbf{K}_y}{\partial \theta_j} \right) \]
这里 \(\frac{\partial \mathbf{K}_y}{\partial \theta_j}\) 是 \(\mathbf{K}_y\) 对超参数 \(\theta_j\) 的导数矩阵。推导时使用了恒等式 \(\frac{\partial \log |\mathbf{A}|}{\partial \theta} = \text{tr} \left( \mathbf{A}^{-1} \frac{\partial \mathbf{A}}{\partial \theta} \right)\) 和 \(\frac{\partial \mathbf{A}^{-1}}{\partial \theta} = -\mathbf{A}^{-1} \frac{\partial \mathbf{A}}{\partial \theta} \mathbf{A}^{-1}\)。
4. 优化过程的计算细节
优化通常按以下步骤迭代进行:
- 步骤1:初始化超参数 \(\boldsymbol{\theta}^{(0)}\)。例如,对于平方指数核 \(k(\mathbf{x}, \mathbf{x}') = \sigma_f^2 \exp\left(-\frac{\|\mathbf{x} - \mathbf{x}'\|^2}{2l^2}\right) + \sigma_n^2 \delta_{ij}\),初始化长度尺度 \(l\)、信号方差 \(\sigma_f^2\) 和噪声方差 \(\sigma_n^2\)。
- 步骤2:计算协方差矩阵 \(\mathbf{K}_y\) 及其对每个超参数的导数矩阵 \(\frac{\partial \mathbf{K}_y}{\partial \theta_j}\)。
- 步骤3:求解线性系统 \(\mathbf{K}_y^{-1} \mathbf{y}\) 和计算迹 \(\text{tr}(\mathbf{K}_y^{-1} \frac{\partial \mathbf{K}_y}{\partial \theta_j})\)。实践中,通过Cholesky分解 \(\mathbf{K}_y = \mathbf{L} \mathbf{L}^T\) 来稳定求解,其中 \(\mathbf{L}\) 是下三角矩阵。然后,\(\mathbf{K}_y^{-1} \mathbf{y}\) 可通过两次三角方程求解得到,迹可通过 \(\sum_i (\mathbf{L}^{-1} (\frac{\partial \mathbf{K}_y}{\partial \theta_j}) \mathbf{L}^{-T})_{ii}\) 高效计算。
- 步骤4:计算对数边际似然及其梯度,使用上述公式。
- 步骤5:使用梯度优化器更新超参数 \(\boldsymbol{\theta}\),直至收敛(梯度足够小或达到最大迭代次数)。
5. 超参数优化的直观解释
边际似然最大化自动在数据拟合和模型复杂度之间进行权衡:
- 若长度尺度 \(l\) 太小,协方差矩阵趋于对角,拟合项很小,但 \(\log |\mathbf{K}_y|\) 很大(惩罚大),导致边际似然降低。
- 若长度尺度 \(l\) 太大,函数过于平滑,可能欠拟合,拟合项增大,边际似然也会降低。
- 噪声方差 \(\sigma_n^2\) 控制了数据中的噪声容忍度;过小会导致过拟合,过大会使模型忽略数据。
6. 扩展与注意点
- 对于大规模数据,直接计算 \(\mathbf{K}_y^{-1}\) 的 \(O(n^3)\) 复杂度较高,可采用近似方法(如随机傅里叶特征、诱导点法)。
- 多起始点优化可避免陷入局部最优。
- 超参数优化后,后验预测分布可用来对新点 \(\mathbf{x}_*\) 做预测。