事由
原本是听了内部分享关于”Auto Keras”的介绍,其中使用了自动化调参——贝叶斯优化(Bayesian Optimization)方法,好(bu)高(jue)大(ming)上(li),于是开始恶补知识,引发了连环车祸惨案…(非参模型、高斯过程、核技巧、先验函数、提取函数)
网上相关参考与资料确实很专业,但是对入门学习者太不友好,而且完全get不到原思想的intuition!还好我没有放弃抵抗…所以本篇会先介绍贝叶斯优化的基本思想与预备知识点,以便能更好的理解后续文章。
算法思想
假设我们要做一个蛋糕,而决定蛋糕好不好吃的因素有糖/面粉/牛奶的份量与各自配比,烘焙时间等。反映到数学问题上就是:在一定的范围内,求函数的最值问题
常规的做法会把$f(·)$ 参数化,然后通过各种优化方法求解参数,得到解析表达式。但是!很多时候会有如下情况(就比如做蛋糕):
- 形式是未知的,即没有解析表达
- $f(x)$的值需要人工干预(好不好吃)
这时候贝叶斯优化就上线了。
我们先猜想$f(x)$有个先验分布,并可以粗略用它描述$f(x)$的分布特点。而大自然界中最常见的就是高斯分布(正太分布),那我们不妨假设其先验分布就是高斯分布。OK,目前我们手上仅有少量观测数据$D$(因为我们无法提供更多,制作蛋糕的成本太大!浪费时间和食材可耻!)与先验分布。此时,我们先随机选取两组(或多组)观测数据修正先验分布(即函数要经过观测点)。
接着我们要继续选取合适的观测点不断优化模型(而不是乱选)!选取的标准是:能提供更多信息,使得后验概率更快、更准确的逼近目标函数的真实分布,具体的选取方法是使用提取函数,来指导我们如何选取下一个点。
在选取出新观测点$x_i$之后,我们需要通过实验或者其他什么办法获取$f(x_i)$。通过这样一步步选取新的采样点$(x, f(x))$,并不断加入到观测数据$D$中,使得我们的后验概率越来越精准,直到接近真实的分布。所以贝叶斯优化就是不断的采样(提取函数),进行计算更新模型(高斯分布)的过程。
从上面的三段内容来看,贝叶斯优化的关键点在于:
- 高斯过程(Gaussian Process):用于描述函数$f(x)$的形式与分布特点
- 提取函数(Acquisition Function):指导我们如何从候选集中选择一个新的观测点
大致思想知道了后,接下来要温习下相关数学基础。
预备知识
高斯分布
简单的来说,多元高斯分布可以由均值向量$\mu$与协方差矩阵$\Sigma$定义,它有2个很有用的代数性质:
【性质一】:两个相互独立的多维高斯分布$X$与$Y$之和也是一个多维高斯分布$Z$
其中$X$与$Y$分别满足:
【性质二】:若已知$X$,则变量$Y$在变量$X$条件下的概率分布依旧是高斯分布,公式为(即条件概率公式):
高斯过程(回归)
基本概念
首先复习下什么是随机过程,随机过程其实就是一族随机变量的集合,而如果这族随机变量均满足高斯分布,那么这就是高斯过程。再简单点:如果把高斯过程看成一个函数,每输入一个$x$,就输出一个高斯分布(即一个均值与一个方差)。对于下图中的每个点,都可以确定一个高斯分布。
高斯过程(GP)是一种强大的模型,它可以被用来表示函数的分布情况。即不仅仅知道预测值的点估计,还知道这个估计有多少信心在里面(即输出的方差)。
好了,相对于找隐函数,我们对采样点的具体预测值更感兴趣。高斯过程背后的关键点在于所有函数值都源于多元高斯分布。划重点!
【假设一】:给定一些X的值,对Y建模,此时假设对应的这些Y值服从一个联合高斯分布!
对应成数学公式是(均值向量简化为0):
那么,自然而然的我们想知道,协方差矩阵是怎么计算得来的?这里高斯过程又做出了另一个重要假设:
【假设二】:如果两个X比较近,那么对应的Y也一定是比较接近。
协方差表示了$Y$之间有多近,而有了【假设二】之后,这个是由$X$有多近来决定。那$X$之间怎么度量?这个相似性怎么算?答案就是Kernel
,它用来描述函数之间的相似度,最常使用的是高斯核
又称平方指数核(squared exponential kernel)
。
具体而言,协方差矩阵的求法就是:
关于预测值的计算
回到最初的问题:有了一个新采样点,对应的如何求?思想就是:
- 计算训练集与新$x^*$的联合高斯分布(假设一)
- 通过条件概率公式,计算新$f^*$的条件概率分布(性质二)
根据【假设一】,$f^*$与$f_1$,$f_2$,$f_3$同属于一个4维联合高斯分布,对应成数学语言就是:
$\Sigma_{11}$是之前已经算出来的,$\Sigma_{12}$、$\Sigma_{21}$、$\Sigma_{22}$是通过新采样点$x^*$分别和每个训练集中的$x$求出来的,所以整个4维联合高斯分布我们也能计算出来。
再根据性质二,用公式直接计算出的条件分布
我们回顾之前的这张图
假设训练集有3个观测点(图中黑色实点且已知),现在我们有了一个新采样点$x_1$,那么通过上面的计算就可以得到预测值$f(x_1)$的一个高斯分布。并且发现越靠近观测点的预测值方差也较小,可以想象,如果观测点足够多,最终GP会收敛到真实$f(x)$的样子(图中黑色曲线),这就是高斯过程。
零零散散讲了这么多,希望能有个直观的概念,后面还有好多坑要填(贝叶斯优化具体是怎么实现的),想想就累…
参考资料
浅谈高斯过程回归——火星十一郎
看得见的高斯过程:这是一份直观的入门解读——机器之心
贝叶斯优化 Bayesian Optimization
ML百物语:贝叶斯优化(Bayesian Optimization) 其一