许多机器学习模型,例如线性回归或标准神经网络,设定一个具有固定参数集(权重、偏置)的模型结构。贝叶斯方法通常会对这些参数设置先验分布。例如,在贝叶斯线性回归中,一个常见假设是 $y = \mathbf{w}^T \mathbf{x} + \epsilon$,并对权重向量 $\mathbf{w}$ 设置高斯先验。模型的不确定性体现在这些参数的取值上。高斯过程(GP)提供了一个不同的视角。它不将先验分布定义在特定函数形式的参数上,GP 允许我们直接在函数本身上定义先验分布。思考一下:如果我们能将生成数据的底层函数 $f(x)$ 建模为从某个分布中提取的随机变量,那会怎样?这正是 GP 所实现的功能。从有限维到无限维您对多元高斯分布应该很熟悉,它描述了有限维向量 $\mathbf{f} = [f_1, f_2, ..., f_n]^T$ 的概率分布。一个多元高斯分布由一个均值向量 $\boldsymbol{\mu}$ 和一个协方差矩阵 $\Sigma$ 来确定: $$ \mathbf{f} \sim \mathcal{N}(\boldsymbol{\mu}, \Sigma) $$ 协方差矩阵 $\Sigma$,其中 $\Sigma_{ij} = \text{Cov}(f_i, f_j)$,反映了向量 $\mathbf{f}$ 不同元素之间的关联。现在,设想我们想定义一个关于函数 $f(x)$ 的分布,其中 $x$ 可以是某个输入域(可能是连续且无限的)中的任意一点。一个函数可以被视为一个无限长的向量,每个元素对应于函数在特定输入 $x$ 处的值 $f(x)$。我们如何将多元高斯的思想扩展到这种无限维度的情形呢?这便引出了高斯过程的定义。严谨定义高斯过程被严谨地定义为一组随机变量的集合,其任意有限子集都服从联合高斯分布。令 $f(x)$ 表示随机函数在输入 $x$ 处的值。关于 $f(x)$ 的高斯过程先验由两个函数指定:均值函数 $m(x)$: 此函数定义了函数在任意输入 $x$ 处的期望值。 $$ m(x) = \mathbb{E}[f(x)] $$协方差函数(或核函数) $k(x, x')$: 此函数定义了函数在两个不同输入点 $x$ 和 $x'$ 处的值之间的协方差。 $$ k(x, x') = \text{Cov}(f(x), f(x')) = \mathbb{E}[(f(x) - m(x))(f(x') - m(x'))] $$我们将从 GP 中提取的函数 $f$ 表示为: $$ f(x) \sim \mathcal{GP}(m(x), k(x, x')) $$这个定义的核心含义是:如果我们选择任意有限的输入点集 $\mathbf{x} = [x_1, x_2, ..., x_n]^T$,那么对应的函数值向量 $\mathbf{f} = [f(x_1), f(x_2), ..., f(x_n)]^T$ 将服从多元高斯分布: $$ \mathbf{f} \sim \mathcal{N}(\boldsymbol{\mu}, K) $$ 其中:均值向量 $\boldsymbol{\mu}$ 的元素为 $\mu_i = m(x_i)$。协方差矩阵 $K$(常被称为格拉姆矩阵)的元素为 $K_{ij} = k(x_i, x_j)$。均值函数与协方差函数的功用均值函数 $m(x)$ 反映了我们在观测任何数据之前,对函数平均形态的先验认知。实践中,通常假设均值函数为零,即 $m(x) = 0$,尤其是在数据标准化之后。这简化了计算,并使得重点落在协方差函数上,由其来体现函数的结构。协方差函数 $k(x, x')$ 是其中的关键所在。它定义了从 GP 先验中提取的函数的特性。它规定了在不同输入点上,函数值预期的相似程度。如果 $x$ 和 $x'$ 依据核函数中隐含的距离度量较为接近,那么 $k(x, x')$ 通常会较大,这表明 $f(x)$ 和 $f(x')$ 高度相关(相似)。如果 $x$ 和 $x'$ 相距较远,那么 $k(x, x')$ 会较小,这表明相关性较低。核函数的选择蕴含着我们对函数属性的假设,例如平滑性、周期性或平稳性。我们将在下一节详细阐述不同的核函数。可视化高斯过程先验中的函数为了直观感受这种“函数分布”是怎样的,我们可以从高斯过程先验中抽取函数样本。我们通过以下步骤进行:选择一组输入点 $x_1, ..., x_n$。定义一个均值函数 $m(x)$(例如 $m(x)=0$)和一个协方差函数 $k(x, x')$(例如平方指数核)。计算这些点的均值向量 $\boldsymbol{\mu}$ 和协方差矩阵 $K$。从多元高斯分布 $\mathcal{N}(\boldsymbol{\mu}, K)$ 中抽取样本。将这些样本绘制为函数(连接点 $(x_i, f(x_i))$)。{ "data": [ { "x": [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5], "y": [0.67, 0.88, 0.62, -0.15, -0.88, -1.0, -0.82, -0.45, 0.18, 0.85, 1.21], "mode": "lines", "line": {"color": "#74c0fc"}, "name": "样本 1" }, { "x": [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5], "y": [-0.41, -0.95, -1.35, -1.41, -0.95, 0.05, 0.88, 1.12, 0.95, 0.67, 0.45], "mode": "lines", "line": {"color": "#f783ac"}, "name": "样本 2" }, { "x": [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5], "y": [1.52, 1.05, 0.15, -0.75, -1.21, -1.05, -0.55, 0.12, 0.75, 1.10, 1.05], "mode": "lines", "line": {"color": "#69db7c"}, "name": "样本 3" } ], "layout": { "title": "高斯过程先验中的样本函数(零均值,RBF核)", "xaxis": {"title": "输入 x"}, "yaxis": {"title": "函数值 f(x)", "range": [-3, 3]}, "showlegend": false, "template": "plotly_white" } }每一条线都代表从指定高斯过程先验分布中抽取的一个函数。请注意这些函数如何显示出平滑性,这种特性是由所选的 RBF 核函数所体现的。本质上,GP 定义了无限维函数空间上的概率分布。这个先验包含了我们在看到任何数据点之前对函数的认知。当我们将这个先验与观测数据结合时(使用贝叶斯定理,正如我们将在 GP 回归中看到的那样),我们获得一个后验分布,它也是一个高斯过程,但它已根据数据信息进行了更新。这个后验 GP 使我们能够对新点的函数值进行预测,并提供不确定性估计。