贝叶斯优化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贝叶斯优化相关的知识,希望对你有一定的参考价值。
参考技术A 贝叶斯优化-marsggbo首先,贝叶斯优化能干什么?给我的感觉是无所不能,当然其效果有些可能不尽如人意。贝叶斯优化,可以做回归的东西(虽然总感觉这个东西只是一个附属品),然而主要是去解决一个“优化问题”。
贝叶斯优化解决的是下面类型的问题:
注: 使用"argmin"并无实质上的不同,事实上[1]中采用的便是"argmin"。
往往, 我们并不知道,所以,这类问题很难采用经典的梯度上升("argmin"则梯度下降)来解决。贝叶斯优化采用概率代理模型来应对。 是决策,往往称 为决策空间。药物配方是一种决策,神经网络卷积核大小等也可以看成一种决策。而且,这种决策与最后的输出的关系(即 )往往很难知晓。这也正是贝叶斯优化的强大之处。
上面俩幅图分别来自[2]和[1],因为一些符号的差异,往下除特别指明,采用的均为[2]中的符号。
贝叶斯优化,每一次迭代,首先在代理模型的“先验”下,通过最大化采集函数(该函数往往是对评估点的分布以及 的提升的一种权衡(trade-off))。新的评估点,作为输入传入系统,获得新的输出,以此来更新 和概率代理模型。
其中
上面这幅图,便是贝叶斯优化的一个简单演示。黑色虚线表示目标函数 ,而黑色实线表示我们拟合的曲线(图中是通过对概率代理模型求均值获得的)。蓝紫色区域是 。下方的绿色曲线则是每一次迭代的 ,可以看出,每一次迭代选出的评估点都是 最大值所对应的 。
下面,我们分别来讨论概率代理模型,以及采集函数。
概率代理模型,顾名思义,就是用来代理 的一个概率模型。
参数模型,即 可由参数 来决定。如果我们给定 的先验分布 。那么,通过贝叶斯公式,我们可以获得 的后验分布:
现在问题来呢,我们还不知道 和 啊。 是一个似然分布,往往通过 来计算,当然,我们得知道 。至于 ,比较难计算,但是, 在这里只是扮演了系数的作用,所以用核方法就能解决。事实上,我们常常选择共轭先验分布作为 的先验分布。
这里给出一个例子:实验室有K种药,我们需要通过药物实验来找出哪种药的效果最好。假设,药作用在某个病人身上只有成功治愈和失败俩种可能,且不能通过一种药的效果来判断另外一种药的疗效。这种类型的问题似乎被称为A/B测试,常用于新闻推荐等。
我们用 来表示药物, 表示第 种药物成功治愈病患的可能性,而 则表示病人 的治疗情况(0失败,1治愈)。函数 就是某种复杂的映射。让参数 , 。那么我们选择的概率代理模型是 。
我们选择 分布作为 的先验分布,因为这是其共轭先验分布。
定义:
其中 表示 次评估中,选中 药物且治疗失败的数目, 则反之。 只有 成立为1否则为0。
那么, 的后验概率为:
上述推导见附录。
从上述也能发现,超参数 表示的治愈数和失败数。下图是以 为先验的一个例子。
汤普森采样-wiki
那么在 的基础上,如果找 呢。以下采用的是汤普森采样(或后验采样):
,即 从 的后验分布中采样得到。
该模型的好处是:
下面是该模型的算法:
上述的模型在应对组合类型的时候会显得捉襟见肘。比方,我们在从 个元素中寻求一种搭配,每个元素有 俩种状态,那么总共就有 种组合,如果为每种组合都设立一个 ,显然不切实际。更何况,先前模型的假设(无法从一种组合推断另外一种组合的有效性)显得站不住脚。因为,不同组合往往有微妙的相关性。
采用线性模型,能比较好的解决这一问题。
我们把每一种策略设为 ,并且概率代理模型为 ,现在 成了权重向量。这只是代理模型的一部分,因为并没有体现“概率”的部分。
组合 的观测值为 ,服从正态分布。很自然地,我们同样选择共轭先验分布作为 的先验分布: normal_inverse_gamma-wiki
分布有4个超参数,而 的后验分布( 的条件下)满足:
其中 的第 行为 。
推导见附录。
关于 的选择,同样可以采用汤普森采样:
其中
线性模型有很多扩展:
其中, , 常常为:
和
这里, , , 均为超参数,至于这些超参数怎么更新,我不大清楚。
非参数模型不是指没有参数,而是指参数(数量)不定。
我们先来看如何把先前的线性模型转换成非参数模型。
我们假设 是固定的,且 ,即服从均值为 ,协方差矩阵为 的多维正态分布。那么, ,我们可以积分掉 从而获得 的一个边际分布:
推导见附录。
就像先前已经提到过的,我们可以引入 ,
将资料(设计)矩阵 映射到 ,如此一来,相应的边际分布也需发生变化:
注意到 ,事实上,我们不需要特别指明 ,而只需通过kernel.
是新的位置,而 是相应的预测,二者都可以是向量。
分子部分是一个联合的高斯分布。到此,我们实际上完成了一个简易的高斯过程,下面正式介绍高斯过程。
高斯过程-wiki
高斯过程-火星十一郎
高斯过程 ,其核心便是均值函数 (在贝叶斯优化中,我们常常选择其为0)和协方差函数 ,而观测值 。通过高斯过程得到的序列 ,以及观测值 都服从联合正态分布:
Kernel method - wiki
Matern covariance function - wiki
文献[1]给出的形式如下(实际上是 的情况):
其中, , 为平滑参数, 为尺度参数, 为第二类变形 贝塞尔函数 。
同时给出了几种常用的Matern协方差函数。
文献[2]给出的是另外一种表示方式:
其中, , 是一个对角矩阵,其对角线元素为 。
这些参数可以这么理解:
上面的一些参数,会在下面给出一些更新的方法。
log 边际似然函数可以表示为:
从图中可以看到,等式右边被分成了三部分,三者有不同含义:
一个非常自然的想法是,对上述似然函数进行极大似然估计,从而获得 的估计。
每一次高斯过程的复杂度在 级别左右,这是由计算矩阵的逆所带来的。通过Cholesky分解,可以降为 。
所以产生了一些算法,试图克服这个困难。
SPGP从n个输入中选择m个伪输入替代,从而达到降秩的目的。同时,这m个伪输入的位置也作为参数(虽然我不知道怎么去更新)。好处自然是,
能够把复杂度降为 。缺点是,参数相对比较多,容易产生“过拟合”现象。
由Bochner定理得,任何稳定得kernel都有一个正定得傅里叶谱表示:
之后,通过蒙特卡洛方法,采样m个样本频率,来近似估计上诉的积分。从而获得近似的协方差函数,当数据集较小时,SSGP同样易产生“过拟合”现象。
随机森林 - Poll的笔记
随机森林可以作为高斯过程的一种替代。缺点是,数据缺少的地方,估计的并不准确(边际更是常数)。另外,由于随机森林不连续,也就不可微,所以无法采用梯度下降(或上升)的方法来更新参数。另外不解的是,随机森林的参数,即便我们给了一个先验分布,可其后验分布如何求呢?
首先我们有一个效用函数 ,顾名思义,效用函数,是反映评估 和对应的函数值 (在 条件下)的一个指标。论文[1]并没有引入这个效用函数,论文[2]引入这个概念应该是为了更好的说明。
一种采集函数的选择,便是期望效用:
其实蛮奇怪的,因为对 求期望也就罢了,这个采集函数对 也求了期望,我的理解是,这样子更加“模糊”了,如果选择极大似然等方式产出的“精准”的 ,或许不能够很好的让评估点足够分散,而陷入局部最优。而且,这样子做,似乎就没有必要去估计参数 ,虽然代价是求期望。
从下面的一些算法中我们可以看到,往往没有 这一步骤。
最后再次声明,采集函数的设计,往往都是对exploration和exploitation的一种权衡。即,我们希望新的评估点 既要和原来的那些数据点远一些(对未知区域的探索),又能够让 能够提升(对当前区域的开发探索)。
PI的采集函数的设计思想很简单,就是我们要寻找一个评估点 ,这个 使得 较已知的最大的(如果一开始是argmin就是最小的) ,令其为 。往往, 。
采集函数为:
注意,这里的 是标准正态分布的概率函数。
这个采集函数里的效用函数是:
其中 为指示函数。
当 就是 的最小值时,PI的效果非常好。
PI一个“弊端”是,只在乎提升的概率,而在乎提升的幅度,而,EI就涵盖了这俩方面。
通常,其提升函数由下式表示:
而相应的的采集函数是:
其中 是标准正态分布的概率密度函数。式子通过积分变量替换可以推得。
实际上 就是效用函数 。
采集函数为:
这个采集函数,可以这么理解,对于任意一个 ,它有一个均值 ,有一个标准差 (体现浮动范围和程度), 我们认为比较可靠的界,我们认为, 有较大可能达到 的值。所以最大化采集函数,就是最大化我们的这一种希望。
论文[2]中说 的选择往往是Chernoff-Hoeffding界。听起来很玄乎,但是,UCB现在貌似非常火。另外,有一套理论,能够引导和规划超参数 ,使得能够达到最优。
不同之前的策略,基于信息的策略,依赖全局最优解 的后验分布 。该分布,隐含在函数 的后验分布里(不同的
以上是关于贝叶斯优化的主要内容,如果未能解决你的问题,请参考以下文章