贝叶斯优化(Bayesian Optimization)的原理与黑箱函数最优解搜索过程
题目描述
贝叶斯优化是一种用于对黑箱函数(目标函数形式未知、评估成本高)进行全局最优解搜索的序列决策方法。其核心思想是:利用一个概率代理模型(如高斯过程)来建模未知的目标函数,并通过一个采集函数(Acquisition Function)来决定下一个评估点的位置,以平衡探索(在不确定性高的区域采样)和利用(在预测最优的区域采样)的矛盾。本题目将详细讲解贝叶斯优化的数学原理、代理模型构建、采集函数选择以及迭代优化过程。
1. 问题形式化
我们面对一个黑箱函数 \(f: \mathcal{X} \to \mathbb{R}\),其中定义域 \(\mathcal{X} \subset \mathbb{R}^d\) 是 \(d\) 维空间的有界子集(如超立方体)。目标是在尽可能少的函数评估次数下,找到使 \(f\) 最小化的点(假设是最小化问题):
\[x^* = \arg\min_{x \in \mathcal{X}} f(x). \]
函数 \(f\) 本身可能是非凸、无解析形式、评估代价高(例如,调参实验一次需训练一个模型)。
2. 概率代理模型:高斯过程(Gaussian Process, GP)
贝叶斯优化使用高斯过程作为代理模型,因为它能提供预测值的不确定性估计(即预测的均值和方差)。
- 高斯过程定义:一个高斯过程是定义在函数空间上的分布,完全由均值函数 \(m(x)\) 和协方差函数(核函数) \(k(x, x')\) 描述:
\[ f \sim \mathcal{GP}(m(x), k(x, x')). \]
通常设先验均值 \(m(x) = 0\)。
- 核函数选择:常用的核函数是平方指数核(径向基函数核):
\[ k_{\text{SE}}(x, x') = \sigma_f^2 \exp\left(-\frac{1}{2\ell^2} \|x - x'\|\^2\right), \]
其中 \(\sigma_f^2\) 是函数方差(输出尺度),\(\ell\) 是长度尺度(输入变化敏感度)。这些是超参数,可通过最大化观测数据的边际似然来优化。
- 后验预测分布:
假设我们已经观察到一组数据 \(\mathcal{D}_{1:t} = \{(x_i, y_i)\}_{i=1}^t\),其中 \(y_i = f(x_i) + \epsilon_i\),\(\epsilon_i \sim \mathcal{N}(0, \sigma_n^2)\) 是观测噪声。记 \(X_t = [x_1, \dots, x_t]^\top\), \(y_t = [y_1, \dots, y_t]^\top\)。
对于一个新的测试点 \(x_{t+1}\),目标函数值 \(f(x_{t+1})\) 与观测值 \(y_t\) 的联合分布为:
\[ \begin{bmatrix} y_t \\ f(x_{t+1}) \end{bmatrix} \sim \mathcal{N}\left( \mathbf{0}, \begin{bmatrix} K_t + \sigma_n^2 I & k_t(x_{t+1}) \\ k_t(x_{t+1})^\top & k(x_{t+1}, x_{t+1}) \end{bmatrix} \right), \]
其中:
- \(K_t\) 是 \(t \times t\) 矩阵, \([K_t]_{ij} = k(x_i, x_j)\),
- \(k_t(x_{t+1}) = [k(x_1, x_{t+1}), \dots, k(x_t, x_{t+1})]^\top\)。
利用条件高斯分布公式,得到后验预测分布:
\[ f(x_{t+1}) \mid \mathcal{D}_{1:t} \sim \mathcal{N}(\mu_t(x_{t+1}), \sigma_t^2(x_{t+1})), \]
其中:
\[ \mu_t(x) = k_t(x)^\top (K_t + \sigma_n^2 I)^{-1} y_t, \]
\[ \sigma_t^2(x) = k(x, x) - k_t(x)^\top (K_t + \sigma_n^2 I)^{-1} k_t(x). \]
\(\mu_t(x)\) 是预测均值(对 \(f(x)\) 的最佳估计),\(\sigma_t^2(x)\) 是预测方差(表示不确定性)。
3. 采集函数(Acquisition Function)
采集函数 \(a_t(x)\) 基于当前的后验分布,量化了在点 \(x\) 处进行下一次采样的“期望效用”。下一个评估点选择为:
\[x_{t+1} = \arg\max_{x \in \mathcal{X}} a_t(x). \]
常用采集函数包括:
- 期望改善(Expected Improvement, EI):衡量当前最优观测值 \(f_t^* = \min_{i \le t} y_i\) 基础上的“期望改进量”。
\[ \text{EI}_t(x) = \mathbb{E}[\max(f_t^* - f(x), 0) \mid \mathcal{D}_{1:t}]. \]
利用高斯过程后验的正态性,可解析计算:
\[ \text{EI}_t(x) = (f_t^* - \mu_t(x)) \Phi(Z) + \sigma_t(x) \phi(Z), \quad \text{其中 } Z = \frac{f_t^* - \mu_t(x)}{\sigma_t(x)}. \]
\(\Phi\) 和 \(\phi\) 分别是标准正态分布的分布函数和密度函数。当 \(\sigma_t(x) = 0\) 时,定义 \(\text{EI}_t(x)=0\)。
- 上置信界(Upper Confidence Bound, UCB):
\[ \text{UCB}_t(x) = \mu_t(x) + \beta_t \sigma_t(x), \]
其中 \(\beta_t\) 是平衡探索与利用的参数(可设为随时间递增的函数,如 \(\beta_t = \sqrt{2 \log(t^{d/2+2} \pi^2 / (3\delta))}\) 以确保理论收敛)。
- 概率改善(Probability of Improvement, PI):
\[ \text{PI}_t(x) = \Phi\left( \frac{f_t^* - \mu_t(x) - \xi}{\sigma_t(x)} \right), \]
其中 \(\xi \ge 0\) 是权衡参数(防止纯利用)。
4. 贝叶斯优化算法步骤
输入:黑箱函数 \(f\),定义域 \(\mathcal{X}\),最大评估次数 \(T\)。
输出:找到的最优点 \(x^*\)。
-
初始化:在 \(\mathcal{X}\) 内随机或通过低差异序列(如拉丁超立方采样)选择少量点 \(x_1, \dots, x_{n_0}\)(如 \(n_0=5\)),评估得到 \(y_i = f(x_i) + \epsilon_i\),构成初始观测集 \(\mathcal{D}_{n_0}\)。
-
循环:对于 \(t = n_0, n_0+1, \dots, T-1\),执行:
a. 拟合高斯过程:用当前观测集 \(\mathcal{D}_t\) 优化高斯过程的超参数(如通过最大化边际似然)。
b. 优化采集函数:基于当前高斯过程后验,计算采集函数 \(a_t(x)\),并通过全局优化方法(如多起点梯度下降、DIRECT 算法等)找到其最大值对应的点:
\[ x_{t+1} = \arg\max_{x \in \mathcal{X}} a_t(x). \]
c. 评估目标函数:计算 \(y_{t+1} = f(x_{t+1}) + \epsilon\)(若 \(f\) 是确定性的,可设 \(\epsilon=0\))。
d. 更新数据集:\(\mathcal{D}_{t+1} = \mathcal{D}_t \cup \{(x_{t+1}, y_{t+1})\}\)。
- 返回最优观测点:从 \(\mathcal{D}_T\) 中找到使 \(y_i\) 最小的点 \(x^* = \arg\min_{(x_i, y_i) \in \mathcal{D}_T} y_i\)。
5. 关键特点与注意事项
- 高效性:通过代理模型避免了大量真实评估,适合昂贵函数优化。
- 探索与利用平衡:采集函数的设计直接控制此平衡,EI 和 UCB 在实践中效果良好。
- 计算开销:每步需拟合高斯过程(\(O(t^3)\) 时间复杂度)和全局优化采集函数(但相对真实函数评估成本较低)。
- 扩展:可处理有约束、多目标、高维(通过添加结构假设或随机嵌入)等问题。
总结:贝叶斯优化的核心在于用高斯过程代理模型量化不确定性,并通过采集函数的序列决策来智能选择下一个评估点,以较少的评估次数逼近全局最优解。这一框架已被广泛应用于超参数调优、实验设计、机器人控制等领域。