原文链接:

说说高斯过程回归 – 我爱计算机
http://www.52cs.org/?p=509&_360safeparam=1929050203

高斯过程回归

来自于 我爱计算机 WWW.52CS.ORG

作者介绍:新浪微博ID @妖僧老冯, 9月将赴南京大学(直博生),方向是机器学习与数据挖掘

编者:小便和作者打过几次交道,一直以为是他是已“修成正果”的某某博士,便“毕恭毕敬”地去邀请他写篇牛文。细聊之后才得知小伙子原来是90后,9月份才博士入学。这篇文章对GP进行了深度科普,数学公式是有一些的,但耐心读读,都不是问题的。高斯过程是机器学习领域一个基础的方法,同时又和其他方法有千丝万缕的联系,值得大家研究一下。文中一些细节也欢迎大家和作者一起探讨。

今天起会陆续写一些机器学习的notes,这次介绍一个很酷的idea,aka 高斯过程回归(Gaussian Process Regression)。

网上讲高斯过程回归的文章很少,且往往从高斯过程讲起,我比较不以为然:高斯过程回归(GPR), 终究是个离散的事情,用连续的高斯过程( GP) 来阐述,简直是杀鸡用牛刀。所以我们这次直接从离散的问题搞起,然后把高斯过程逆推出来。

这篇博客的主要目的是解释高斯过程回归这个主意是怎么想出来的,模型多了去了,为毛要用它。

这篇博客次要目的是我买了一个surface pro 2 , 我想看看好不好用。(答案是好用)

这篇博客有两个彩蛋,一个是揭示了高斯过程回归和Ridge回归的联系,另一个是介绍了贝叶斯优化具体是怎么搞的。后者其实值得单独写一篇博客,我在这里就是做一个简单介绍好了,但没准就不写了,想想就累。

  •  先说一说 高斯过程回归 的 Intuition:

假设有一个未知的函数f  : R–> R ,

在训练集中,我们有3个点 x_1, x_2, x_3,   以及这3个点对应的结果,f1,f2,f3. (如图) 这三个返回值可以有噪声,也可以没有。我们先假设没有。

so far so good. 没什么惊讶的事情。

高斯过程回归的关键假设是:

给定 一些  X 的值,我们对  Y 建模,并假设 对应的这些 Y 值 服从 联合正态分布!

(更正式的定义后面会说到)

换言之,对于上面的例子,我们的假设是:

一般来说,这个联合正态分布的均值向量不用操心,假设成0 就蛮好。(讲到后面你就知道为什么了)

所以关键是,这个模型的 协方差矩阵K 从哪儿来。

为了解答这个问题,我们进行了另一个重要假设:

如果两个x 比较相似(eg, 离得比较近),那么对应的y值的相关性也就较高。换言之,协方差矩阵是 X 的函数。(而不是y的函数)

具体而言,对于上面的例子,由于x3和x2离得比较近,所以我们假设 f3和f2 的correlation 要比 f3和f1的correlation 高。

话句话说,我们可以假设协方差矩阵的每个元素为对应的两个x值的一个相似性度量:

那么问题来了,这个相似性怎么算?如何保证这个相似性度量所产生的矩阵是一个合法的协方差矩阵?

好,现在不要往下看了,你自己想3分钟。你也能想出来的。 提示:合法的协方差矩阵就是 (symmetric) Positive Semi-definite Matrix

(。。。。。。。。。。。。思考中)

好了时间到。

答案: Kernel functions !

如果你了解SVM的话,就会接触过一个著名的Mercer Theorem,(当然如果你了解泛函分析的话也会接触过 ),这个M定理是在说:一个矩阵是Positive Semi-definite Matrix当且仅当该矩阵是一个Mercer Kernel .

所以我们在svm里用过的任何Kernel都能拿过来用!

举个栗子,在高斯过程回归里,一种非常常见的Kernel就是SVM里面著名的高斯核(但是为了让命名不是那么混淆,文献中一般把这个Kernel称作 squared exponential kernel.

具体而言就是

好了,现在可以做回归分析了:

如果我们现在又有了一个新的点 x*

这个新的点对应的f* 怎么求?(如下图)

根据假设,我们假设 f* 和 训练集里的  f1, f2, f3 同属于一个 (4维的)联合正态分布!

也就是说,不仅 f1,f2,f3属于 一个3 维的联合正态分布(参数可以算出来),而且 f* 和 f1,f2,f3属于(另一个)4维的联合正态分布,用数学的语言来表达就是:

首先我们来看一看,这个4 x 4 的 矩阵能不能算出来:

黄色的大K,是依据训练集的3维联合分布算出来的,绿色的K*, 是测试点x* 分别和每一个训练集的x 求出来的。所以整个联合分布我们都知道了。

接下来的事情就好办了,我们既然已经知道(f,f*)的联合分布P(f, f*)的所有参数, 如何求p(f*) ?好消息是这个联合分布是正态的,我们直接用公式就能搞出来下面的结果(using the marginalization  property):

不难求出f* 隶属于一个1维的正态分布, 参数是:

所以这是一种贝叶斯方法,和OLS回归不同,这个方法给出了预测值所隶属的整个(后验)概率分布的。再强调一下,我们得到的是f* 的整个分布!不是一个点估计,而是整个分布啊同志们。

In addition, 不仅可以得到  f*这一个点的分布,我们对这个未知的 函数 也可以进行推断!换言之,如果把一个函数想成一个变量,那么高斯过程回归可以求出这个函数的分布来。(distribution over functions)

不幸的是,我们的计算机只能存储离散的数据,怎么表示一个连续的函数呢?

好办,我们对一个区间里面均匀地硬造出来1万个测试点x*, 然后求出这些测试点和训练集所对应的y(一个巨高维的向量)的联合分布,然后在这个巨高维的联合分布里采样一次,就得到了函数的(近似的)一个样本。

比如训练集就三个点,测试集1万个x,图中的每一个红点就分别是这些点f* 的均值,(当点很多的时候,就可以假设是一个“连续”的函数了)而蓝色的线代表一个或两个标准差的bound.

我们如果从这个分布中采样10次,就可以得到10个巨高维的向量,也就是从这个后验概率中sample出来的10个函数的sample.  plot出来长这个样子:

含有已知数据(训练集)的地方,这些函数都离的很近(variance很低),没有数据的时候,这个spread就比较大。

也许你会问:我为毛要搞出来函数的分布?我为毛要关心这个variance. 在很多问题中,我们不仅仅需要知道预测值的点估计,而且要知道这个估计有多少信心在里面(这也是贝叶斯方法的好处之一)

举个例子:Multiple Bandit Problem

假设 我们已经有了几个油井,每个油井的价值不一样,我们在这个二维平面上,利用高斯过程回归,对每一个地理位置估计一个该位置对应的出油量。

而开发每一口井是有成本的,在预算有限的情况下,如果想尽可能少地花钱,我们就需要定义一个效益函数,同高斯过程回归的预测结果相结合,来指导我们下一次在哪儿打井。这个效益函数往往是 预测值 和  方差 的一个函数。

以上这个例子,就是高斯过程回归在贝叶斯优化中的一个典型应用。有时间专门写一篇。

  • 好了,现在终于可以讲一讲高斯过程了。

高斯过程是在函数上的正态分布。(Gaussian distribution over functions)

具体而言就是

我们具体用的时候,模型假设是酱紫的:

我们观察到一个训练集 D

给定一个测试集 X*  ( X* 是一个 N* x D 的矩阵, D是每一个点的维度)我们希望得到 一个 N* 维的预测向量 f*. 高斯过程回归的模型假设是

然后根据贝叶斯回归的方法,我们可以求出来 f*的后验概率:

This is it. 要啥有啥了。

下面着重说一下有噪声情况下的结果,以及此情况下和Ridge Regression的神秘联系。

当观测点有噪声时候,即, y = f(x) + noise, where noise ~N(0, sigma^2)

我们有

发现没,唯一区别就是 K 变成 了 Ky,也就是多加了一个sigma。

这个很像是一种regularization. 确实如此。

  • 好了,下面就说说这个 GPR的  insight,这个模型到底想干什么

如果只有一个测试点,那么输出的f* 就是隶属于一个1维的正态分布了,具体而言:

再看,我们回想一下Ridge Regression (小编注:下图argmax应为argmin

我们仔细观察一下上面那个蓝色的框框

所以说,ridge回归是一种最最最最简单的高斯过程回归,核函数就是简单的点积!

而高斯过程的核函数可以有很多,除了上面提到的squared exponential, 有整整一本书都在讲各种kernel和对应的随机过程

所以高斯过程是一个非常包罗万象的根基,类似于小无相功。

最后推荐一个网站

http://www.gaussianprocess.org/

是关于高斯过程的参考资料的最全面的一个网站。

么么哒。

转载请注明:《 说说高斯过程回归 | 我爱计算机 

转载:说说高斯过程回归相关推荐

  1. python高斯噪声怎么去除_高斯过程和高斯过程回归

    本文未经允许禁止转载,谢谢合作. 本文我们介绍高斯过程及其在机器学习中应用的一个例子--高斯过程回归. 高斯过程在语音合成中有广泛的应用,我计划在之后的文章中介绍一些应用,但本节我们重点讨论相关的基础 ...

  2. 学习笔记之高斯过程回归(含代码):连续无限空间上建模的超级武器

    在这个万物皆可"Machine Learning"的时代,各个研究领域都想和"ML"沾点边,好像论文里有了"-with machine learnin ...

  3. python 高斯烟羽模型_GPR(高斯过程回归)详细推导

    GPR(高斯过程回归)详细推导 一.综述 GPR来源于线性模型,有两种方式可以推导出GPR,一种是weight space view,另外一种是function space view.两者考察方式假设 ...

  4. 高斯过程回归python_基于python的高斯过程回归训练集数据扩充

    我正在用scikit学习研究高斯过程回归问题.为了进行预测,我有这样的数据集,它包含传感器在三维坐标系中的10个不同位置:例如Sensor1 coords: [[ 30.1678 -173.569 7 ...

  5. ​使用高斯过程回归指导网络轻量化

    论文标题:Model Rubik's Cube:Twisting Resolution, Depth and Width for TinyNets(NeurIPS 2020) 论文地址:https:/ ...

  6. rbf核函数_高斯过程回归础(使用GPy和模拟函数数据集)

    为什么要了解高斯过程呢?因为不了解高斯过程就不能聊贝叶斯优化. 假设有这么一个函数: .现在有训练的数据y和一堆X.然后来了一个新的X让你用既有的数据去预测者个新的X所对应的y. 高斯过程(回归)的思 ...

  7. 高斯过程回归python_scikit-learn中的多输出高斯过程回归

    好吧,你无意中碰上了冰山...... 作为前奏,让我们明确指出方差和标准差的概念仅适用于标量变量;对于矢量变量(比如你自己的3d输出),方差的概念不再有意义,而是使用协方差矩阵(Wikipedia,W ...

  8. 高斯过程回归(Gaussian Process Regression) 粗理解

    转自:高斯过程回归 (Gaussian Process Regression) 学习路线 - 知乎 一个写高斯过程不错的帖子: 贝叶斯优化 (上) 高斯过程 - 知乎 贝叶斯优化 (下) 高斯过程 - ...

  9. Gaussian Processes Regression(GPR) 高斯过程回归 Matlab 实现

    高斯过程回归(GPR)的matlab 实现, Matlab 为实现高斯过程回归提供了接口函数 fitrgp, 详细参考fitrgp官方文档 非常详细[4] 语法: gprMdl = fitrgp(tb ...

最新文章

  1. Collection集合List、Set
  2. kalilinux安装VMware Tools(水文)
  3. ERP成分简介--听觉感觉反应
  4. axure小程序模板_微信小程序模板案例收集
  5. QT的QWriteLocker类的使用
  6. 查看selenium python的api小记录
  7. 如何在React Native中使用react-navigation 5处理导航
  8. [html] http中的301、302、307、308有什么区别?
  9. HDU-3729 二分匹配 匈牙利算法
  10. 三、PHP框架Laravel学习笔记——路由参数、重定向、视图
  11. mysql语句数据库_数据库的Mysql语句
  12. 搭建Android的jenkins持续集成环境
  13. oracle的错误代码如何查看对应的错误信息
  14. 模仿王者荣耀的实时阴影
  15. [剑指offer] 66. 机器人的运动范围
  16. 爬虫:Python爬虫学习笔记之网页解析基础——爬取360导航栏目
  17. creator qt 字体太小_QtCreator的一些自定义代码字体和颜色
  18. 农业银行网银证书的控件被阻止的解…
  19. Python实现双色球随机选号
  20. 74LS138-三人表决电路

热门文章

  1. 【JDK7】新特性(2) 语法
  2. android-轻松监听来电和去电
  3. 1043 Is It a Binary Search Tree
  4. 1084 Broken Keyboard
  5. java培训基础知识都学哪些
  6. Luogu P1082 同余方程(NOIP 2012) 题解报告
  7. 推荐使用的几款Java常用基础工具库
  8. make -j8以及linux下查看cpu的核数
  9. 如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)
  10. T extends Serializable这是什么意思呢?看明白这个,你的问题就自然而然的明白了!...