2. 基本概念#

备注

本页介绍贝叶斯优化的基本概念以及 Bgolearn 如何实现它们。

2.1. 什么是贝叶斯优化?#

贝叶斯优化是一种强大的技术,用于优化评估成本高昂的函数。它在以下情况下特别有用:

  • 函数评估成本高昂(实验、模拟)

  • 导数不可用(黑盒函数)

  • 测量中存在噪声

  • 评估次数有限(预算有限)

核心思想

贝叶斯优化不是随机采样或使用网格搜索,而是构建函数的概率模型,并使用它智能地决定下一步在哪里采样。

2.2. 核心组件#

2.2.1. 1. 代理模型#

代理模型使用先前的观测值来近似昂贵的函数。

高斯过程 (Gaussian Process, GP) 是最常见的选择:

  • 同时提供均值预测不确定性估计

  • 自然地处理观测中的噪声

  • 灵活且适用于许多问题

# Example: Fitting a GP model in Bgolearn
from Bgolearn import BGOsampling

optimizer = BGOsampling.Bgolearn()
model = optimizer.fit(
    data_matrix=X_train,
    Measured_response=y_train,
    virtual_samples=X_candidates
)

# Get predictions with uncertainty
mean_pred = model.virtual_samples_mean
std_pred = model.virtual_samples_std

2.2.2. 2. 采集函数#

采集函数通过平衡以下两者来决定下一步在哪里采样:

  • 利用 (Exploitation):在模型预测良好值的地方采样

  • 探索 (Exploration):在不确定性高的地方采样

Bgolearn 中的常见采集函数:

表 2.1 采集函数#

函数

描述

最适合

EI (Expected Improvement)

相对于当前最佳值的期望提升

通用目的,平衡探索/利用

UCB (Upper Confidence Bound)

带置信度的乐观估计

噪声函数,侧重探索

PI (Probability of Improvement)

改进当前最佳值的概率

保守,侧重利用

PES (Predictive Entropy Search)

信息论方法

复杂函数,有限预算

2.2.3. 3. 优化循环#

贝叶斯优化过程遵循以下迭代循环:

1. 初始数据
   ↓
2. 拟合代理模型
   ↓
3. 优化采集函数
   ↓
4. 在新点评估
   ↓
5. 更新数据集
   ↓
6. 停止准则?
   ├─ 否 → 返回步骤 2
   └─ 是 → 返回最佳解决方案

2.3. 数学基础#

2.3.1. 高斯过程#

高斯过程由以下定义:

  • 均值函数\(m(x) = \mathbb{E}[f(x)]\)

  • 协方差函数\(k(x, x') = \text{Cov}[f(x), f(x')]\)

对于任何有限点集,函数值遵循多元高斯分布:

\[f(x_1), \ldots, f(x_n) \sim \mathcal{N}(\mu, K)\]

其中 \(\mu_i = m(x_i)\)\(K_{ij} = k(x_i, x_j)\)

2.3.2. 期望提升#

期望提升采集函数为:

\[\text{EI}(x) = \mathbb{E}[\max(f(x) - f^*, 0)]\]

其中 \(f^*\) 是当前观测到的最佳值。

对于均值为 \(\mu(x)\) 和方差为 \(\sigma^2(x)\) 的 GP 后验:

\[\text{EI}(x) = (\mu(x) - f^*)\Phi(Z) + \sigma(x)\phi(Z)\]

其中 \(Z = \frac{\mu(x) - f^*}{\sigma(x)}\)\(\Phi\) 是累积分布函数,\(\phi\) 是标准正态分布的概率密度函数。

2.4. 实际考虑#

2.4.1. 何时使用贝叶斯优化#

适用于:

  • 昂贵的函数评估(每次评估 >1 秒)

  • 连续或混合变量空间

  • 噪声观测

  • 有限的评估预算(10-1000 次评估)

  • 无导数的黑盒函数

不太适合:

  • 非常便宜的函数(使用基于梯度的方法)

  • 非常高的维度(>20 个变量)

  • 离散组合问题

  • 具有已知结构的函数

2.4.2. 选择采集函数#

快速指南

  • 从 EI 开始:良好的通用选择

  • 对噪声函数使用 UCB:更好的探索

  • 尝试 PI 进行利用:当您想要保守时

  • 考虑 PES 用于复杂函数:信息论方法

2.4.3. 处理约束#

Bgolearn 支持各种约束类型:

  1. 盒约束:变量的简单边界

  2. 线性约束:线性等式/不等式约束

  3. 非线性约束:一般约束函数

  4. 分类变量:离散选择

# Example: Box constraints
bounds = {
    'temperature': (100, 500),  # Temperature range
    'pressure': (1, 10),        # Pressure range
    'composition': (0, 1)       # Composition fraction
}

2.5. 下一步#

现在您了解了基础知识:

  1. 了解采集函数采集函数指南

参见

有关更深入的数学背景,请参阅:

  • Mockus et al., The application of Bayesian methods for seeking the extremum 关于高斯过程

  • Zhan et al.,Expected improvement for expensive optimization: a review 关于原始 EI 论文