运用高斯核模型进行最小二乘回归_基于meta learning的高斯过程

注:本文介绍的高斯过程及高斯过程回归通俗易懂,网上好像还没有类似的通俗易懂的高斯过程回归的文章。虽然有少量公式,但是完全可以很快消化。

最近meta learning很火,比如MAML等都是和神经网络相结合,而高斯过程在实际场景中有广泛的应用,但是高斯过程的计算复杂度很高,特别是需要多个数据点进行初始化,如果能和meta learning结合,减少初始化的数据点,对高斯过程来说是一项非常实用的技术。本文探讨一下两者如何结合,当然也是借鉴最新的研究成果。

1.高斯过程

先来说一下高斯过程(Gaussian Processing)。基础的就不详细说了,调重点的阐述。首先说一下高斯过程为什么看做是机器学习算法?高斯过程可以表示为:

f877b813b94a37b6cbd09c55db5226ff.png

这个公式的意思是y是由m(x)和k(x,x')得到的,m(x)是期望,假设取0,k是核函数表明了x两两取值的协方差。因此,只要核函数定了,那么y就可以得到,注意是y的期望和方法哦。这里再强调一下,基于高斯过程的方法,任何地方都和概率相关,即给定x的值,对应的y并非一个值,而是有一个范围的,每个值对应了概率(贝叶斯相关的方法都是这个套路),这个概率就是以均值为中心的高斯分布,即多维高斯分布:

bc8789db8e7c5ae1c4c427c585841852.png

上面的公式中,f*是我们要计算/预测的y值(位于左侧),而右侧是x的协方差,因此只要协方差矩阵(核函数)定了,已知x就可以算出右侧,右侧定了,那么左侧的f*也就可以算出来了(因为符合高斯分布)。具体算法如下:

f70cf202865cccc72ad7816a4242f406.png

2. 高斯过程for机器学习

上面提到,高斯过程最重要的是确定核函数,核函数是有参数的,比如常用的核函数是Gaussian Kernel也叫RBF,就带两个参数(下面这个只给出了一个参数):

d00ce81749ba99741f1c4bc927abeee1.png

如果参数定了,那么高斯过程也就定了,然后通过已知点就可以让模型的准确度越来越高。例如下图的上半部分是参数定下来的情况,可以看到是有很多条曲线的。可能有人要问了,为什么有这么多条线?还记得我们上面解释的高斯过程吗?每一个x都对应了一个y的分布(y的分布服从高斯分布,均值不同而已),这样在x对应的y上sample一个点,再在下一个x的y上sample另一个点,以此类推得到一条曲线,重复该过程就可以得到多条曲线(估计别文章没有我讲的详细,哈哈)。

99350f49263baa88ea446c5264939850.png

上图中的下半部分是已知了4个点后的高斯过程,可以看到在已知点附近,y的上下界被收敛在一起。所以已知点越多,被收敛的地方就越多,模型就越准确。这就是所谓的后验概率(posterior),就是已知多个(x,y)的情况下,模型是个什么样子。比如上面这个高斯过程,已知了4个点,给定一个新的x,我们就可以计算/预测这个x对应的y的分布(again,y是高斯分布,均值和方差可以根据上面那个公式,通过已知的4个点计算得到)。我们可以看到,计算/预测y的这个过程并不需要训练,而是直接通过公式计算得到。那么你常常听到的训练一个高斯过程是怎么回事?

本章节开始时我们提到,核函数是有参数的,例如上面提到的核函数就有参数σ,这个参数是要学出来的。有人要问了,这个参数是干嘛的,能直接定下来吗?简单的说,高斯核有2个参数,分别控制了y的范围(即方差)和平滑度,并且任何参数都不能直接定下来(否则就不叫参数了)。那么如何学呢?和普通的机器学习过程一样,先定义loss,即y的边缘概率分布和真实的y约接近越好(maximum marginal likelihood),注意这里是分布的接近程度,而非单个值,训练过程和传统的机器学习一致。

3. Meta learning for Gaussian Process

上面说了高斯过程如何学出来。那么得到高斯过程之后,我们就可以做预测(计算)了,比如最近比较火的AutoML就是基于高斯过程的贝叶斯优化。高斯过程有一个特点,就是要拿到一个数据集的所有点进行拟合,然后预测。比如在数据库领域,一个workload的性能与参数曲线可以拟合一个高斯过程,这个步骤往往需要很多数据点才能较好的拟合出曲线,耗时费力。如何在较少的步骤就能拟合出模型呢?其中一个答案是可以和meta learning结合。

这里的一个重要思想是不同参数下,两个workload的相似性如何衡量?只要涉及到相似性度量,一定要搞清楚相似性的定义。这里提到的是tps与参数的关系,所以workload随时间变化的曲线并不是我们关心的。我们要的是tps随参数变化的曲线。

31f6978b892ee09467ccb9a733883499.png

比如我们现在有一个模型G1,如果其形态和target是一致的,那么其峰值对应的参数就应该是一致的。如何衡量这个一致性呢?这篇论文可以参考一下:

https://ml.informatik.uni-freiburg.de/papers/18-AUTOML-RGPE.pdf​ml.informatik.uni-freiburg.de

简单的说,就是用上述两条曲线的偏序关系来衡量。论文中,作者对这个关系用loss进行表示:

ea17f61ddb8c7b727cd91850067eae60.png

如果我们有多个Gi,每个Gi都是一个高斯过程,那么ensemble后也是一个高斯过程,而ensemble时,每个Gi前面的权重是直接算出来的,那么怎么算呢?最简单直接的方法是直接算出每个Gi的loss,然后按照比例均分。但是问题来了,既然可以得到最小loss对应的Gi,为什么还要用其他的Gi。这里要回到高斯过程的本质,其是一个概率模型,也就是说每个模型都有一定概率取到其他值,包括最小的loss。既然这样,每个模型都可能帮上一些忙,只不过要按照概率来分配权重。所以我们要sample出一些序列,比如10000条,针对每个序列,算出Gi对应的loss,然后看哪个Gi对应的loss最小,把最小的记下来,最后检查每个Gi在这10000次中,有几次能拿到最小loss,相应的比例作为Gi的权重:

4176463cb0d4728bbc30af85615e5417.png

另外一种方法:原始的高斯过程(即核函数)的输入是两个配对的x,即原始数据。那么在不同的workload下,数据显然不同。输入数据可以看做机器学习里的feature,那么如何让不同workload的feature具备共性,我们想到了用神经网络(MLP)做encoding,原始数据还是x,输入到神经网络,输出encoding后的向量,再作为输入到核函数。这个过程实际上和meta learning是无关的,完全可以workload看看效果,姑且算作transfer learning的一种方法吧。

更进一步,既然用MLP做了encoding,那么MLP的adaptation就很重要,meta learning的MAML就可以派上用场了。MAML的细节可以看本专栏的另一篇文章,专门解读meta learning和MAML的:

Tieying Zhang:Meta Learning(Few-shot Learning)以及MAML的理解​zhuanlan.zhihu.com
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值