前言
最近从贝叶斯网络的最初版本开始看,看到Monte Carlo Dropout (MC dropout)的时候被高斯过程扼住了喉咙,翻了一天的视频和各种帖子,大概搞懂它在做什么了,这篇文章不讨论高斯过程的整个框架,对于一些理论也不做深入解释,只介绍其在机器学习中作为高斯过程回归(或者分类)的物理含义。
从实际的拟合曲线入手
现在有一个数据集表示为,其中每一个样本是一个维的向量,用表示,现在想要对数据建模,我们假设:
每一个样本对应的预测值是一个高斯分布,而不是一个固定的值
每个服从什么样的高斯分布呢?一般我们先假设均值为0,但是方差是多少?前面讲贝叶斯回归的时候,我们认为每个样本是独立的,因此得到的每个的分布也是相互独立的,但是高斯过程回归不认为样本之间独立(这样说不太准确),它不认为每个预测值的分布之间相互独立,而是认为它们受输入的的影响:如果两个特征向量在空间上具有更大的相似性,那么它们对应的预测值也应该具有相似的分布,我们设分别对应输入的输出,则高斯过程可以表示为如下的形式:
- 这里比较容易混淆的就是:它与多元高斯分布之间是什么关系? 毕竟多元高斯也有这样的一个均值向量和协方差向量。
对于多元高斯分布来说,它的变量是一个具有不同维度的一个样本,也就是说,多元变量中的“元”更像是样本的一种特征,而自变量实际上还是单个样本而已;但是高斯过程的自变量是一个分布,换言之,是一个函数,也就是上式中的,之前有听到这样一种说法,说“泛函”是“函数的函数”,虽然有失偏颇,但用在这里便于理解高斯过程,高斯过程可以理解为分布函数的分布,即它的自变量已经不再是样本,而是一个概率密度函数为高斯分布的函数。
回到刚才,高斯过程的协方差矩阵如何定义?
既然假设不同之间的分布受到输入的的影响,协方差矩阵的每个元素将这种影响体现了出来,矩阵中的每个是一种样本在空间中相似性的度量,我们知道,协方差矩阵中如果两个随机变量的协方差大,说明两个变量的相关性越强,用在这里,具体一点:的值越大,说明两个分布和的相关性越大,对于函数用相关性表述不太合适,直接理解为两个分布更接近吧。
协方差矩阵中的一般通过核函数计算得到,并且矩阵一定是一个半正定矩阵,即:高斯过程的协方差矩阵是一个半正定矩阵,一个半正定矩阵也一定可以作为高斯过程的协方差矩阵。关于半正定矩阵的定义和两条定理的证明这里不是重点,不展开讲。
假设我们现在已经选好了一个核函数:
如何求一个新的样本点对应的分布?
根据之前的假设,应该与同属于一个高斯过程的联合正态分布,此时的均值和方差应该表示成:
这个新的协方差矩阵中的每个元素都是已知的,所以此时我们知道了高斯过程的联合概率密度函数,同时的概率密度函数我们也知道,相应的,我们就可以计算出的分布了,注意,这个分布对应的不是边缘概率密度,而是一种条件概率(后验分布),即直接给出下面的结果:
数据有噪声的情况
当数据没有噪声时,我们认为它是通过直接变换得到的,当数据有噪声时,还需要在后面加一个高斯的噪声变量,即:,此时联合分布为:
进一步计算得到的后验分布为:
跟没有噪声的时候相比,比多了一个噪声项。
高斯过程回归和贝叶斯线性回归有什么关系
在上节中介绍贝叶斯线性回归的时候,我们说不同样本对应的预测值是条件相互独立的,但是我们再观察高斯过程的协方差矩阵,发现之间并不相互独立(协方差矩阵并不是只有对角线元素有值),为什么会这样?
先来看贝叶斯回归和高斯过程回归的模型表达式:
在贝叶斯推理时,我们认为与没有任何关系,所以如果将其看成一个核函数的话,得到的协方差矩阵与没有关系,并且协方差矩阵实际上是我们假设的的先验分布中对应的方差构成的单位矩阵,也就是下面这样:
但是高斯过程使用的核函数以样本的相似度为度量,这样一来,得到的就不是条件独立的了。
除此之外,我们在贝叶斯估计中是需要先计算的后验分布的,然后再根据模型预测,但是高斯过程回归已经确定了核函数,唯一需要优化的可能是核函数里面的超参,我们实际上只需要根据公式做预测就可以了。这两种方法看起来有点类似,但感觉是从两种不同的角度来思考问题:
- 贝叶斯过程回归需要求解模型的参数,也就是说,我事先不知道模型是什么,先通过已有的数据推断模型大概是什么样子,再根据得到的模型预测未知样本。也有文章说这种方式有利于不断地学习新的样本,迭代模型的参数,从而更好的拟合全部数据。
- 高斯过程回归就像是已经给了一个比较合理的模型,我们只需要对模型的一些超参作微小调整,比如调整前面核函数中的,直接拿过来预测就可以。
两者与不确定性的关系
数据的不确定性通过噪声体现,模型的不确定性通过预测值的分布体现,即,如果该分布的方差比较大,反映的模型对该数据的预测越摇摆不定。
文章出处登录后可见!