<转>浅谈:高斯过程与贝叶斯优化
高斯过程(Gaussian process)
高斯过程常在论文里面简写为GP。定义:如果随机过程的有限维分布均为正态分布,则称此随机过程为高斯过程或正态过程。
首先我们来解读一下定义:
第一个问题:什么是随机过程?
大家都学过概率论,一定知道什么叫样本空间和随机变量(此处假设读者知道)。在概率论中,讲过样本空间,随机变量相当于是在样本空间中的一次采样,采样的结果是一个事件,在每次采样的时候都满足一定的分布。随机过程和随机变量的区别在于,样本空间里装的不是事件,装的是过程(一串事件)。每次的采样的结果是一个过程,比如一个序列,一个时间的函数等等。
样本空间就是图中蓝紫色的部分,在蓝紫色空间中随便画一条函数,都是一个可能的随机过程。(这张图是盗用的“阿米斯丹猫的博客”)
第二个问题:什么是“随机过程的有限维分布均为正态分布”?
我们先来看一个随机序列:这是一个有限维n的序列,我们可以理解为一个无穷维序列进行的n次采样。在这里可以理解为时间,但是更准确的应该理解为一个连续的指标集。因为其一般性,就可以看成的有限维分布。
所以“随机过程的有限维分布均为正态分布”就好理解了,即服从一个n元正太分布。
在机器学习任务中,我们往往是假设我们的问题满足一个高斯过程的,或者通过核函数来“拓展”高斯过程对其他过程的表示能力。
贝叶斯优化(Bayesian Optimization)
贝叶斯优化的主要目的是与大部分机器学习算法类似,学习模型的表达形式 ,在一定范围内求一个函数的最大(小)值。
这类往往很特殊:
1. 没有解析表达或者形式未知,故而没办法用跟梯度有关的优化方法;
2. 值的确定会受到一些外界干预(如人的干预)。
贝叶斯优化算法核心步骤如下:
(1).通过样本点对高斯过程 进行估计和更新。(后简称高斯过程)
(2).通过提取函数 (acquisition function)来指导新的采样。(后简称提取函数)
高斯过程:假设我们需要估计的模型服从高斯过程,即:
这里的协方差矩阵要用到内积的核化,笔者理解为拓展了高斯过程表达其他过程的能力,毕竟在实际问题上直接假设一个过程服从高斯过程稍微有点牵强。
假设有一组样本点
为了简便推导,先假设数据提前被中心化,即,其中:
对于一个新样本 ,由于新样本的加入会更新高斯过程的协方差矩阵:
设
协方差矩阵更新过程如下:
有了更新后的协方差矩阵就可以通过前t个样本估计出的后验概率分布:
关于上述内容的推倒过程和核函数该如何选择的问题,请参考《Gaussian Processesfor Machine Learning》。
提取函数:从上述高斯过程可以看出,通过采样可以得到目标函数的概率描述。那么很自然地,我们希望通过采样来精确这种描述。我们看论文的时候经常会在论述acquisition function 的地方看到两种采样思路,一种是explore和exploit:
Explore:探索新的空间,这种采样有助于估计更准确的;
Exploit:在已有结果附近(一般是已有最大值附近)进行采样,从而希望找到更大的;
acquisition function的目的就旨在平衡这两种采样过程。
这里举一个不太恰当的栗子,对于一个吃货,到一个陌生的城市去寻找美食,其实就是一个采样再评价的过程。(显然吃货可以吃遍全城,但是受限于囊中羞涩,不得不考虑如何优化采样)Exploit就是在曾经已经吃过的餐厅里,再细细品味寻找一个最优的;Explore就好像是寻找新的餐厅。acquisition function在这里的意义就在于寻找一个更加合理的策略去平衡这二者,给出一个下一次采样的目标饭点。这个问题就是一个典型的没有模型,而且采样结果受外界干预(人的主观评价)的例子。
回归正题,在数据问题里,Explore是希望选择有更大方差的数据,Exploit是希望选择更接近均值的数据。
常见的方法有:
1. Expected Improvement
2. Upper Confidence Bound
下面一一介绍:
方法1:Expected Improvement(EI)
acquisition function:
这里的定义为数据集D上的最大值。上面的定义式子并不直观,我们将其展开:
我们为了推导方便定义一个扰动参数:
其中,是高斯分布的累计概率函数,是高斯分布的概率密度函数
所以:
方法2:Upper Confidence Bound(UCB)
相比于上面的EI而言,UCB则更加简单粗暴,效果也十分不错。
从式子可以看出来,UCB就是一个将Explore和Exploit进行了线性加权。
到此为止,我们解决了模型的估计,更新(高斯过程)和再采样(提取函数)的过程。贝叶斯优化就是不断地进行采样,计算更新模型的过程。