关于参数搜索
参数搜索是一个开放的问题,假设我们拥有一个函数,该函数的性质完全由参数
决定,那么,我们就可以通过对参数进行搜索,得到一个满足我们要求的函数。
这里我所说的满足要求,可以是拟合的误差小于某个阈值,亦可以是其他
当选取一个参数之后(这里下标c表示候选,candidate),我们会对这个函数进行一个评价,这里的评价是指,评价这个函数是不是符合我们的要求。
一般来说,这个评价,或者说成评估的过程,往往是代价比较大的,即,计算耗费的时间比较多,不能立即得到结果。所以,在进行参数搜索的时候,我们更希望用一个高效的方法来进行尝试。
在这里,你可能会想到随机梯度下降(Stochastic Gradient Descent),直接求出参数的偏导数即可。但是,我这里所说的参数,有时候不是十分直接地参与函数的计算,计算偏导数可能十分困难,比如神经网络的学习率,每一层神经元的个数等。
对于参数搜索,比较朴素的有,随机搜索以及网格搜索。随机搜索主要是基于一个概率,随机地进行参数的变动。而网格搜索是给定一系列需要尝试的离散值的组合,挨个尝试。
本文介绍的贝叶斯优化,属于一种参数搜索方案,利用先验的知识,帮助我们去对参数进行搜索。
本文的细节比较多,会将其中的推导的详细步骤都展示出来
贝叶斯优化
参数搜索问题的核心在于,如何基于已有的观察,决定下一个需要尝试的参数?
假设我们现在有一个评价函数,通过前
次的尝试,我们获得了一系列点
,其中
我们的目标是得到一个参数,这里不局限于最大,也可以是最小值,取决于你的评价的设计。
在贝叶斯优化之中,有一个重要的假设:
基于这个假设,在已有的个观察点上,我们可以构造出一个针对
的高斯分布,参数为
我们用下标
表示在从
到
的观察点上的
其中表示
和
通过核函数(kernel function)的内积,用来描述二者相似程度。这样的一个核函数矩阵可以作为协方差矩阵。
范数p可以取1,2等等
于是,关于的概率密度函数为
不妨假设,下一个尝试的点为,
亦是服从正态分布
,于是,
和
的联合分布的参数应该为:
其中以及
我们的目的其实是去在的条件下估计
的概率密度函数为
和
的联合概率密度函数为
进一步地,我们可以得到一个条件概率密度函数
我们将结果分成两个部分:系数部分和指数部分
系数部分有:
注意到分块矩阵的一个性质:
两边取行列式得到
从而系数部分结果为:
从这个结果可以看出来方差为
对于指数部分
为了记录方便,我们这里使用一些记号:
从而
这里需要用到分块矩阵的逆
其中
分块矩阵的逆怎么来的?
若存在一个逆矩阵,不妨记作
由于
便有方程组
进而,类似地可以得到其他值
基于分块矩阵的逆,对于,我们可以得到
其中
对称地,可以得到
其中
将指数部分拆解合并得到
利用之前我们得到的方差
猜测均值为,有
展开之后对齐系数项可以得到
可以得到最终的均值估计为
我们便得到了两个重要的参数估计
其中方差可以通过
和
通过核函数计算得到
均值的估计中的
可以使用
近似计算
然后我们可以计算出每个未知点的概率为0.95的置信区间
通常为
到了这里,我们基本上获得了每一个未知点的贝叶斯后验估计,在这之上需要评估到底该选择哪些未知点进行尝试
这里介绍两种,分别是Probability of Improvement以及Expected Improvement
简记为PI方法以及EI方法
对于PI方法来说,我们的目标为
其中表示着在已有观测值里面,对应评价最高的参数。
, 其中
是概率密度函数
我们之前对进行高斯分布的建模,于是,上述的概率可以写成分布函数的形式
是标准的正态累积分布函数
在上述式子中,变换到标准的正态累积分布函数的过程并不是很直接,这里给出中间的变换步骤
令, 便有
再令,便有
我们会去计算所有未知的待搜索点的这个概率,进而选择一个最高概率的值进行探索。
PI方法被认为搜索的范围较为小,只去搜索局部的区域,因此有了搜索区域更广的EI方法
首先定义一个获益函数
代表着新尝试的值对于已有的最佳值的提升,注意到该函数的值服从正态分布,其概率密度函数为
我们去计算这个函数的期望
我们分为两个部分进行解析,首先是第一个部分
其中是标准正态分布的概率密度函数
第二个部分为
令, 则有
所以期望的结果为
同样的,我们会对所有未知点计算出期望,然后选择期望最高的未知点进行探索。
网友评论