原创 | 一文读懂高斯过程

6a78ec33df10705f660aed9bc3d89459.png

作者:贾恩东
本文约2700字,建议阅读9分钟
本文将使用通俗易懂的语言引导读者入门高斯过程。

高斯过程(Gaussian Process)是机器学习中一个相当基础的概念,本文中笔者将使用通俗的语言让读者入门高斯过程。

高斯过程,顾名思义,包含了高斯分布(Gaussian Distribution)和随机过程(Stochastic Process)。简单来说,高斯过程是一个无限维的高斯分布。

无限维,对于未接触过随机过程的读者们来说可能还是难以理解,我们可以先从一维的高斯分布说起。

一维的高斯分布,即:对于一个随机变量 X 来说,如果其概率密度函数(probability density function, PDF)如下形式:

6f118e054b1b5c976c359c4f0495ccea.png

使用Normal 符号,简单记为:

a354ba6c9c13663d876cff53fd0c0e3a.png

那么这个一维变量X 就服从一维高斯分布,这个高斯分布里有两个参数,均值 63f90774f36f8c86c31179563900cf66.png和方差3975ea7e8bdbeb128175f261e5d533b5.png

我们在下图中,展示了10个关于 X的采样,图中纵轴表示采样的值,横轴我们全部放在1的位置,表示这是从同一个变量中采样得到的。

import numpy as npimport matplotlib.pyplot as plt
n= 1         # 随机变量的维度n
m= 10       # 做了m次采样  
# 这里简单假设所有维度是独立的# 且每个维度上的均值为0,标准差为1# 所以协方差矩阵是一个单位矩阵mean= np.zeros(n)
cov= np.eye(n)
# 得到随机变量的采样值
f_random= np.random.multivariate_normal(mean, cov, m).T
# 把不同维度的值分别指定到对应的横轴上去
Xshow= np.linspace(1, n, n).reshape(-1,1)
# 开始绘图
plt.figure(figsize=(12,8))
plt.plot(Xshow, f_random, 'x', linewidth=1, markersize=5, markeredgewidth=2)
plt.show()

e67f963bc224867df770906dcc22ffd9.png

图1

多维的高斯分布,或者说,多元高斯分布(multivariate gaussian distribution),则是对于一维高斯分布的一个扩展。对于N维变量 X 来说,它本身是一个N维向量,f8b8d136bbcd17ed31e5e2129244ff32.png,因此它的参数不仅包括了每一个维度上的均值,还包括了每两个维度上的协方差。

这里为了示意,我们先简单画一个二元高斯分布的采样过程,而且我们先简单将这两个维度认为是独立的,即不同的维度协方差为0。如下图:

n= 2         # 随机变量的维度n
m= 10       # 做了m次采样  
# 这里简单假设所有维度是独立的# 且每个维度上的均值为0,标准差为1# 所以协方差矩阵是一个单位矩阵
mean= np.zeros(n)
cov= np.eye(n)
# 得到随机变量的采样值
f_random= np.random.multivariate_normal(mean, cov, m).T
# 把不同维度的值分别指定到对应的横轴上去
Xshow= np.linspace(1, n, n).reshape(-1,1)
# 开始绘图
plt.figure(figsize=(12,8))
plt.plot(Xshow, f_random, 'x', linewidth=1, markersize=5, markeredgewidth=2)
plt.show()

d291885854705881d270f960817dd06b.png

如果进一步增加采样点,并且将概率直观的用直方图标记出来,大概是如下的感受。

5d767c91325de95b9c8c1f23d412d4c2.png

如果我们继续增加维度N到3,4,...,看起来依然平平无奇,我们只是需要更多的均值和方差的参数需要事先指定(先验)。这里我们先不急拓展到无限维度,我们先想像这样一个场景。

班级里有10个学生,每个学生都参加了同一场考试。这些学生在同一场考试的得分刻画了这场考试的试卷难度。如果参加了第二场考试,依次类推...,我们把学生的数目当作采样次数,考试的种类当作随机变量的维度。那么上图就是10个学生在两场考试中的表现。

进一步,我们想观察同一个学生随不同考试的分数变化情况,我们做一个相邻维度的连接看看。

n = 2         # 考试次数n
m= 10       # m个学生 
# 这里简单假设所有维度是独立的# 且每个维度上的均值为0,标准差为1# 所以协方差矩阵是一个单位矩阵mean = np.zeros(n)
cov = np.eye(n)
# 得到随机变量的采样值
f_random = np.random.multivariate_normal(mean, cov, m).T
# 把不同维度的值分别指定到对应的横轴上去
Xshow = np.linspace(1, n, n).reshape(-1,1)
# 开始绘图
plt.figure(figsize=(12,8))
plt.plot(Xshow, f_random, '-x', linewidth=1, markersize=5, markeredgewidth=2)
plt.show()

0688409ca73e9e9e2671412b6b3a4834.png

这时,我们增加考试的场数到7(n=7),继续观察。

3955a8b23e0c3a488497b58b63ead785.png

感觉到哪里不对了吗? 如果仍然没有感觉,我们进一步增加考试的次数到30。 

07caf6a43a9c8c0f9e23f256ca0be851.png

这下应该感觉了哪里不对劲了吧。

那就是这个图不符合常识,为什么?学生的考试分数完全没有规律,不同学生没有明显的分数差距。

这是因为我们事先做的不同维度独立的假设太理想,事实上时间前后相邻的不同维度是通常不独立的。

这里我们使用一种协方差函数(径向基函数,Radial Basis Function,这里先不用深究,只需要知道是帮我们生成一种常见先验协方差的用的)生成多元高斯分布来替代之前的不同维度独立的多元高斯分布。

如下图。

def kernel(a, b):sqdist = np.sum(a**2,axis=1).reshape(-1,1) + np.sum(b**2,1) - 2*np.dot(a, b.T)return np.exp(-0.5 * sqdist)n = 30        # 考试次数n
m= 10       # m个学生 
# 这里假设所有维度不再独立# 每个维度上的均值为0# 协方差矩阵由kernel函数生成
mean = np.zeros(n)# 考虑数值的影响,重置横轴scale
Xshow = np.linspace(0, 1, n).reshape(-1,1)
cov  = kernel(Xshow, Xshow)
# 得到随机变量的采样值
f_prior = np.random.multivariate_normal(mean, cov, m).T# 开始绘图
plt.figure(figsize=(12,8))for i in range(m):plt.plot(Xshow, f_prior, '-x', linewidth=1)plt.show()

d5f2d94dca343266b5b2f78a07e81dae.png

这样看起来,有的学生分数在多数考试中均较低,有的学生分数在多数考试中均较高,还有持续进步和持续退步的学生。很合理!

这时候我们可以将维度推广到无限了。假如我们每一个时刻都有一个随机变量,当我们取连续的时刻(区别于之前的离散维度),就得到了无穷维度的高斯分布。值得注意的是,因为维度是无限的,对于所有维度,我们需要得到无穷多个先验的均值和一个无穷维度的协方差矩阵。但是为了简化这个描述,我们干脆使用函数来描述均值和协方差。

对于时刻t ,这个时刻的均值我们用函数取,称为均值函数,94d1d0ba499caf5d6ac9f28d2702930f.png

对于任意两个不同时刻t1和t2,这两个时刻上的协方差我们也用一个二元函数取,称为协方差函数或者核函数,cov(t1,t2 ) = k(t1,t2),之前用到的RBF函数是一种常用的核函数,形式为:

2b2e1ddf6bdbac01e4fdcf98be51abf9.png

其中08c943f149682590a066dbc3b3d6a0ee.png 和 l 是RBF函数的超参数。这个核函数看起来是合理的,因为当这两个不同时刻很接近时,这个协方差的值约大,相关性也就越大。

到这里我们对于高斯过程的简单介绍就结束了。

关于高斯过程的应用和其他领域相关之后有机会再给读者介绍。

编辑:黄继彦‍‍‍

欢迎留言,有机会与本文作者互动哦~

数据派研究部介绍

数据派研究部成立于2017年初,以兴趣为核心划分多个组别,各组既遵循研究部整体的知识分享实践项目规划,又各具特色:

算法模型组:积极组队参加kaggle等比赛,原创手把手教系列文章;

调研分析组:通过专访等方式调研大数据的应用,探索数据产品之美;

系统平台组:追踪大数据&人工智能系统平台技术前沿,对话专家;

自然语言处理组:重于实践,积极参加比赛及策划各类文本分析项目;

制造业大数据组:秉工业强国之梦,产学研政结合,挖掘数据价值;

数据可视化组:将信息与艺术融合,探索数据之美,学用可视化讲故事;

网络爬虫组:爬取网络信息,配合其他各组开发创意项目。

点击文末“阅读原文”,报名数据派研究部志愿者,总有一组适合你~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派THUID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

未经许可的转载以及改编者,我们将依法追究其法律责任。

595de273d0811677b474eb3ff2c8d9f5.png点击“阅读原文”加入组织~

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

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

相关文章

Python之Web开发中级教程----创建Django子应用

Python之Web开发中级教程----创建Django子应用 基于上一个教程的Django项目(可以先看上一集,链接如下:) https://mp.csdn.net/mp_blog/creation/editor/136724897 2.创建子应用 python manager.py startapp book admin.py&…

FPGA静态时序分析与约束(三)、读懂vivado时序报告

系列文章目录 FPGA静态时序分析与约束(一)、理解亚稳态 FPGA静态时序分析与约束(二)、时序分析 文章目录 系列文章目录前言一、时序分析回顾二、打开vivado任意工程2.1 工程布局路由成功后,点击vivado左侧**IMPLEMENT…

Oracle 19c 傻瓜式安装

1.创建用户和组: /usr/sbin/groupadd -g 54321 oinstall /usr/sbin/groupadd -g 54322 dba /usr/sbin/groupadd -g 54323 oper /usr/sbin/useradd -u 54321 -g oinstall -G dba,oper oracle 2.给oracle设置密码 passwd oracle 3.关闭防火墙和selinux systemctl s…

❤ css布局篇

❤ css布局篇 一、基础布局 &#xff08;1&#xff09;居中布局 ① 文字居中 <div class"div1">测试文字居中</div> body {margin: 0;padding: 0;padding: 10%; } .div1 {width: 100px;height: 100px;background: cadetblue;text-align: center; }te…

easyexcel读和写excel

请直接看原文: JAVA使用easyexcel操作Excel-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- 之前写过一篇《JAVA操作Excel》&#xff0c;介绍了jxl和poi读写Excel的实现&am…

C语言-写一个简单的Web服务器(三)

上次我们研究了如何将解析web前端的请求&#xff0c;本次内容里我们将服务器的内容响应到前端&#xff0c;让浏览器展示。 响应数据到前端 服务器将数据响应到前端有其必要的返回数据&#xff0c;其结构如下&#xff0c;中间\r\n为换行&#xff0c;这个在不同系统&#xff08;w…

SRS-220VDC-4Z-10A静态中间继电器 额定电压DC220V 四副转换触点 JOSEF约瑟

系列型号&#xff1a; SRS-24VDC-4Z-8A静态中间继电器&#xff1b;SRS-24VDC-4Z-10A静态中间继电器&#xff1b; SRS-24VDC-4Z-16A静态中间继电器&#xff1b;SRS-24VAC-4Z-8A静态中间继电器&#xff1b; SRS-24VAC-4Z-10A静态中间继电器&#xff1b;SRS-24VAC-4Z-16A静态中…

Gitee 实战配置

一、Gitee 注册帐号 官网&#xff1a;https://gitee.com点击注册按钮。填写姓名。填写手机号。填写密码。点击立即注册按钮 二、安装GIT获取公钥 1.官网下载git下载地址&#xff1a;https://git-scm.com/download/win 2.安装git&#xff0c;双击运行程序&#xff0c;然后一直下…

Ubuntu虚拟磁盘扩容

1、打开VMware 2、第二步&#xff1a;启动虚拟机后&#xff0c;安装gparted工具&#xff1a;sudo apt-get install gparted 3、第三步&#xff1a;查看设备disk自带工具 4、第四步&#xff1a;选项已经存在的/dev/sda2磁盘&#xff1a;从左到右进行操作“resize” 5、重启…

【MySQL】3. 库的操作

库的操作 1. 创建数据库 语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,create_specification] ...]create_specification:[DEFAULT] CHARACTER SET charset_name[DEFAULT] COLLATE collation_name说明&#xff1a; 大写的表示关键字 …

因聚而生 数智有为丨软通动力携子公司鸿湖万联亮相华为中国合作伙伴大会2024

3月14日&#xff0c;以“因聚而生 数智有为”为主题的“华为中国合作伙伴大会2024”在深圳隆重开幕。作为华为的重要合作伙伴和本次大会钻石级&#xff08;最高级&#xff09;合作伙伴&#xff0c;软通动力深度参与本次盛会&#xff0c;携前沿数智化技术成果和与华为的联合解决…

数据资产管理解决方案:构建高效、安全的数据生态体系

在数字化时代&#xff0c;数据已成为企业最重要的资产之一。然而&#xff0c;如何有效管理和利用这些数据资产&#xff0c;却是许多企业面临的难题。本文将详细介绍数据资产管理解决方案&#xff0c;帮助企业构建高效、安全的数据生态体系。 一、引言 在信息化浪潮的推动下&a…

移动云COCA架构实现算力跃升,探索人工智能新未来

近期&#xff0c;随着OpenAI正式发布首款文生视频模型Sora&#xff0c;标志着人工智能大模型在视频生成领域有了重大飞跃。Sora模型不仅能够生成逼真的视频内容&#xff0c;还能够模拟物理世界中的物体运动与交互&#xff0c;其核心在于其能够处理和生成具有复杂动态与空间关系…

【学习】感受野

感受野&#xff08;receptive field&#xff09;是指在神经网络中&#xff0c;某一层输出的特征图上的一个像素点对应输入图像的区域大小。在深度神经网络中&#xff0c;随着网络层数的增加&#xff0c;特征图的感受野也会逐渐增大。这是因为每一层的卷积操作都会扩大感受野。 …

nginx gzip性能优化 —— 筑梦之路

对比使用和不使用gzip static处理 1. 不使用 gzip static 时的 gzip 处理 如果你不使用 gzip_static 而只是 "gzip on"&#xff0c;它每次都会被压缩并发送。 虽然它实际上可能缓存在内存中&#xff0c;但传统观点是 "每次都会执行压缩处理&#xff0c;因此 CP…

机器学习 --- 模型评估、选择与验证

Java实训代码、答案&#xff0c;如果能够帮到您&#xff0c;希望可以点个赞&#xff01;&#xff01;&#xff01; 如果有问题可以csdn私聊或评论&#xff01;&#xff01;&#xff01;感谢您的支持 第1关&#xff1a;为什么要有训练集与测试集 1、下面正确的是&#xff1f;&…

人机交互三原则,网络7层和对应的设备、公钥私钥

人机交互三原则 heo Mandel提出了人机交互的三个黄金原则&#xff0c;它们强调了相似的设计目标&#xff0c;分别是&#xff1a; 简单总结为&#xff1a;控负持面–>空腹吃面 1&#xff0c;用户控制 2&#xff0c;减轻负担 3&#xff0c;保持界面一致 置用户于控制之下&a…

【Maven学习笔记】Maven入门教程(适合新手反复观看学习)

Maven学习笔记 Maven的简要介绍Maven的安装和配置Maven的安装Maven安装的常用配置 Maven的使用入门编写pom编写主代码编写测试代码打包和运行使用Archetype生成项目骨架 Maven核心概念的阐述坐标案例分析依赖依赖的范围传递性依赖依赖范围依赖调节可选依赖Maven依赖常用的技巧 …

网络通信与网络协议

网络编程是指利用计算机网络实现程序之间通信的一种编程方式。在网络编程中&#xff0c;程序需要通过网络协议(如 TCP/IP)来进行通信&#xff0c;以实现不同计算机之间的数据传输和共享。在网络编程中&#xff0c;通常有三个基本要素 IP 地址:定位网络中某台计算机端口号port:定…

Tomcat Session集群---会话绑定

实验配置&#xff1a; 7-1安装Nginx 7-2和7-3安装Tomcat 1.配置7-1 1.做负载均衡&#xff0c;反向代理 [rootlocalhost ~]# vim /etc/nginx/nginx.conf17 http {18 upstream tomcat {19 server 192.168.91.102:8080;20 server 192.168.91.103:8080;2…