基于高斯过程的贝叶斯优化算法进阶题
题目描述
考虑一个昂贵的黑箱函数优化问题。目标是最小化一个计算代价高昂的未知函数 \(f(x)\),其中 \(x \in \mathbb{R}^n\),且 \(n=2\)。函数的表达式未知,但给定任意输入 \(x\),我们可以通过耗时计算得到对应的输出 \(f(x)\)(可能带有观测噪声)。我们被允许对函数进行有限次评估(例如 20 次),目标是利用这些有限次评估尽可能接近函数的最小值。要求使用基于高斯过程回归的贝叶斯优化方法,其中包含以下关键组成部分:
- 使用平方指数核函数(也称径向基函数核)作为高斯过程先验的协方差函数。
- 采用期望提升(Expected Improvement, EI)作为采集函数来决定下一个采样点。
- 初始设计使用拉丁超立方采样生成 5 个初始点。
- 假设观测带有高斯噪声,噪声方差已知为 \(\sigma_n^2 = 0.01\)。
具体地,假设真实的未知函数为 \(f(x) = (x_1 - 1)^2 + (x_2 + 2)^4 - 5\),但优化算法并不知道这个具体形式。搜索空间为 \(x_1, x_2 \in [-3, 3]\)。请详细说明如何通过贝叶斯优化逐步寻找近似最小值点,包括高斯过程模型的构建、采集函数的计算与优化、迭代更新策略,并展示典型迭代步骤中的关键计算。
解题过程循序渐进讲解
1. 问题理解与贝叶斯优化框架
这是一个黑箱全局优化问题,特点在于:
- 目标函数 \(f(x)\) 没有显式表达式,评估代价高。
- 我们只能通过有限次采样来推测最小值的位置。
- 贝叶斯优化的核心思想是:用高斯过程(Gaussian Process, GP)作为未知函数的概率代理模型,基于已有观测数据建立后验分布;然后定义一个采集函数(acquisition function),它衡量每个候选点进行采样的潜在收益(比如期望提升);在每一步,最大化采集函数得到下一个采样点,进行评估并更新高斯过程模型,如此迭代。
2. 初始设计
由于没有任何先验知识,我们先在定义域内均匀地选取一些点来初步探索函数。这里采用拉丁超立方采样在二维空间 \([-3,3]^2\) 中生成 5 个点。拉丁超立方采样确保每个维度的值域被均匀划分,且投影到每一维时样本不重叠,从而空间填充性好。
例如,初始点可能为:
\[X_{\text{init}} = \begin{bmatrix} -2.1 & 1.3 \\ 0.5 & -2.8 \\ 2.7 & 0.1 \\ -1.2 & 2.5 \\ 1.8 & -1.9 \end{bmatrix} \]
对每个点 \(x^{(i)}\),我们计算(模拟真实评估)得到对应的观测值 \(y^{(i)} = f(x^{(i)}) + \epsilon\),其中 \(\epsilon \sim \mathcal{N}(0, \sigma_n^2)\),\(\sigma_n^2 = 0.01\)。记观测数据集为 \(D_{t} = \{(x^{(i)}, y^{(i)})\}_{i=1}^{t}\),初始时 \(t=5\)。
3. 高斯过程回归模型
高斯过程定义为随机变量的集合,其中任何有限个变量服从联合高斯分布。它由均值函数 \(m(x)\) 和协方差函数(核函数) \(k(x, x')\) 完全描述。我们通常假设先验均值函数为零(实际操作中可减去样本均值)。
- 平方指数核函数:
\[ k(x, x') = \sigma_f^2 \exp\left( -\frac{1}{2} \sum_{j=1}^2 \frac{(x_j - x'_j)^2}{l_j^2} \right) \]
其中 \(\sigma_f^2\) 是信号方差,控制函数的整体幅度;\(l_1, l_2\) 是各维度的长度尺度,控制函数平滑程度。这些是超参数,可通过最大化边缘似然从初始数据中估计。
- 考虑加性高斯观测噪声,则带噪声的协方差函数为:
\[ k_{\text{noise}}(x, x') = k(x, x') + \sigma_n^2 \delta(x, x') \]
其中 \(\delta\) 是 Dirac delta 函数(在离散数据中即单位矩阵)。
给定数据集 \(D_t\),记输入矩阵 \(X_t\)(每行一个点),输出向量 \(y_t\)。在测试点 \(x_*\),高斯过程后验预测分布为高斯分布,其后验均值和方差为:
\[\mu_t(x_*) = k_*^T (K + \sigma_n^2 I)^{-1} y_t \]
\[\sigma_t^2(x_*) = k(x_*, x_*) - k_*^T (K + \sigma_n^2 I)^{-1} k_* \]
其中 \(K_{ij} = k(x^{(i)}, x^{(j)})\),\(k_*\) 是 \(k(x_*, x^{(i)})\) 的向量,\(I\) 是单位矩阵。
这些公式的含义是:基于已有观测,我们对未知点的函数值有一个概率预测(均值为预测值,方差表示不确定性)。
4. 采集函数:期望提升(Expected Improvement, EI)
我们已有目前观测到的最佳函数值(最小值)记为 \(f_{\text{best}} = \min \{ y^{(1)}, \dots, y^{(t)} \}\)。在候选点 \(x\),定义提升量 \(I(x) = \max(0, f_{\text{best}} - f(x))\)。但由于 \(f(x)\) 未知,我们将其视为随机变量,服从高斯过程后验分布 \(\mathcal{N}(\mu_t(x), \sigma_t^2(x))\)。则期望提升定义为:
\[\text{EI}(x) = \mathbb{E}[I(x)] = \begin{cases} (f_{\text{best}} - \mu_t(x)) \Phi(Z) + \sigma_t(x) \phi(Z), & \sigma_t(x) > 0 \\ 0, & \sigma_t(x) = 0 \end{cases} \]
其中 \(Z = \frac{f_{\text{best}} - \mu_t(x)}{\sigma_t(x)}\),\(\Phi\) 和 \(\phi\) 分别是标准正态分布的累积分布函数和概率密度函数。
EI 的直观解释:第一项鼓励局部搜索(在预测均值低的地方多采样),第二项鼓励全局探索(在预测方差大的地方多采样)。EI 越大,表示采样该点的期望收益越高。
5. 选择下一个采样点
下一个采样点 \(x_{t+1}\) 通过在整个定义域内最大化 EI 得到:
\[x_{t+1} = \arg\max_{x \in [-3,3]^2} \text{EI}(x) \]
这是一个确定性的优化问题,但 EI 可能是多峰的。由于计算 EI 相对便宜(相比真实函数),我们可以用全局优化方法求解,例如用多起点梯度优化或网格搜索。常用做法是:在定义域内随机选取很多候选点(比如 1000 个),计算每个点的 EI,选出最佳的几个点作为起点,再用梯度上升法(对 EI 求导)进行局部精炼,选取最大值对应的点。
6. 迭代更新
得到 \(x_{t+1}\) 后,对其进行真实函数评估(模拟计算)得到观测 \(y_{t+1} = f(x_{t+1}) + \epsilon\)。然后将该点加入数据集:
\[D_{t+1} = D_t \cup \{(x_{t+1}, y_{t+1})\} \]
更新高斯过程模型(重新计算后验分布,通常需要重新计算逆矩阵 \((K + \sigma_n^2 I)^{-1}\),可利用增量更新公式提高效率)。
更新当前最佳观测值 \(f_{\text{best}}\)。
重复步骤 4–6,直到达到评估次数上限(20 次)。
7. 示例迭代步骤(以第 6 个点为例)
假设初始 5 个点已评估,当前 \(f_{\text{best}} = -3.5\)(对应某个观测点)。
- 用这 5 个点拟合高斯过程,估计超参数(例如通过最大似然得到 \(\sigma_f^2 = 4.2, l_1 = 1.5, l_2 = 1.3\))。
- 在定义域内均匀生成 1000 个候选点,对每个点计算后验均值 \(\mu\) 和方差 \(\sigma^2\),进而计算 EI。
- 假设在候选点 \(x = (0.8, -1.9)\) 处,后验均值为 \(\mu = -3.8\),方差为 \(\sigma^2 = 0.6\),则
\[ Z = \frac{-3.5 - (-3.8)}{\sqrt{0.6}} \approx 0.387 \]
\[ \Phi(0.387) \approx 0.651, \quad \phi(0.387) \approx 0.37 \]
\[ \text{EI} = (-3.5 + 3.8) \times 0.651 + \sqrt{0.6} \times 0.37 \approx 0.195 + 0.286 = 0.481 \]
- 找到 EI 最大的点,比如 \(x_{\text{next}} = (0.2, -2.1)\),其 EI ≈ 0.52。
- 评估 \(f(0.2, -2.1) = (0.2-1)^2 + (-2.1+2)^4 - 5 = 0.64 + 0.0001 - 5 = -4.3599\),加上噪声后观测值 \(y = -4.36\)。
- 将该点加入数据集,更新模型,新的 \(f_{\text{best}}\) 更新为 -4.36。
- 继续下一次迭代。
8. 算法终止与输出
当达到 20 次评估后,算法停止。最终输出:
- 所有观测点中使观测值最小的点作为近似最优解。
- 同时,高斯过程后验均值最小的点也可以作为候选(如果噪声小,两者通常接近)。
在该示例中,真实最小值在 \(x^* = (1, -2)\) 处,值为 -5。通过贝叶斯优化,我们期望在 20 次评估内找到接近该点的解。
关键要点
- 贝叶斯优化将全局优化问题转化为代理模型的序贯决策问题。
- 高斯过程提供了函数值的概率预测,量化了不确定性。
- 期望采集函数平衡了利用(在预测值低的地方采样)和探索(在不确定性大的地方采样)。
- 该框架特别适合昂贵黑箱函数优化,在超参数调优、实验设计等领域广泛应用。