基于高斯过程的贝叶斯优化(Bayesian Optimization with Gaussian Process)的原理与黑箱函数最优解搜索过程
题目描述
假设我们面对一个黑箱函数 f(x),其特点是:1) 计算代价高昂(例如,一次评估需要运行一次复杂的物理仿真或训练一个大型模型);2) 没有已知的解析表达式;3) 其导数信息无法获取或难以计算。我们的目标是:用尽可能少的评估次数,找到使得 f(x) 取得最大值(或最小值)的输入点 x*。
这是一个典型的全局优化问题。传统的网格搜索、随机搜索效率低下,而梯度类方法无法使用。贝叶斯优化(Bayesian Optimization, BO)正是为解决此类问题而设计的高效框架,其核心是使用一个概率代理模型(通常为高斯过程,Gaussian Process, GP)来模拟未知的黑箱函数,并基于该模型的预测,利用一个采集函数(Acquisition Function)智能地选择下一个最有潜力带来收益的评估点,从而在探索(exploration,搜索未充分探索的区域)和利用(exploitation,在已知较优区域附近搜索)之间取得平衡。
本题目将详细讲解基于高斯过程的贝叶斯优化的完整原理与搜索过程。
解题过程(算法原理与步骤)
第一步:问题形式化与贝叶斯优化框架概览
我们形式化问题如下:
- 目标:找到 \(x^* = \arg\max_{x \in \mathcal{X}} f(x)\),其中 \(\mathcal{X}\) 是输入空间(通常是连续有界域)。
- 约束:总评估预算(次数)
T有限。
贝叶斯优化的核心是一个迭代循环,包含两个核心组件:
- 概率代理模型(Probabilistic Surrogate Model):基于当前已观测的数据集 \(\mathcal{D}_{1:t} = \{(x_i, y_i)\}_{i=1}^t\)(其中 \(y_i = f(x_i) + \epsilon\),常假设观测噪声 \(\epsilon \sim \mathcal{N}(0, \sigma_n^2)\)),对未知函数 \(f\) 建立一个后验概率分布。高斯过程因其灵活的非参数特性和能够提供预测不确定性(方差)的能力,成为最常用的选择。
- 采集函数(Acquisition Function):基于代理模型的后验分布,构造一个评估起来代价低廉的函数 \(\alpha(x; \mathcal{D}_{1:t})\),它量化了在点 \(x\) 处进行下一次评估的“期望效用”或“潜在收益”。优化采集函数来选取下一个评估点 \(x_{t+1} = \arg\max_{x \in \mathcal{X}} \alpha(x; \mathcal{D}_{1:t})\)。
算法基本流程:
- 初始化:随机选择或基于先验选择少量初始点,评估
f,构建初始数据集 \(\mathcal{D}\)。 - 循环 For t = 1, 2, ..., T-1:
a. 基于当前数据集 \(\mathcal{D}_{1:t}\),拟合高斯过程代理模型(更新其后验分布)。
b. 根据高斯过程的后验,计算采集函数 \(\alpha(x)\)。
c. 优化采集函数,找到使其最大的点:\(x_{t+1} = \arg\max_{x \in \mathcal{X}} \alpha(x)\)。这个优化问题本身通常较简单,可以使用标准优化方法(如L-BFGS)或网格/随机搜索。
d. 在 \(x_{t+1}\) 处评估目标函数,获得观测值 \(y_{t+1} = f(x_{t+1}) + \epsilon\)。
e. 更新数据集:\(\mathcal{D}_{1:t+1} = \mathcal{D}_{1:t} \cup \{(x_{t+1}, y_{t+1})\}\)。 - 循环结束后,从所有已评估点中选择使得
f(x)最优的点作为最终解 \(x^*\)。
下面,我们深入讲解两个核心组件。
第二步:高斯过程(GP)作为代理模型
高斯过程为函数 f 定义了一个先验分布,它由均值函数 \(m(x)\) 和协方差函数(核函数) \(k(x, x’)\) 完全指定:
\[f(x) \sim \mathcal{GP}(m(x), k(x, x’)) \]
通常假设先验均值 \(m(x) = 0\)(数据可以中心化处理)。核函数的选择至关重要,它编码了关于函数平滑度、周期性等特性的先验信念。最常用的是平方指数核(径向基函数核,RBF):
\[k(x, x’) = \sigma_f^2 \exp\left(-\frac{1}{2l^2} \|x - x’\|^2\right) \]
其中 \(\sigma_f^2\) 是信号方差,控制函数的幅度;\(l\) 是长度尺度,控制函数的平滑程度。
给定数据集 \(\mathcal{D}_{1:t}\),包含输入矩阵 \(X\) 和观测向量 \(y\)。在存在高斯观测噪声 \(\epsilon \sim \mathcal{N}(0, \sigma_n^2)\) 的假设下,函数值 \(f\) 和观测值 \(y\) 的联合分布仍然是高斯的。高斯过程的后验推断可以给出:
- 在新点 \(x_*\) 处的预测均值 \(\mu_t(x_*)\):这是对 \(f(x_*)\) 的最佳估计。
- 预测方差 \(\sigma_t^2(x_*)\):这是对估计不确定性的度量。
其解析表达式为:
\[\mu_t(x_*) = k_*^T (K + \sigma_n^2 I)^{-1} y \]
\[ \sigma_t^2(x_*) = k(x_*, x_*) - k_*^T (K + \sigma_n^2 I)^{-1} k_* \]
其中:
- \(K\) 是 \(t \times t\) 的矩阵,其元素 \(K_{ij} = k(x_i, x_j)\)。
- \(k_*\) 是 \(t \times 1\) 的向量,其元素 \([k_*]_i = k(x_i, x_*)\)。
- \(I\) 是单位矩阵。
核函数的超参数(如 \(\sigma_f, l, \sigma_n\))通常通过最大化边际似然 \(p(y|X)\) 来获得。这一步在每次迭代中更新GP模型时进行。
第三步:采集函数的设计与优化
采集函数利用GP后验的预测分布(\(\mu_t(x)\) 和 \(\sigma_t(x)\))来平衡探索和利用。以下是三种最经典的采集函数:
- 改进概率(Probability of Improvement, PI):
\[ \alpha_{PI}(x) = \Phi\left(\frac{\mu_t(x) - f(x^+) - \xi}{\sigma_t(x)}\right) \]
其中 $f(x^+) = \max_{i \le t} f(x_i)$ 是当前观测到的最佳函数值,$\Phi(\cdot)$ 是标准正态分布的累积分布函数(CDF)。$\xi \ge 0$ 是一个小的权衡参数,用于鼓励探索。PI衡量了在点 `x` 的函数值超过当前最优值 $f(x^+)$ 的概率。其缺点是容易过度利用。
- 期望改进(Expected Improvement, EI):
\[ \alpha_{EI}(x) = \begin{cases} (\mu_t(x) - f(x^+) - \xi) \Phi(Z) + \sigma_t(x) \phi(Z), & \text{if } \sigma_t(x) > 0 \\ 0, & \text{if } \sigma_t(x) = 0 \end{cases} \]
其中 $Z = \frac{\mu_t(x) - f(x^+) - \xi}{\sigma_t(x)}$,$\phi(\cdot)$ 是标准正态分布的概率密度函数(PDF)。EI不仅考虑超过当前最优值的概率(PI),还考虑了**超过的幅度**,是PI的改进版,也是实践中最常用的采集函数之一。
- 上置信界(Upper Confidence Bound, UCB / GP-UCB):
\[ \alpha_{UCB}(x) = \mu_t(x) + \beta_t \sigma_t(x) \]
其中 $\beta_t$ 是一个随时间递增的权衡参数(例如 $\beta_t \propto \sqrt{\log t}$)。UCB的形式非常直观:第一项 $\mu_t(x)$ 代表利用(在预测值高的地方搜索),第二项 $\beta_t \sigma_t(x)$ 代表探索(在不确定性高的地方搜索)。参数 $\beta_t$ 控制着平衡的强度。
采集函数的优化:得到 \(\alpha(x)\) 的表达式后,我们需要在输入空间 \(\mathcal{X}\) 上寻找其最大值点 \(x_{t+1}\)。由于 \(\alpha(x)\) 的计算通常比原始目标函数 f(x) 快得多,且通常是平滑的(因为GP的均值和方差函数平滑),我们可以使用高效的基于梯度的优化器(如L-BFGS)进行多起点优化,或者对于低维问题使用密集网格搜索,以确保找到全局最优或高质量的局部最优。
第四步:算法迭代与收敛性分析
算法按照第一步描述的框架迭代运行。每一次迭代,GP模型基于新增的数据点更新,对目标函数的认知(后验分布)变得更加精确。采集函数则根据这个更新后的认知,指导搜索方向。
从理论上讲,基于GP-UCB的贝叶斯优化在一定的正则性条件下,可以证明其累积遗憾(定义为 \(\sum_{t=1}^T [f(x^*) - f(x_t)]\))具有亚线性上界,这意味着随着评估次数 T 的增加,平均遗憾趋于零,算法最终能找到全局最优解。
在实践中,当达到预设的评估预算 T 或采集函数的最大值低于某个阈值时,算法终止。最终的最优点 \(x^*\) 从所有已评估点中选取。
总结
基于高斯过程的贝叶斯优化是一个强大的黑箱全局优化框架。它将优化问题转化为一个序列决策问题:先利用高斯过程建立目标函数的概率模型(提供预测和不确定性估计),再通过优化采集函数(如EI或UCB)来智能地选择下一个评估点,从而高效地引导搜索方向。其核心优势在于能够用极少的昂贵评估次数逼近全局最优解,特别适用于超参数调优、实验设计、机器人控制等场景。理解高斯过程的后验推断和不同采集函数的权衡机制,是掌握该方法的关键。