基于高斯过程的贝叶斯优化算法进阶题
字数 4530 2025-12-07 16:25:08

基于高斯过程的贝叶斯优化算法进阶题

题目描述
考虑一个昂贵的黑箱函数优化问题。目标是最小化一个计算代价高昂的未知函数 \(f(x)\),其中 \(x \in \mathbb{R}^n\),且 \(n=2\)。函数的表达式未知,但给定任意输入 \(x\),我们可以通过耗时计算得到对应的输出 \(f(x)\)(可能带有观测噪声)。我们被允许对函数进行有限次评估(例如 20 次),目标是利用这些有限次评估尽可能接近函数的最小值。要求使用基于高斯过程回归的贝叶斯优化方法,其中包含以下关键组成部分:

  1. 使用平方指数核函数(也称径向基函数核)作为高斯过程先验的协方差函数。
  2. 采用期望提升(Expected Improvement, EI)作为采集函数来决定下一个采样点。
  3. 初始设计使用拉丁超立方采样生成 5 个初始点。
  4. 假设观测带有高斯噪声,噪声方差已知为 \(\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 次评估内找到接近该点的解。

关键要点

  • 贝叶斯优化将全局优化问题转化为代理模型的序贯决策问题。
  • 高斯过程提供了函数值的概率预测,量化了不确定性。
  • 期望采集函数平衡了利用(在预测值低的地方采样)和探索(在不确定性大的地方采样)。
  • 该框架特别适合昂贵黑箱函数优化,在超参数调优、实验设计等领域广泛应用。
基于高斯过程的贝叶斯优化算法进阶题 题目描述 考虑一个昂贵的黑箱函数优化问题。目标是最小化一个计算代价高昂的未知函数 \( 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 次评估内找到接近该点的解。 关键要点 贝叶斯优化将 全局优化 问题转化为 代理模型的序贯决策 问题。 高斯过程提供了函数值的概率预测,量化了不确定性。 期望采集函数平衡了 利用 (在预测值低的地方采样)和 探索 (在不确定性大的地方采样)。 该框架特别适合昂贵黑箱函数优化,在超参数调优、实验设计等领域广泛应用。