高斯核函数参数确定_高斯过程

之前看过高斯过程(GP),不过当时也没太看懂,最近花时间认真研究了一下,感觉总算是明白咋回事了,本文基于回归问题解释GP模型的思想和方法。文中的想法是自己思考总结得来,并不一定准确,也可能存在错误性。

为什么要用GP?

回顾一下我们之前在解决回归问题时,就拿线性回归举例,我们为了学习映射函数,总是把函数参数化,例如假设

equation?tex=f%28%5Cmathbf+x%29+%3D+%5Cmathbf+w%5E%7B%5Crm+T%7D%5Cmathbf+x ,然后计算参数
equation?tex=%5Cmathbf+w 的后验分布,把参数估计出来之后,就得到了我们想要学习的函数,接着就可以用这个函数去做预测了。

但是有时候我们并不知道数据到底用什么形式的函数去拟合比较好(是1次的,2次的还是10次的?)。这个时候高斯过程(GP)就闪亮登场了,GP说:“我不需要用参数去刻画函数,你就告诉我训练数据是什么,你想要预测哪些数据,我就能给你预测出结果。“这样一来,我们就省去了去选择刻画函数参数的这样一个过程。

GP是怎么来的?

那么GP是怎么做到的呢?我们先来看这样一件有趣的事情:

假设我们的函数定义域和值域都是

equation?tex=%5Cmathbf+R ,那么如果你的训练集是包含了所有定义域的,那么这个函数
equation?tex=%5Cmathbf+f%5E%2A 我们就得到了,你给任何一个点,我都能通过查表的方式告诉你结果是多少。第二种情况我们的训练集中缺少了
equation?tex=%5C%7B1%2C2%2C3%2C4%5C%7D 这四个点,并且这四个点就是我们需要进行预测的点,如果我们可以通过某种方式建立一个4维的概率分布
equation?tex=p%28%5Cmathbf%7Bf1%2Cf2%2Cf3%2Cf4%7D%29 ,其中
equation?tex=%28%5Cmathbf+%7Bf1%2Cf2%2Cf3%2Cf4%7D%29 分别代表
equation?tex=%5C%7B1%2C2%2C3%2C4%5C%7D 的预测值,那么我们是不是就可以就可以利用这个概率分布,找到对应的概率最高的点把最终的结果给估计出来。

然而,事实上虽然很多实际问题(比如房价的预测),它的定义域和值域都是

equation?tex=%5Cmathbf+R (或者是某个连续的区间),但是我们的训练数据是有限的,而基于这些训练数据,我们要对整个实数域进行预测,如果我们继续利用上面的思想的话,我们需要建立一个无穷维度的概率分布(因为我们需要进行预测的数据点事无穷个的),这显然不可能,不过庆幸的是,在每一次我们需要进行预测的时候,我们所需要进行预测的数据是有限的。假设有N个训练数据
equation?tex=%28%5Cmathbf+X%2C%5Cmathbf+Y%29 ,有N*个需要进行预测的数据
equation?tex=%5Cmathbf+X%5E%2A ,
equation?tex=%5Cmathbf+X_0 表示
equation?tex=%28%5Cmathbf+X%2C%5Cmathbf+X%5E%2A%29 ,那么我们最终其实就是希望得到
equation?tex=p%28%5Cmathbf+f%5E%2A%29(
equation?tex=%5Cmathbf+f%5E%2A 代表了
equation?tex=%5Cmathbf+X%5E%2A 所有预测值的变量的集合)。

高斯过程(GP)

下面我们就开始正式的介绍高斯过程(GP),它是怎么得到这个

equation?tex=p%28%5Cmathbf+f%5E%2A%29,然后去做预测的。在GP中,首先基于训练数据和测试数据,定义了基于定义域
equation?tex=%5Cmathbf+X_0的函数的概率分布

equation?tex=+++p%28%5Cmathbf+f_0%7C%7B%5Cmathbf+X%7D_0%29+%3D+%5Cmathcal+N%28%5Cmathbf+f_0%7C%5Cboldsymbol%5Cmu_0%2C%5Cmathbf+K_0%29%29

其中

equation?tex=+++%5Cboldsymbol%5Cmu_0+%3D+m%28%5Cmathbf+X_0%29%2C%5B%5Cmathbf+K_0%5D_%7Bi%2Cj%7D+%3D+%5Ckappa%28%5B%5Cmathbf+X_0%5D_i%2C%5B%5Cmathbf+X_0%5D_j%29
equation?tex=%5Ckappa 是正定的核函数。
equation?tex=%5Cmathbf+f_0 代表了
equation?tex=%5Cmathbf+X_0 所有预测值的变量的集合。这里有一个关键的思想,如果核函数认为两个输入是非常相似的,那么函数给出的输出值也会非常的相似。(在这样的刻画中,我们发现
equation?tex=%5Cboldsymbol%5Cmu_0 其实好像并没有太大的作用,事实上,我们通常令
equation?tex=m%28%5Cmathbf+x%29+%3D+0 )。这个定义总体给出了三个信息:
  1. 在本次训练中,我们的定义域是
    equation?tex=%5Cmathbf+X_0
  2. 在这个定义域中,如果
    equation?tex=%5Cmathbf+x_i%2C%5Cmathbf+x_j 基于核函数是非常接近的,那么你们的输出值也会非常接近。
  3. 我们是用高斯分布去进行刻画(用高斯的好处,至少有一点条件概率密度函数很好算)。

我们把上面的概率分布展开:

equation?tex=%5Cleft%28%5Cbegin%7Barray%7D%7Bl%7D+%7B%5Cmathbf%7Bf%7D%7D+%5C%5C+%7B%5Cmathbf%7Bf%7D_%7B%2A%7D%7D+%5Cend%7Barray%7D%5Cright%29+%5Csim+%5Cmathcal%7BN%7D%5Cleft%28%5Cleft%28%5Cbegin%7Barray%7D%7Bl%7D+%7B%5Cboldsymbol%7B%5Cmu%7D%7D+%5C%5C+%7B%5Cboldsymbol%7B%5Cmu%7D_%7B%2A%7D%7D+%5Cend%7Barray%7D%5Cright%29%2C%5Cleft%28%5Cbegin%7Barray%7D%7Bll%7D+%7B%5Cmathbf%7BK%7D%7D+%26+%7B%5Cmathbf%7BK%7D_%7B%2A%7D%7D+%5C%5C+%7B%5Cmathbf%7BK%7D_%7B%2A%7D%5E%7BT%7D%7D+%26+%7B%5Cmathbf%7BK%7D_%7B%2A+%2A%7D%7D+%5Cend%7Barray%7D%5Cright%29%5Cright%29

其中

equation?tex=%5Cmathbf%7BK%7D%3D%5Ckappa%28%5Cmathbf%7BX%7D%2C+%5Cmathbf%7BX%7D%29+%5Ctext+%7B+is+%7D+N+%5Ctimes+N%2C+%5Cmathbf%7BK%7D_%7B%2A%7D%3D%5Ckappa%5Cleft%28%5Cmathbf%7BX%7D%2C+%5Cmathbf%7BX%7D_%7B%2A%7D%5Cright%29+%5Ctext+%7B+is+%7D+N+%5Ctimes+N_%7B%2A%7D%2C+%5Ctext+%7B+and+%7D+%5Cmathbf%7BK%7D_%7B%2A+%2A%7D%3D%5Ckappa%5Cleft%28%5Cmathbf%7BX%7D_%7B%2A%7D%2C+%5Cmathbf%7BX%7D_%7B%2A%7D%5Cright%29+%5Ctext+%7B+is+%7D+N_%7B%2A%7D+%5Ctimes+N_%7B%2A%7D

利用高斯分布的性质(通过联合分布计算条件分布),我们可以得到

equation?tex=%5Cbegin%7Baligned%7D+p%5Cleft%28%5Cmathbf%7Bf%7D_%7B%2A%7D+%7C+%5Cmathbf%7BX%7D_%7B%2A%7D%2C+%5Cmathbf%7BX%7D%2C+%5Cmathbf%7Bf%7D%5Cright%29+%26%3D%5Cmathcal%7BN%7D%5Cleft%28%5Cmathbf%7Bf%7D_%7B%2A%7D+%7C+%5Cboldsymbol%7B%5Cmu%7D_%7B%2A%7D%2C+%5Cmathbf%7B%5CSigma%7D_%7B%2A%7D%5Cright%29+%5C%5C+%5Cboldsymbol%7B%5Cmu%7D_%7B%2A%7D+%26%3D%5Cboldsymbol%7B%5Cmu%7D%5Cleft%28%5Cmathbf%7BX%7D_%7B%2A%7D%5Cright%29%2B%5Cmathbf%7BK%7D_%7B%2A%7D%5E%7BT%7D+%5Cmathbf%7BK%7D%5E%7B-1%7D%28%5Cmathbf%7Bf%7D-%5Cboldsymbol%7B%5Cmu%7D%28%5Cmathbf%7BX%7D%29%29+%5C%5C+%5Cboldsymbol%7B%5CSigma%7D_%7B%2A%7D+%26%3D%5Cmathbf%7BK%7D_%7B%2A+%2A%7D-%5Cmathbf%7BK%7D_%7B%2A%7D%5E%7BT%7D+%5Cmathbf%7BK%7D%5E%7B-1%7D+%5Cmathbf%7BK%7D_%7B%2A%7D+%5Cend%7Baligned%7D

这样我们计算出了我们希望得到的

equation?tex=p%28%5Cmathbf+f%5E%2A%29。至此为止,整个GP就结束了。关于GP那么它有什么优点呢,我认为有两点:
  1. 这一点也是我们上面就说过的,GP是无参的,对于任何一组数据,你不需要知道他的结构是什么,你也不需要去用参数刻画它函数的样子,GP就可以帮你做预测。
  2. GP它刻画出了函数的概率分布。这个非常有用。回顾之前的线性回归的方法,当你把参数
    equation?tex=%5Cmathbf+w 估计出来后,你的函数就确定了,接下来我拿出任何一个数,你都会“毫无感情的”给我一个预测值。但是GP不一样,当我们知道我们预测函数的不确定度(不确定度很高,这个预测的结果就不可靠)之后,我们能探索最不可能实现高效训练的数据区域。这也是贝叶斯优化背后的主要思想。下面这句话我觉得写得非常贴切:如果你给我几张猫和狗的图片,要我对一张新的猫咪照片分类,我可以
    很有信心地给你一个判断。但是,如果你给我一张鸵鸟照片,强迫我说出它是猫还是狗,我就只能信心全无地预测一下。——Yarin Gal。

有噪声观测的情况下

在有噪观测的情况下,我们假设观测模型是这样的

equation?tex=y%3Df%28%5Cmathbf%7Bx%7D%29%2B%5Cepsilon,其中
equation?tex=%5Cepsilon+%5Csim+%5Cmathcal%7BN%7D%5Cleft%280%2C+%5Csigma_%7By%7D%5E%7B2%7D%5Cright%29 ,那么观测的核函数则更新为
equation?tex=%5Cmathbf%7BK%7D%2B%5Csigma_%7By%7D%5E%7B2%7D+%5Cmathbf%7BI%7D_%7BN%7D+%5Ctriangleq+%5Cmathbf%7BK%7D_%7By%7D (假设不同观测之间是独立的),基于这样的假设,联合概率分布和条件概率分布分别是:

equation?tex=%5Cleft%28%5Cbegin%7Barray%7D%7Bl%7D+%7B%5Cmathbf%7By%7D%7D+%5C%5C+%7B%5Cmathbf%7Bf%7D_%7B%2A%7D%7D+%5Cend%7Barray%7D%5Cright%29+%5Csim+%5Cmathcal%7BN%7D%5Cleft%28%5Cmathbf%7B0%7D%2C%5Cleft%28%5Cbegin%7Barray%7D%7Bll%7D+%7B%5Cmathbf%7BK%7D_%7By%7D%7D+%26+%7B%5Cmathbf%7BK%7D_%7B%2A%7D%7D+%5C%5C+%7B%5Cmathbf%7BK%7D_%7B%2A%7D%5E%7BT%7D%7D+%26+%7B%5Cmathbf%7BK%7D_%7B%2A+%2A%7D%7D+%5Cend%7Barray%7D%5Cright%29%5Cright%29
equation?tex=%5Cbegin%7Baligned%7D+p%5Cleft%28%5Cmathbf%7Bf%7D_%7B%2A%7D+%7C+%5Cmathbf%7BX%7D_%7B%2A%7D%2C+%5Cmathbf%7BX%7D%2C+%5Cmathbf%7By%7D%5Cright%29+%26%3D%5Cmathcal%7BN%7D%5Cleft%28%5Cmathbf%7Bf%7D_%7B%2A%7D+%7C+%5Cboldsymbol%7B%5Cmu%7D_%7B%2A%7D%2C+%5Cmathbf%7B%5CSigma%7D_%7B%2A%7D%5Cright%29+%5C%5C+%5Cboldsymbol%7B%5Cmu%7D_%7B%2A%7D+%26%3D%5Cmathbf%7BK%7D_%7B%2A%7D%5E%7BT%7D+%5Cmathbf%7BK%7D_%7By%7D%5E%7B-1%7D+%5Cmathbf%7By%7D+%5C%5C+%5Cboldsymbol%7B%5CSigma%7D_%7B%2A%7D+%26%3D%5Cmathbf%7BK%7D_%7B%2A+%2A%7D-%5Cmathbf%7BK%7D_%7B%2A%7D%5E%7BT%7D+%5Cmathbf%7BK%7D_%7By%7D%5E%7B-1%7D+%5Cmathbf%7BK%7D_%7B%2A%7D+%5Cend%7Baligned%7D

核函数参数的影响

那么核函数对GP有什么影响呢,假设我们选择SE核函数:

equation?tex=%5Ckappa_%7By%7D%5Cleft%28x_%7Bp%7D%2C+x_%7Bq%7D%5Cright%29%3D%5Csigma_%7Bf%7D%5E%7B2%7D+%5Cexp+%5Cleft%28-%5Cfrac%7B1%7D%7B2+%5Cell%5E%7B2%7D%7D%5Cleft%28x_%7Bp%7D-x_%7Bq%7D%5Cright%29%5E%7B2%7D%5Cright%29%2B%5Csigma_%7By%7D%5E%7B2%7D+%5Cdelta_%7Bp+q%7D
equation?tex=%5Cdelta_%7Bpq%7D 表示p=q时取1,否则取0)

这个核函数有三个参数,分别是

equation?tex=%5Cell
equation?tex=%5Csigma_%7Bf%7D%5E%7B2%7D
equation?tex=%5Csigma_%7By%7D%5E%7B2%7D ,分别控制着水平尺度,垂直尺度,以及噪声的方差。通过三幅图我们来看看这三个参数是怎么控制预测的结果的:

f732303ebedf4a2b58b032f6e36f3a15.png

三幅图的超参数

equation?tex=%5Cleft%28%5Cell%2C+%5Csigma_%7Bf%7D%2C+%5Csigma_%7By%7D%5Cright%29 分别是:
equation?tex=%28a%29+%281%2C1%2C0.1%29%2C+%28b%29+%280.3%2C0.108%2C0.00005%29%2C+%28c%29+%283.0%2C1.16%2C0.89%29 。(只改变
equation?tex=%5Cell ,其他的参数是通过优化边际似然函数得到的)

我们可以看到(a)图整体看上去是估计的比较好的,(b)图中,减小了

equation?tex=%5Cell ,我们发现图变得弯弯曲曲的,而且一旦预测的数据点稍微远离训练的数据点,这个不确定度就大大的上升(因为只要输入的距离稍微大一点点,核函数就认为它们已经非常不相似了)。(c)图中,
equation?tex=%5Cell 为3,函数看上去更加的平滑了,但是拟合的效果就显得很差。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp光标自动定义到文本框_特检自动化行吊静力检测方案

主要测量功能使用徕卡测量开发的Windows版数据传输软件,通过蓝牙连接徕卡DISTO,经过简单的测量周期设置,即可实现自动化的距离检测。测量数据还可以输出Excel,甚至可以实时发送至PC运行的第三方软件中,这么强大的软件还…

安装python时需要勾选_一体化污水处理设备安装时需要注意事项

一体化污水处理设备用于处理生活污水和低浓度有机污水,它基本上采用机电完全封闭的结构,不需要专业人员进行管理。它方便且易于清洁,因此引起了很多关注。一体化污水处理设备的安装方法通常为三种:地埋式,地上式和半地…

oracle驱动maven报错_在Maven仓库中添加Oracle JDBC驱动

由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库。一.首先要得到Oracle JDBC Driver2.通过Oracle的安装目录获得,位置在“{ORACLE_HOME}jdbclibojdbc14.jar”二.手动安装…

python3.6程序_python3.6如何生成exe程序

PyInstaller的原理简介PyInstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,和编译成真正的机器码完全是两回事,所以千万不要指望成打包成一个可执行文件会提高运行效率,相反可能会降低运行效率,好处就是在运…

java切片_ java中一个极其强悍的新特性Stream详解(非常实用)

java8中有两个非常有名的改进,一个是Lambda表达式,一个是Stream。如果我们了解过函数式编程的话,都知道Stream真正把函数式编程的风格引入到了java中。这篇文章由简入繁逐步介绍Stream。一、Stream是什么从名字来看,Stream就是一个…

java获取网络图片_有了这50套Java毕设项目(源码 案例),offer拿到手软,无偿分享...

简介:又到了开学季,不少人都很是烦恼,手把手教你做Java毕设项目,有教程视频源码100套随意选择,试试手!!列举其中2个系统大纲在线考试系统1.综述网络考试系统的项目背景及国内外发展现状&#xf…

linux将日期和日历信息追加到文件中_Linux常用指令

常用指令 1、帮助指令 man [指令或者配置文件] help 指令 2、文件目录类指令 1、pwd 功能:显示当前工作目录的绝对路径 2、ls [选项] [目录或者文件] 功能:列出文件名和目录使用:ls -l 以列表的形式显示信息ls -a …

一个搜索框多个按钮_网站搜索栏设计指南:要不要?怎么设计?

在网站的设计过程中,搜索栏是一个很容易被忽略的部分,但用户却依赖它来寻找特定的信息。由于搜索栏是网站中最常用的元素之一,所以搜索栏的设计对用户体验有着重要的影响。网站是否需要搜索栏?搜索栏使用背后的思维和心理是帮助用…

状态机设计的一般步骤_浅谈状态机

来源:公众号【ZYNQ】ID :FreeZynq整理 :李肖遥本文目录前言状态机简介状态机分类Mealy 型状态机Moore 型状态机状态机描述一段式状态机二段式状态机三段式状态机状态机优缺点总结扩展-四段式状态机01. 前言状态机是FPGA设计中一种非常重要、…

java中default_Java 中关于default 访问权限的讨论

Java中关于成员变量访问权限问题一般书中会给出如下表格:简单地描述一下表中的内容:用private 修饰的成员变量只能在类内部访问;用default修饰的成员变量可以再内部访问,也可以被同个包(同一目录)中的类访问;default修…

java 输出当月日历_java 实现打印当前月份的日历

实现当前日历的打印,当前日期用*来表示。关键得出这个月的第一天是星期几。基姆拉尔森计算公式W (d2*m3*(m1)/5yy/4-y/100y/400) mod 7在公式中d表示日期中的日数1,m表示月份数。y表示年数。注意1:在公式中有个与其它公式不同的地方&#xff…

xmlhttprequest 跨域_跨域资源共享(CORS)安全性

跨域资源共享(CORS)安全性背景 提起浏览器的同源策略,大家都很熟悉。不同域的客户端脚本不能读写对方的资源。但是实践中有一些场景需要跨域的读写,所以出现了一些hack的方式来跨域。比如在同域内做一个代理,JSON-P等。但这些方式都存在缺陷&…

java 图片识别 tess4j_图像文字识别(四):java调用tess4j识别图像文字

转自:https://blog.csdn.net/a745233700/article/details/80203340javajava调用tess4j识别图像文字Tesseract-OCR支持中文识别,而且开源和提供全套的训练工具,是快速低成本开发的首选。前面记录过在java中调用tesseract-orc,该方法…

sql in转换为join_同一个SQL语句,为啥性能差异咋就这么大呢?(1分钟系列)

《数据库允许空值,往往是悲剧的开始》一文通过explain来分析SQL的执行计划,来分析null对索引命中情况的影响,有不少朋友留言,问explain结果中的type字段,ref,ALL等不一样的值究竟是什么含义。今天花1分钟简…

java字符串笔试题_五道Java常见笔试题及答案汇总

1、String和StringBuffer的区别?答:Java平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行…

遥感原理与应用孙家炳_2.2遥感应用模型

章节概览遥感应用模型是遥感的一种定量化手段,通常在遥感领域有一个更广为人知的名词——定量遥感。但是定量遥感是一种方法模型而非技术手段,随着科学的发展,热门越来越体会到定量遥感的必要性。定量遥感的应用是十分广泛的,也是…

喜马拉雅 xm文件转m4a_喜马拉雅电台、课程语音如何转成文字?

今天看了一篇文章“AI面前人类一败涂地”就是说了AI的发展让所有的事情几乎都可以实现科技化,无需人工操作,工作效率还比人工要高很多。这样说来的确是这样。语音转换也是其中一门技术,人们现在对于语音的交流很多,比如社交软件的…

java 多重注解_Java注解-元数据、注解分类、内置注解和自定义注解

大家好,我是乐字节的小乐,上次说过了Java多态的6大特性|乐字节,接下来我们来看看Java编程里的注解。Java注解有以下几个知识点:元数据注解的分类内置注解自定义注解注解处理器Servlet3.0本文先介绍前面4个知识点:元数据…

酷狗音乐linux版_酷狗音乐概念版APP内测获用户好评:极简化,更高级

这两天在网上冲浪的时候,发现不少网友都在安利一个叫做“酷狗音乐概念版”的APP,难道是酷狗又在闷声搞大事了?搜了一下发现,原来是酷狗音乐概念版APP已经开始进入内测阶段,尝试着下载使用,果然发现“更酷更…

java 计算器类图_多态计算器(封装、继承、多态、简单工厂)

一.封装向对象程序设计中,一个非常重要的技术便是封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。这样做的好处在于可以使类内部的具体实现透明化&#xff…