贝叶斯优化的实际实现细节

机器算法验证 高斯过程 优化 贝叶斯优化
2022-03-28 04:59:04

在 Snoek、Larochelle 和 Adams [ http://arxiv.org/pdf/1206.2944.pdf]之后,我正在尝试使用 GPML [ http://www.gaussianprocess.org/gpml/code/matlab进行贝叶斯优化/doc/]我已经实现了第 3 页中描述的预期改进获取功能,并且我假设我是正确的,以决定下一次查询我的目标的位置,我应该采用最大化的x

aEI(x;(xn,yn,θ))

但我似乎无法找到关于要考虑哪些候选人的指导。从理论上讲,我想在整个域中找到最好的,并且论文的编写方式似乎表明这是可能的(“[EI] 在高斯过程下也具有封闭形式” )。但作为一个实际问题,我需要在之前计算我可能考虑的后验预测均值和方差,而这些后验有一个封闭的形式,我仍然需要使用矩阵代数来计算它们,所以我看不到一种方法来绕过挑选一堆的。xxxaEI(x)x

问题:集合的实用方法是什么,我在其上最大化 EI(或任何其他采集函数)?(这是在报纸上的某个地方,我只是错过了吗?)x

目前,我只是使用我当前的集合,对其进行 2000 次替换采样,然后在每个点上添加一些高斯噪声。好像没问题,我猜。xi

1个回答

规范是使用您喜欢的任何全局优化器。问题是EI面高度多模态且不连贯;优化这个采集函数本身就是一个不平凡的问题。

我在各种论文中看到的一个常见选择是DIRECT算法。有时我看到CMA-ES是非线性优化中最先进的方法。根据我对其他形式优化的经验,MCS(多级坐标搜索)往往效果相对较好。您可以在此处找到对无衍生全局优化器的评论

  • Rios 和 Sahinidis,“无导数优化:算法回顾和软件实现比较”,《全球优化杂志》(2013 年)。

顺便说一句,EI 是解析的,所以如果你愿意,你也可以计算它的梯度来指导优化,但这不是必需的。一种有效的技术是首先运行全局优化器以找到有希望的解决方案,然后运行局部优化器来改进它(例如,准牛顿方法,如 BFGS,在 MATLAB中为fminunc ;如果有约束,则为fmincon )。

最后,如果采集函数的优化速度是一个因素(这不是“传统”的 BO 场景),我从拉丁超立方设计或准随机 Sobol 序列设计开始,发现了不错的结果,然后用从最佳点开始的局部优化器的几个步骤;另见@user777 评论。由于这不是标准的 BO 方案,因此我没有任何实际使用此方法的具体参考。


引用 DIRECT 或 CMA-ES 的论文示例:

  • Calandra, R.、Seyfarth, A.、Peters, J. 和 Deisenroth, MP (2015)。不确定性下学习步态的贝叶斯优化。数学和人工智能年鉴,1-19(链接)。
  • Mahendran, N.、Wang, Z.、Hamze, F. 和 Freitas, ND (2012)。具有贝叶斯优化的自适应 MCMC。在人工智能和统计国际会议上(第 751-760 页)(链接)。
  • Gunter, T., Osborne, MA, Garnett, R., Hennig, P., & Roberts, SJ (2014)。在具有快速贝叶斯正交的概率模型中进行采样以进行推理。在神经信息处理系统的进展中(第 2789-2797 页)(链接)。

你可以谷歌“贝叶斯优化”+所需的全局优化算法,你会找到一堆论文。另外,在几乎所有其他关于 BO 的论文中,您都会找到这样的句子:

[...] BO 通常在每次迭代中都需要一个辅助全局优化器来优化采集功能。在 BO 文献中习惯使用 DIvided RECTangles (DIRECT) 来完成这样的任务。也可以应用其他全局优化算法,如 CMA-ES。