稍微深入地介绍贝叶斯优化

来源:互联网 发布:会声会影x8注册机 知乎 编辑:程序博客网 时间:2024/06/06 02:26
在University of Colorado Boulder的ARPG实验室的小白一枚。最近在做贝叶斯优化(Bayesian Optimization)整定相机参数的research. 因为假期赋闲在家,便抽空写写所得。

像我这等小白通常想先看中文文献入门然后再看英文进阶。不过就我在接触这类问题的时候所遇到的问题来看,入门中文教程是几乎没有的。如果想要真正深入地了解贝叶斯优化,看我的博客肯定是不够的,你需要翻墙去Google学术看一些相关的英文文献。但是用我的内容入门之后再去看那些英文文献,想必会简单许多。

在你看了我的文章之后,如果想进一步了解贝叶斯优化,下面的是必读的英文文献。

A Tutorial on Bayesian Optimization of ExpensiveCost Functions, with Application to Active User Modeling and Hierarchical ReinforcementLearningEric Brochu, Vlad M. Cora and Nando de Freitas

Gaussian Processes for Machine Learningthe MIT Press, 2006

文献2是一本厚厚的书,可以在Google上下载到。肯定无法读完,但是其中的一些部分会非常有帮助。

Matlab 2016 a之后加入了贝叶斯优化的包,位于Statistics and Machine Learning Toolbox 里。在网页http://www.mathworks.com/help/stats/bayesian-optimization-algorithm.html 里又matlab关于贝叶斯优化的介绍。

另外贝叶斯优化也有相应的c++包和python包,读者可自行google寻找。

在网页http://www.360doc.com/content/16/1016/23/1067368_598974485.shtml 里有更浅显的关于贝叶斯优化的中文介绍,入门可以一读。

另外在网页http://www.cnblogs.com/hxsyl/p/5229746.html 里也有浅显的关于高斯过程(Gaussian Process,简称GP)的介绍,入门可以一读。



下面进入正题。 什么是贝叶斯优化?贝叶斯优化其实就是在函数方程不知的情况下根据已有的采样点预估函数最大值的一个算法。该算法假设函数符合高斯过程(GP). GP是多变量高斯分布(Multivariate Gaussian Distribution)的一个延伸(我应该会抽空写一章节讲解多变量高斯分布在Bayesian Optimization里的应用). 我们都清楚一个随机变量符合正态分布时它的方差,均值,分布函数等概念。当两个即以上变量仍服从正态分布,并且这些个随机变量之间有一定影响时,我们称这是多变量高斯分布。当无穷多变量他们之间的任意都符合多变量高斯分布时,可以看作是高斯过程。而这些变量都可以看作是某个函数上的采样点,所以我们说整个函数符合高斯过程。

贝叶斯优化会选取未知函数的中数个已知点,作为先验(prior),假设这些点是GP中的一部分,即他们服从多变量高斯分布。根据多变量高斯分布的一些性质,可以计算出这些点中每一个点的均值(mean)和方差(variance) 。我们不知道函数是什么,但是我们可以获得函数不同自变量下的因变量。举个栗子,假设我们有y=-x*x函数,然而我们并不知道它是这个样子,我们知道的是x=1,2,3..10所对应的y的值。如果我们想要的话,我们也可以找到x=1.5,2.5..时对应的y的值。我们取x=1,2,3..10作为prior, 获得对应的y值。 同样,如果我们能决定下一个采样点,与前面已经有的点“拼接”成更高维度的一个多变量高斯分布,我们也能计算出这个点的均值和方差。我们通过最大化收获函数(Acquisition Function,我并没有发现谁翻译这个Acquisition Function,自己随意译的,以后简称AF)来获得哪个采样点作为下一个采样点。

我们为什么要找下一个采样点呢?贝叶斯优化的目的是找到当x等于某个值的时候y得到最大. 我们随机选取的10个点x=1..10里很可能没有包含那个值(对y=x*x来说就是0),那么我们需要找下一个点x, 获得其对应的采样点y. 这“下一个x”,是基于我们对前面10个点的多变量高斯分布的假设以及最大化AF而得到的,现目前为止我们认为的y的最大值最可能出现的位置(恩,,个人认为这句话我还是总结得比较好的,,)。比如现在我们找到x=0.8为“下一个x”, 那么现在我们就有11个采样点,x=0.8,1,2...10 和他们对应的y值。这时候这11个点服从多变量高斯分布,我们再次最大化AF(每一次最大化AF,都需要多变量高斯分布的信息),得到"下一个x",如x=0.5,经过一定数量的迭代,我们可能可以得到最大点在x=0.1之类。


算法简化

选取m个点x1,..xm作为prior,假设他们服从多变量高斯分布

for t=1,2...n do

  最大化AF求得下一个采样点x0

  采样目标函数位于x0处的值y0

  假设x0,x1....xm服从多变量高斯分布


我们提到了Acquisition Function那么多次了,那么什么是Acquisition Function呢?我们已经说AF是用来寻找下一个x的。但是AF不止一种,通常有下面几种

Improvement-based acquisition functions

expected improvement acquisition function

Confidence bound criteria acquisition function

(有更多种类,但这是最基本的三种)

在我最开始介绍的资料里,http://www.360doc.com/content/16/1016/23/1067368_598974485.shtml  提到的AF为第三种。第二种Acquisition Function是第一种的延伸,并且应用更为多。我应该会专门用一个章节介绍AF,下面只简要提及其中第一种,improvement based AF.

 

                                       formula 1

式子中的phi()是标准正态分布的累积分布函数(输入公式实在是不方便,phi即是第三式子括号外那东东),属于高中内容,大家应该很熟悉,或者百度回想一下就知道了. u(x)是我们想要的下一个x的均值,分母为其对应的方差,f(x+)是我们先验中采样点中均值最大的采样点的均值。从这里我们可以简单了解到要想最大化AF,即最大化IP,我们需要先验中(先前假设的多变量高斯分布)的信息,即x+。 这就是为什么我在前面说我们找到的"下一个x"是基于我们多变量高斯分布和最大化AF共同得到的了。

下一篇文章介绍多变量高斯分布和它在贝叶斯优化中的应用


发现CSDN显示不出我上传的图片,我会在新浪博客发表这些内容