贝叶斯优化(BO)是什么?整个流程是怎么样的?代理模型 + 采集函数

首先需要清楚的是:BO是黑盒优化,这个黑盒我们是不知道的,所以我们需要通过使用“代理模型”不断地逼近真实的黑盒所代表的函数,然后使用“采集函数”采集到更优点 

得到训练好的“代理模型”后,就可以结合其他多目标优化算法来求得Pareto 解集了。这是因为BO面对的问题是黑盒优化,这个黑盒的计算成本很大。说白了,BO的“代理模型”就是学习一个输入和输出的关系,它可以替代神经网络预测分子活性的模型等等。

来自:Computer-aided multi-objective optimization in small molecule discovery

一个图了解整个BO的流程是什么样的:

其步骤主要是:

整个BO流程:在贝叶斯优化的每次迭代中,我们使用代理模型来预测未知点的性能,并用采集函数来选择下一个评估点。然后,我们在实际的目标函数(黑盒模型)上评估这个点,更新代理模型,然后再次迭代。这个过程不断重复,直到满足某个停止条件,例如达到一定的迭代次数、时间限制或解的质量。随着更多候选点的评估,代理模型变得越来越精确,使得优化过程逐渐靠近全局最优解(代理模型变得越来越精确,这样就可以更准确地指导采集函数选择下一个有价值的点来评估)。

一些概念:

1、代理模型(Surrogate Model)

代理模型是一个用于近似真实目标函数的统计模型。因为在很多情况下,目标函数可能非常复杂或者计算代价很高,我们不可能去穷举所有可能的输入值来找到最优解。所以,我们需要一个代理模型来模拟目标函数的行为,这样就可以更快地估计函数在未探索点的输出。【因为BO是黑盒优化,并且每一次这个黑盒模型输出一个值所需要的开销很大,所以我们用黑盒模型输出的寥寥几个值去模拟一个黑盒模型所代表的黑盒函数,也就是上述步骤的 f*

在贝叶斯优化中,常见的代理模型是高斯过程(Gaussian Process, GP)。高斯过程是一种非常灵活的模型,能够估计函数的预测值以及这些预测值的不确定性(即预测值的置信区间)。其他代理模型还可以是随机森林、神经网络等,但高斯过程是最常用的,因为它天然的概率性质很适合贝叶斯优化的框架。

2、采集函数(Acquisition Function)

采集函数定义了在代理模型的预测基础上,如何选择下一个点进行实际的目标函数评估。它是优化过程的驱动力,因为它决定了哪些点值得探索。采集函数通常会在探索(尝试远离已知点以探索更多区域)和利用(选择已知的或预测的最佳点)之间做出权衡。

几种常用的采集函数包括:

  • 期望改进(Expected Improvement, EI):选择预期会给出比目前已知最好结果更佳值的点。
  • 概率改进(Probability of Improvement, PI):选择有可能提供改进的点。
  • 贝叶斯置信区间(Bayesian Confidence Bound, UCB):在预测的均值和标准差之间找到一个权衡点。

这些采集函数帮助决定下一步最有价值的评估点,以便有效地利用有限的资源(如时间、金钱或计算能力)来找到最优解。

3、New Candidate (新候选)

这是指通过优化采集函数得到的新的解或样本点。在贝叶斯优化中,采集函数(如期望改进量、预测熵减少等)用于指导搜索,以确定下一个评估的最佳位置。"新候选"就是这个过程中被认为可能最优的下一个点

4、Observation (观测)

一旦选择了新候选点,就会在该点上评估目标函数,得到的结果称为"观测"。这个观测值是目标函数在新候选点上的实际输出,它提供了有关优化问题的新信息。


 

关于贝叶斯优化的视频需要看:

1 贝叶斯优化的基本流程_哔哩哔哩_bilibili

2 BayesOpt vs HyperOpt vs Optuna_哔哩哔哩_bilibili

3 基于BayesOpt实现高斯过程gp优化_哔哩哔哩_bilibili

超参数优化常用的方法在:AutoML | Overview of HPO Tools

首先贝叶斯优化是一种黑盒优化(“黑盒优化”是什么?-CSDN博客

### 贝叶斯优化代理模型的核函数贝叶斯优化过程中,代理模型通常由高斯过程(Gaussian Process, GP)构成。GP 是一种概率模型,能够捕捉输入变量之间的复杂关系并量化不确定性。为了定义两个数据点间的相似性程度以及影响范围,在高斯过程中引入了核函数(也称为协方差函数)。不同的核函数可以表达不同类型的平滑假设关于潜在的真实映射。 #### 常见的核函数及其特性 1. **平方指数核 (Squared Exponential Kernel)** 或径向基函数(RBF) 这种核是最常用的一种形式,因为它能很好地表示大多数实际场景下的连续变化情况。其特点是无限可微分和平滑过渡,适合于那些预期具有较高光滑性的目标函数建模[^3]。 ```python from sklearn.gaussian_process.kernels import RBF kernel = RBF(length_scale=1.0) ``` 2. **马特恩核 (Matérn Kernel)** 相比SE/RBF核,该类核提供了更灵活的方式去控制样本路径的粗糙度。参数ν决定了曲线的平滑水平;当ν趋向无穷大时接近SE核的效果。较小值则允许更加不规则的变化模式存在。 ```python from sklearn.gaussian_process.kernels import Matern kernel = Matern(nu=1.5) # nu can be set to other values like 0.5 or 2.5 etc. ``` 3. **周期性核 (Periodic Kernel)** 如果认为待估测的过程可能存在某种周期性质,则可以选择此核来进行描述。这有助于捕获时间序列或其他重复现象中存在的规律性成分。 ```python from sklearn.gaussian_process.kernels import ExpSineSquared kernel = ExpSineSquared() ``` 4. **线性核 (Linear Kernel)** 用于模拟简单的线性依赖结构。尽管不如上述几种常见,但在某些特定情况下仍然有用处,比如当我们知道或怀疑响应面呈现近似直线形态的时候。 ```python from sklearn.gaussian_process.kernels import DotProduct kernel = DotProduct() + WhiteKernel(noise_level=1) ``` 每种核都有各自的特点和适用场合,选择合适的核对于获得良好的代理模型至关重要。实践中往往需要根据具体的应用背景和个人经验做出判断,并可能涉及交叉验证等手段来挑选最优配置方案。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pengsen Ma

太谢谢了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值