Skip to main content

贝叶斯优化库

项目描述

操作状态

贝叶斯优化库

贝叶斯优化 (BO) 算法的一种Python实现,适用于由实数、整数、分类变量或其混合组成的决策空间。

在代理模型的支持下,BO 使用所谓的获取函数迭代地提出候选解决方案,该函数平衡了探索与利用,并使用新观察到的目标值更新代理模型。该算法旨在有效地优化昂贵的黑盒问题。

安装

您可以在以下位置安装稳定版本pypi

pip install bayes-optim

或者,从 github 获取最新版本:

git clone https://github.com/wangronin/Bayesian-Optimization.git
cd Bayesian-Optimization && python setup.py install --user

例子

对于实值搜索变量,最简单的用法是通过fmin函数:

from bayes_optim import fmin

def f(x):
  return sum(x ** 2)

minimum = fmin(f, [-5] * 2, [5] * 2, max_FEs=30, seed=42)

您还可以对 BO 的大多数成分进行更精细的控制,例如代理模型和采集功能。请看下面的例子:

from bayes_optim import BO, RealSpace
from bayes_optim.Surrogate import GaussianProcess

dim = 5
space = RealSpace([-5, 5]) * dim  # create the search space

# hyperparameters of the GPR model
thetaL = 1e-10 * (ub - lb) * np.ones(dim)
thetaU = 10 * (ub - lb) * np.ones(dim)
model = GaussianProcess(                # create the GPR model
  thetaL=thetaL, thetaU=thetaU
)

opt = BO(
    search_space=space,
    obj_fun=fitness,
    model=model,
    DoE_size=5,                         # number of initial sample points
    max_FEs=50,                         # maximal function evaluation
    verbose=True
)
opt.run()

有关更详细的用法和示例,请查看我们的wiki 页面

特征

此实现与替代包/库的不同之处在于以下功能:

  • 并行化,也称为批量顺序优化,这里实现了几种不同的方法。
  • 改进的矩生成函数(MGFI) [WvSEB17a] 是最近提出的获取函数,它隐含地控制了勘探-开发的权衡。
  • Mixed-Integer Evolution Strategy用于优化采集函数,当搜索空间是实数、整数和分类变量的混合时启用。

项目结构

  • bayes-optim/SearchSpace.py:搜索/决策空间的实现。
  • bayes-optim/base.py:贝叶斯优化的基类。
  • bayes-optim/AcquisitionFunction.py:获取功能的实现(见下文实现的列表)。
  • bayes-optim/Surrogate:我们实现了高斯过程回归(GPR)和随机森林(RF)。
  • bayes-optim/BayesOpt.py包含几个 BO 变体:
    • BO:无噪音+连续
    • ParallelBO:无噪音+并行(又名批量顺序)
    • AnnealingBO:无噪音+并行+退火[WEB18]
    • SelfAdaptiveBO:无噪音+并行+自适应[WEB19]
    • NoisyBO:嘈杂+并行
  • bayes-optim/Extension.py旨在包括未经广泛测试的最新发展:
    • PCABO:无噪声+并行+PCA辅助降维【RaponiWBBD20】【建设中】
    • MultiAcquisitionBO: 无噪声 + 具有多种不同采集功能的并行化[正在建设中]

采集功能

库中实现了以下填充标准:

  • 预期改进(EI)
  • 改进概率 (PI) / 改进概率
  • 置信上限(UCB)
  • 改进的矩生成函数(MGFI)
  • 广义预期改进(GEI) [建设中]

对于顺序工作模式,默认使用预期改进。对于并行化模式,默认启用 MGFI。

代理模型

贝叶斯优化中使用的元(代理)模型。这种模型的基本要求是为预测提供不确定性量化(经验或理论)。为了方便处理分类数据,默认使用随机森林模型。这里的实现基于scikit-learn中的实现,对不确定性量化进行了修改。

贝叶斯优化简介

贝叶斯优化 [Moc74, JSW98] (BO) 是一种顺序优化策略,最初是为了解决评估成本高的单目标黑盒优化问题而提出的。在这里,我们将把我们的讨论限制在单目标的情况下。BO 通常从对大小为 X={x 1 ,x 2 ,...,x n }的初始实验设计 (DoE) 进行抽样,这通常由简单随机抽样、拉丁超立方抽样 [SWN03] 或更复杂的低差异序列[Nie88](例如,Sobol 序列)。取初始 DoE X 及其对应的目标值,Y={f(x 1 ), f(x 2 ),..., f(x n)} ⊆ ℝ,我们继续构建一个统计模型 M,描述以初始证据为条件的目标函数的概率分布,即 Pr(f|X,Y)。在 BO 的大多数应用场景中,缺乏关于 f 的先验知识,因此通常为 M 选择非参数模型(例如,高斯过程回归或随机森林),这会产生所有的预测变量 f'(x) x ∈ X 和一个不确定性量化 s'(x),例如估计预测 E(f'(x)−f(x)) 2的均方误差。基于 f' 和 s',可以通过所谓的获取函数来识别有希望的点,该函数平衡了开发与优化过程的探索。

参考

  • [Moc74] 乔纳斯·莫库斯。“关于寻找极值的贝叶斯方法”。在 Guri I. Marchuk,编辑,优化技术,IFIP 技术会议,苏联新西伯利亚,1974 年 7 月 1-7 日,计算机科学讲义第27 卷,第 400-404 页。斯普林格,1974 年。
  • [JSW98] 唐纳德·R·琼斯、马蒂亚斯·肖劳和威廉·J·韦尔奇。“对昂贵的黑盒函数进行有效的全局优化”。J.全球。优化。, 13(4):455–492, 1998。
  • [SWN03] Thomas J. Santner、Brian J. Williams 和 William I. Notz。“计算机实验的设计与分析”。统计学中的施普林格系列。斯普林格,2003 年。
  • [Nie88] 哈拉尔德·尼德雷特。“低差异和低分散序列”。数论杂志,30(1):51-70,1988。
  • [WvSEB17a] Hao Wang、Bas van Stein、Michael Emmerich 和 Thomas Bäck。“基于矩生成函数的贝叶斯优化新获取函数”。在系统、人与控制论 (SMC),2017 年 IEEE 国际会议上,第 507-512 页。IEEE,2017。
  • [WEB18] Hao Wang、Michael Emmerich 和 Thomas Bäck。“贝叶斯全局优化中矩生成函数的冷却策略”。2018年IEEE 进化计算大会,CEC 2018,巴西里约热内卢,2018 年 7 月 8-13 日,第 1-8 页。IEEE,2018 年。
  • [WEB19] Hao、Wang、Michael Emmerich 和 Thomas Bäck。“迈向自适应高效全局优化”。在AIP 会议论文集,卷。2070,没有。1,第 020056. AIP 出版有限责任公司,2019。
  • [RaponiWBBD20] Elena Raponi、Hao Wang、Mariusz Bujny、Simonetta Boria 和 Carola Doerr:“主成分分析辅助的高维贝叶斯优化”。在国际平行问题解决自然会议上,第 169-183 页。施普林格,湛,2020。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

bayes-optim-0.2.6.tar.gz (106.5 kB 查看哈希

已上传 source

内置分布

bayes_optim-0.2.6-py3-none-any.whl (120.4 kB 查看哈希

已上传 py3