高斯过程(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进行了线性加权。

到此为止,我们解决了模型<转>浅谈:高斯过程与贝叶斯优化-冯金伟博客园的估计,更新(高斯过程)和再采样(提取函数)的过程。贝叶斯优化就是不断地进行采样,计算更新模型的过程。