高斯过程回归(Gaussian Process Regression)的核函数选择与超参数优化策略详解
题目描述
本次讲解高斯过程回归(GPR)中一个关键的实践问题:如何选择合适的核函数(协方差函数) 以及如何对其超参数进行有效优化。高斯过程回归是一种非参数贝叶斯模型,其预测性能很大程度上取决于核函数的选择及其超参数的设定。我们将详细探讨常用核函数的特性、适用场景,并深入讲解基于最大化边际似然(Marginal Likelihood) 的超参数优化原理与步骤。
解题过程
我们将分三步进行:1) 理解核函数的作用与常见类型;2) 掌握超参数优化的目标——边际似然;3) 学习优化边际似然的具体方法。
步骤一:理解核函数在高斯过程回归中的作用与常见类型
在高斯过程回归中,核函数 \(k(\mathbf{x}_i, \mathbf{x}_j)\) 定义了任意两个输入点 \(\mathbf{x}_i\) 和 \(\mathbf{x}_j\) 之间的协方差。它编码了我们对未知函数 \(f(\mathbf{x})\) 行为的先验假设,例如平滑程度、周期性、趋势等。
-
核函数的关键性质:
- 必须是对称的:\(k(\mathbf{x}_i, \mathbf{x}_j) = k(\mathbf{x}_j, \mathbf{x}_i)\)。
- 对于任何点集,由核函数计算的协方差矩阵必须是半正定的,以确保概率分布的合理性。
-
常见核函数类型及其适用场景:
- 平方指数核(Squared Exponential / RBF Kernel):
\[ k_{SE}(\mathbf{x}_i, \mathbf{x}_j) = \sigma_f^2 \exp\left(-\frac{1}{2l^2} \|\mathbf{x}_i - \mathbf{x}_j\|^2\right) \]
- 参数:$\sigma_f^2$ 是信号方差(控制函数输出的幅度),$l$ 是长度尺度(控制函数的平滑程度,$l$越大,函数变化越缓慢)。
- 特性:产生无限次可微的、非常平滑的函数。适用于建模平滑变化的过程,是最常用的核之一。
- 马特恩核(Matérn Kernel):
\[ k_{\text{Matérn}}(\mathbf{x}_i, \mathbf{x}_j) = \sigma_f^2 \frac{2^{1-\nu}}{\Gamma(\nu)} \left(\frac{\sqrt{2\nu}}{l} r\right)^\nu K_\nu \left(\frac{\sqrt{2\nu}}{l} r\right) \]
其中 $ r = \|\mathbf{x}_i - \mathbf{x}_j\| $,$\nu$ 是平滑度参数,$K_\nu$ 是第二类修正贝塞尔函数。
- 常见特例:当 $\nu = 3/2$ 或 $5/2$ 时,表达式可简化。马特恩核产生的函数比RBF核粗糙。例如,$\nu=3/2$ 对应的函数一次可微,适合对光滑性要求稍低的场景(如物理模型)。
- 周期核(Periodic Kernel):
\[ k_{\text{Per}}(\mathbf{x}_i, \mathbf{x}_j) = \sigma_f^2 \exp\left(-\frac{2 \sin^2(\pi \|\mathbf{x}_i - \mathbf{x}_j\| / p)}{l^2}\right) \]
- 参数:$p$ 是周期长度。
- 特性:用于建模具有严格周期性的函数,例如季节性情或天文学数据。
- 线性核(Linear Kernel):
\[ k_{\text{Lin}}(\mathbf{x}_i, \mathbf{x}_j) = \sigma_b^2 + \sigma_f^2 (\mathbf{x}_i - \mathbf{c})^\top (\mathbf{x}_j - \mathbf{c}) \]
- 特性:实际上对应的是贝叶斯线性回归。可以叠加在其他核上以引入偏移或趋势。
- 核函数的组合:
- 核函数可以通过相加或相乘来组合,以构建更复杂的协方差结构。
- 例如:
RBF + Linear可以建模一个具有线性趋势的平滑偏离。Periodic * RBF可以建模一个周期性但每个周期内形状平滑变化的函数。
步骤二:掌握超参数优化的目标——边际似然
高斯过程回归的超参数 \(\theta\) 包括核函数的所有参数(如 \(l, \sigma_f, p\) 等)以及观测噪声的方差 \(\sigma_n^2\)。我们通过最大化边际似然(证据) 来优化这些参数。
- 边际似然的公式:
对于训练数据 \(\mathbf{X} = [\mathbf{x}_1, ..., \mathbf{x}_n]^\top\) 和观测目标 \(\mathbf{y} = [y_1, ..., y_n]^\top\),假设噪声服从独立高斯分布 \(y_i = f(\mathbf{x}_i) + \epsilon_i, \epsilon_i \sim \mathcal{N}(0, \sigma_n^2)\),则观测的边际似然为:
\[ p(\mathbf{y} | \mathbf{X}, \theta) = \int p(\mathbf{y} | \mathbf{f}, \mathbf{X}, \theta) p(\mathbf{f} | \mathbf{X}, \theta) d\mathbf{f} = \mathcal{N}(\mathbf{y} | \mathbf{0}, \mathbf{K}(\mathbf{X}, \mathbf{X}) + \sigma_n^2 \mathbf{I}) \]
其中 \(\mathbf{K}\) 是由核函数计算的 \(n \times n\) 协方差矩阵,其元素 \(K_{ij} = k(\mathbf{x}_i, \mathbf{x}_j)\)。
- 对数边际似然:
为便于计算,我们最大化对数边际似然:
\[ \log p(\mathbf{y} | \mathbf{X}, \theta) = -\frac{1}{2} \mathbf{y}^\top (\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}^\top \mathbf{K}_y^{-1} \mathbf{y}\),其中 \(\mathbf{K}_y = \mathbf{K} + \sigma_n^2 \mathbf{I}\)。该项鼓励模型拟合数据。当预测与数据越一致(在考虑协方差结构下)时,此项的值越大(因为它是负的二次型,拟合好时内积小,负得少)。
- 第二项(复杂度惩罚项):\(-\frac{1}{2} \log |\mathbf{K}_y|\)。该项是模型复杂度的惩罚。\(|\mathbf{K}_y|\) 与协方差矩阵的特征值乘积有关,特征值大(即核函数参数使得函数变化剧烈)会导致行列式大,从而使该项更负,起到惩罚过于复杂模型的作用。
- 第三项:常数,优化时可忽略。
因此,最大化边际似然自动在数据拟合和模型复杂度之间进行权衡,这是一种自动化的奥卡姆剃刀。
步骤三:学习优化对数边际似然的具体方法
我们的目标是找到超参数 \(\theta\) 以最大化 \(\log p(\mathbf{y} | \mathbf{X}, \theta)\)。由于这个函数关于 \(\theta\) 通常是非凸的,我们使用基于梯度的方法。
- 计算对数边际似然关于超参数的梯度:
为了使用梯度下降或共轭梯度法等优化算法,我们需要计算梯度 \(\frac{\partial}{\partial \theta_j} \log p(\mathbf{y} | \mathbf{X}, \theta)\)。经过推导,可得:
\[ \frac{\partial}{\partial \theta_j} \log p(\mathbf{y} | \mathbf{X}, \theta) = \frac{1}{2} \mathbf{y}^\top \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}\) 是协方差矩阵对第 \(j\) 个超参数的导数矩阵。梯度的计算依赖于核函数对参数的解析导数。
-
优化流程:
a. 初始化:为超参数 \(\theta\) 选择合理的初始值。例如,长度尺度 \(l\) 可以初始化为输入特征的平均距离,信号方差 \(\sigma_f^2\) 初始化为目标变量 \(\mathbf{y}\) 的方差,噪声方差 \(\sigma_n^2\) 初始化为一个较小的值(如 \(\sigma_f^2/10\))。
b. 迭代优化:- 在每次迭代中,用当前的 \(\theta\) 计算协方差矩阵 \(\mathbf{K}_y\)。
- 计算 \(\mathbf{K}_y^{-1} \mathbf{y}\) 和对数行列式 \(\log |\mathbf{K}_y|\)(通常通过Cholesky分解 \(\mathbf{K}_y = \mathbf{L}\mathbf{L}^\top\) 稳定地计算,因为 \(\mathbf{K}_y\) 是对称正定的)。
- 计算对数边际似然值及其关于每个超参数的梯度。
- 使用梯度优化器(如共轭梯度法、L-BFGS-B等)更新 \(\theta\),以增大对数边际似然。
c. 收敛:当参数变化或似然值增长小于设定阈值时停止。
-
实际注意事项:
- 数值稳定性:直接计算 \(\mathbf{K}_y^{-1}\) 和 \(|\mathbf{K}_y|\) 可能不稳定。使用Cholesky分解是标准做法。设 \(\mathbf{L} = \text{cholesky}(\mathbf{K}_y)\),则:
- \(\mathbf{K}_y^{-1} \mathbf{y} = \mathbf{L}^{-\top} (\mathbf{L}^{-1} \mathbf{y})\) (通过两次三角矩阵求解)。
- \(\log |\mathbf{K}_y| = 2 \sum_i \log L_{ii}\)。
- 局部最优:对数边际似然可能存在多个局部极大值。通常建议从多个不同的初始点开始优化,选择得到最大边际似然的那组参数。
- 参数约束:超参数通常有约束(如长度尺度、噪声方差必须为正)。在优化时,可以对参数取对数(\(\log \theta\))来确保其在整个实数域优化,并自动满足正约束。
- 数值稳定性:直接计算 \(\mathbf{K}_y^{-1}\) 和 \(|\mathbf{K}_y|\) 可能不稳定。使用Cholesky分解是标准做法。设 \(\mathbf{L} = \text{cholesky}(\mathbf{K}_y)\),则:
-
核函数选择策略:
在实践中,核函数的选择通常基于:- 领域知识:对数据生成过程的理解(例如,是否具有周期性)。
- 可视化探索:绘制数据,观察趋势、周期性和噪声水平。
- 模型比较:可以尝试几个合理的候选核,分别优化其超参数,比较它们在验证集上的性能(如均方误差、负对数似然),或使用贝叶斯模型选择比较边际似然。通常,边际似然本身可以作为模型比较的一个依据(但需注意,边际似然倾向于选择更简单的模型,因为它包含了复杂度惩罚)。
总结
在高斯过程回归中,核函数定义了函数空间的先验特性,而超参数优化通过最大化边际似然,从数据中学习这些特性的具体尺度(如平滑度、周期长度)。这个过程实现了自动的模型复杂度控制,并通过梯度优化高效完成。理解不同核函数的特性并掌握基于边际似然的优化流程,是成功应用高斯过程回归解决实际回归问题的关键。