高斯分布与高斯过程

news2024/12/30 3:42:13

一元高斯分布

我们从最简单最常见的一元高斯分布开始,其概率密度函数为:

p ( x ) = 1 σ 2 π e x p ( − ( x − μ ) 2 2 σ 2 ) p(x)=\frac{1}{\sigma\sqrt{2\pi}}exp(-\frac{(x-\mu)^2}{2\sigma^2}) p(x)=σ2π 1exp(2σ2(xμ)2)

其中 μ \mu μ σ \sigma σ分别表示均值和方差,这个概率密度函数曲线画出来就是我们熟悉的钟形曲线,均值和方差唯一地决定了曲线的形状。

多元高斯分布

从一元高斯分布推广到多元高斯分布,假设各维度之间相互独立

$p(x_1,x_2,\cdots,x_n)=\prod\limits_{i=1}^np(x_i)\
=\frac{1}{(2\pi)\frac{n}{2}}exp(-\frac{1}{2}[\frac{(x_1-\mu_1)2}{\sigma_12}+\frac{(x_2-\mu_2)2}{\sigma_22}+\cdots+\frac{(x_n-\mu_n)2}{\sigma_n^2}])
$

其中 μ 1 , m u 2 , ⋯   , μ 3 \mu_1,mu_2,\cdots,\mu_3 μ1,mu2,,μ3 σ 1 , σ 2 , ⋯   , σ 3 \sigma_1,\sigma_2,\cdots,\sigma_3 σ1,σ2,,σ3分别是第一维,第二维到第n维的均值和方差,对上式向量和举证表示,令

x − μ = [ x 1 − μ 1 , x 2 − μ 2 , ⋯   , x n − μ n ] T x-\mu=[x_1-\mu_1,x_2-\mu_2,\cdots,x_n-\mu_n]^T xμ=[x1μ1,x2μ2,,xnμn]T

K = [ σ 1 2 0 ⋯ 0 0 σ 2 2 ⋯ 0 ⋮ ⋮ ⋱ 0 0 0 0 σ n 2 ] K=\begin{bmatrix} \sigma_1^2&0&\cdots&0\\ 0&\sigma_2^2&\cdots&0\\ \vdots&\vdots&\ddots&0\\ 0&0&0&\sigma_n^2 \end{bmatrix} K= σ12000σ2200000σn2

σ 1 σ 2 ⋯ σ n = ∣ K ∣ 1 2 \sigma_1\sigma_2\cdots\sigma_n=\mid{K}\mid{^\frac{1}{2}} σ1σ2σn=∣K21

( x 1 − μ 1 ) 2 σ 1 2 + ( x 2 − μ 2 ) 2 σ 2 2 + ⋯ + ( x n − μ n ) 2 σ n 2 = ( x − μ ) T K − 1 ( x − μ ) \frac{(x_1-\mu_1)^2}{\sigma_1^2}+\frac{(x_2-\mu_2)^2}{\sigma_2^2}+\cdots+\frac{(x_n-\mu_n)^2}{\sigma_n^2}= (x-\mu)^TK^{-1}(x-\mu) σ12(x1μ1)2+σ22(x2μ2)2++σn2(xnμn)2=(xμ)TK1(xμ)

代入得到

p ( x ) = ( 2 π ) n − 2 ∣ K ∣ 1 − 2 e x p ( 1 − 2 ( x − μ ) T K − 1 ( x − μ ) ) p(x)=(2\pi)^{\frac{n}{-2}}\mid{K}\mid^{\frac{1}{-2}}exp(\frac{1}{-2}(x-\mu)^TK^{-1}(x-\mu)) p(x)=(2π)2nK21exp(21(xμ)TK1(xμ))

其中 μ ∈ R n \mu\in\mathbb{R}^n μRn是均值向量, K ∈ R n × n K\in\mathbb{R^{n\times{n}}} KRn×n为协方差矩阵,由于我们假设了各维度直接相互独立,因此 K K K是一个对角矩阵。在各维度变量相关时,上式的形式仍然一致,但此时协方差矩阵 不再是对角矩阵,只具备半正定和对称的性质。上式通常也简写为

x ∼ N ( μ , K ) x\sim{\mathcal{N}(\mu,K)} xN(μ,K)

无限元高斯分布

在多元高斯分布的基础上考虑进一步扩展,假设有无限多维呢?用一个例子来展示这个扩展的过程

假设我们在周一到周四每天的 7:00 测试了 4 次心率,如下图中 4 个点,可能的高斯分布如图所示(高瘦的那条)。这是一个一元高斯分布,只有每天 7: 00 的心率这个维度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在考虑不仅在每天的 7: 00 测心率(横轴),在 8:00 时也进行测量(纵轴),这个时候变成两个维度(二元高斯分布),如下图所示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

更进一步,如果我们在每天的无数个时间点都进行测量,则变成了下图的情况。注意下图中把测量时间作为横轴,则每个颜色的一条线代表一个(无限个时间点的测量)无限维的采样。当对每次对无限维进行采样得到无限多个点时,其实可以理解为我们采样得到了一个函数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当从函数的视角去看待采样,理解了每次采样无限维相当于采样一个函数之后,原本的概率密度函数不再是点的分布 ,而变成了函数的分布。这个无限元高斯分布即称为高斯过程。高斯过程正式地定义为:对于所有 x = [ x 1 , x 2 , ⋯   , x n ] x=[x_1,x_2,\cdots,x_n] x=[x1,x2,,xn] , f ( x ) = [ f ( x 1 ) , f ( x 2 ) , ⋯   , f ( x n ) ] f(x)=[f(x_1),f(x_2),\cdots,f(x_n)] f(x)=[f(x1),f(x2),,f(xn)] 都服从多元高斯分布,则称 f f f是一个高斯过程,表示为

f ( x ) ∼ N ( μ ( x ) , κ ( x , x ) ) f(x)\sim\mathcal{N}(\mu(x),\kappa(x,x)) f(x)N(μ(x),κ(x,x))

这里 μ ( x ) : R → R n × R n \mu(x):\mathbb{R}\rightarrow \mathbb{R}^n\times{\mathbb{R}^n} μ(x):RRn×Rn表示均值函数(Mean function),返回各个维度的均值; κ ( x , x ) : R n × R n → R n × n \kappa(x,x):\mathbb{R}^n\times\mathbb{R}^n\rightarrow\mathbb{R}^{n\times{n}} κ(x,x):Rn×RnRn×n为协方差函数 Covariance Function(也叫核函数 Kernel Function)返回两个向量各个维度之间的协方差矩阵。一个高斯过程为一个均值函数和协方差函数唯一地定义,并且一个高斯过程的有限维度的子集都服从一个多元高斯分布(为了方便理解,可以想象二元高斯分布两个维度各自都服从一个高斯分布)。

核函数(协方差函数)

核函数是一个高斯过程的核心,核函数决定了一个高斯过程的性质。核函数在高斯过程中起生成一个协方差矩阵(相关系数矩阵)来衡量任意两个点之间的“距离”。不同的核函数有不同的衡量方法,得到的高斯过程的性质也不一样。最常用的一个核函数为高斯核函数,也成为径向基函数 RBF。其基本形式如下。其中 σ \sigma σ l l l是高斯核的超参数。

K ( x i , x j ) = σ 2 e x p ( − ∥ x i − x j ∥ 2 2 l 2 ) K(x_i,x_j)=\sigma^2exp(-\frac{\parallel{x_i-x_j}\parallel_2^2}{l^2}) K(xi,xj)=σ2exp(l2xixj22)

高斯过程可视化

下图是高斯过程的可视化,其中蓝线是高斯过程的均值,浅蓝色区域 95% 置信区间(由协方差矩阵的对角线得到),每条虚线代表一个函数采样(这里用了 100 维模拟连续无限维)。左上角第一幅图是高斯过程的先验(这里用了零均值作为先验),后面几幅图展示了当观测到新的数据点的时候,高斯过程如何更新自身的均值函数和协方差函数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来我们用公式推导上图的过程。将高斯过程的先验表示为 f ( x ) ∼ N ( μ ( f ) , K f f ) f(x)\sim\mathcal{N}(\mu(f),K_{ff}) f(x)N(μ(f),Kff) ,对应左上角第一幅图,如果现在我们观测到一些数据 ( x ∗ , y ∗ ) (x^*,y^*) (x,y),并且假设 y ∗ y^* y f ( x ) f(x) f(x)服从联合高斯分布

[ f ( x ) y ∗ ] ∼ N ( [ μ f μ y ] , [ K f f K f y K f y T K y y ] ) \begin{bmatrix} f(x)\\ y^* \end{bmatrix} \sim\mathcal{N} \begin{pmatrix} \begin{bmatrix} \mu_f\\\mu_y \end{bmatrix} ,\begin{bmatrix} K_{ff}&K_{fy}\\K_{fy}^T&K_{yy} \end{bmatrix} \end{pmatrix} [f(x)y]N([μfμy],[KffKfyTKfyKyy])

其中 K f f = κ ( x , x ) , K f y = κ ( x , x ∗ ) , K y y = κ ( x ∗ , x ∗ ) K_{ff}=\kappa(x,x),K_{fy}=\kappa(x,x^*),K_{yy}=\kappa(x^*,x^*) Kff=κ(x,x),Kfy=κ(x,x),Kyy=κ(x,x),则有 f ∼ N ( K f y T K f f − 1 y + μ f , K y y − K f y T K f f − 1 K f y ) f\sim\mathcal{N}(K_{fy}^TK_{ff}^{-1}y+\mu_f,K_{yy}-K_{fy}^TK_{ff}^{-1}K_{fy}) fN(KfyTKff1y+μf,KyyKfyTKff1Kfy)

上述式子表明了给定数据 ( x ∗ , y ∗ ) (x^*,y^*) (x,y)之后函数的分布 f f f仍然是一个高斯过程,具体的推导可见 Gaussian Processes for Machine Learning。这个式子可以看出一些有趣的性质,均值 实际上是观测点 的一个线性函数,协方差项 的第一部分是我们的先验的协方差,减掉的后面的那一项实际上表示了观测到数据后函数分布不确定性的减少,如果第二项非常接近于 0,说明观测数据后我们的不确定性几乎不变,反之如果第二项非常大,则说明不确定性降低了很多。

上式其实就是高斯过程回归的基本公式,首先有一个高斯过程先验分布,观测到一些数据(机器学习中的训练数据),基于先验和一定的假设(联合高斯分布)计算得到高斯过程后验分布的均值和协方差。

简单高斯过程回归实现

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

红点是训练数据,蓝线是预测值,浅蓝色区域是 95% 置信区间。真实的函数是一个 cosine 函数,可以看到在训练数据点较为密集的地方,模型预测的不确定性较低,而在训练数据点比较稀疏的区域,模型预测不确定性较高。

超参数优化

上文提到高斯过程是一种非参数模型,没有训练模型参数的过程,一旦核函数、训练数据给定,则模型就被唯一地确定下来。但是核函数本身是有参数的,比如高斯核的参数 σ \sigma σ l l l ,我们称为这种参数为模型的超参数(类似于 k-NN 模型中 k 的取值)。

核函数本质上决定了样本点相似性的度量方法,进行影响到了整个函数的概率分布的形状。上面的高斯过程回归的例子中使用了 σ = 0.2 , l = 0.5 \sigma=0.2,l=0.5 σ=0.2,l=0.5 的超参数,我们可以选取不同的超参数看看回归出来的效果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从上图可以看出, l l l越大函数更加平滑,同时训练数据点之间的预测方差更小,反之 l l l越小则函数倾向于更加“曲折”,训练数据点之间的预测方差更大; σ \sigma σ 则直接控制方差大小, σ \sigma σ 越大方差越大,反之亦然。

如何选择最优的核函数参数呢?答案是最大化在这两个超参数下 y y y 出现的概率,通过最大化边缘对数似然(Marginal Log-likelihood)来找到最优的参数,边缘对数似然表示为

l o g p ( y ∣ σ , l ) = l o g N ( 0 , K y y ( σ , l ) ) logp(y|\sigma,l)=log\mathcal{N}(0,K_{yy}(\sigma,l)) logp(yσ,l)=logN(0,Kyy(σ,l))

将训练、优化得到的超参数、预测结果可视化如下图,可以看到最优的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

相关文章

2023年中职组“网络安全”赛项云南省竞赛任务书

2023年中职组“网络安全”赛项 云南省竞赛任务书 一、竞赛时间 总计:360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 A-5 服务加固…

python接口自动化测试 —— unittest框架suite、runner详细使用

test suite 测试套件,理解成测试用例集一系列的测试用例,或测试套件,理解成测试用例的集合和测试套件的集合当运行测试套件时,则运行里面添加的所有测试用例 test runner 测试运行器用于执行和输出结果的组件 test suite、tes…

HP OfficeJet Pro 8020 如何更换碳粉盒

环境: HP OfficeJet Pro 8020 问题描述: HP OfficeJet Pro 8020 如何更换碳粉盒 解决方案: 更换碳粉盒 更换所有墨水不足的碳粉盒或空碳粉盒。 1.打开前挡盖,然后提起碳粉盒检修门。 打开打印机门 2.等待笔架停止后再继续操作…

外贸人必备的跨境电商常见专有名词!

不管我们在做跨境电商运营、广告或者物流的时候总会遇到很多专有名词或者缩写,但我们接收信息又总是很零散的、不系统的。 所以这边为大家详细整理了常见的专有名词,大家可以保存下来不懂的时候实时查阅噢~ 01 什么是跨境电商 跨境电商是指分属不同关境…

【C++入门系列】——类和对象

​作者主页 📚lovewold少个r博客主页 ⚠️本文重点:C入门知识点以及类和对象的初步了解 😄每日一言:实践能力是自学能力最终转化为真正价值的根本。 目录 前言 auto关键字 auto关键字新用法 auto使用细节 auto与指针和引用结…

VisualStudio(VS)设置程序的版本信息(C-C++)

一、前言 在软件开发过程中,通常需要为生成的程序添加一些重要的元数据,如版本号、公司名称和版权信息。这些信息不仅可以提供对程序的更详细描述,还可以帮助用户了解程序的来源和使用限制。在 Visual Studio (以2017为例)中,可以…

大数据请把这个分离软件推给所有后期~

相信每个后期都要这样一个烦恼,怎样单独提取人声台词?怎么样提取背景音乐,今天就给大家推荐一款超实用的人声分离软件,可以在线提取人声或背景音乐,对于做后期的小伙伴们来说简直就是神器,再也不用到处找音…

C语言指针精简版(三)

目录 字符指针变量 剑指offer中经典题: 数组指针变量 ⼆维数组传参的本质 函数指针变量 typedef关键字 函数指针数组 什么是函数指针数组? 为什么要使用函数指针数组? 转移表 计算器的⼀般实现: 使用函数指针实现&…

MyBatisPlus(二十二)代码生成器

使用场景 使用代码生成器&#xff0c;根据数据库表&#xff0c;自动生成对应的 Entity&#xff0c;Mapper&#xff0c;Service&#xff0c;Controller 。 代码 依赖 两个依赖&#xff1a; 生成器依赖模板依赖 <dependency><groupId>com.baomidou</groupId&…

思维导图Xmind2023安装教程分享

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;xmind 获取 1、解压压缩包得到以下文件。 2、如果“winmm.dll”被系统删除不见&#xff0c;打开屏幕右下角处“windows安全中心”&#xff0c;在历史记录里将已删除的还原即可。 3、以管理员身份打开“Setup”。 4、…

Win10如何彻底关闭wsappx进程?

Win10如何彻底关闭wsappx进程&#xff1f;在Win10电脑中&#xff0c;用户看到了wsappx进程占用了大量的系统资源&#xff0c;所以想结束wsappx进程&#xff0c;提升电脑的运行速度。但是&#xff0c;用户们不知道彻底关闭掉wsappx进程的方法&#xff0c;那么接下来小编就给大家…

windows编译zlmediakit

开发环境搭建 使用visual studio 2022 打开360软件管家 &#xff0c;选择宝库&#xff0c;输入2022 点击安装 选择下图中的选择项目进行安装&#xff0c;安装路径可以修改为d盘 等待安装完成 打开源码进行编译 双击打开 选择打开文件夹 选择代码文件夹 配置如下&#xff…

视频播放音画同步处理

一、视频播放流程 播放一个视频&#xff0c;一般分一下几步完成 解复用&#xff08;Demux&#xff09;&#xff1a;在媒体文件中将音频数据、视频数据、字母数据分离出来。 二、播放参数说明 视频帧率&#xff1a;一秒钟需要显示的画面&#xff0c;比如25FPS&#xff0c;意思就…

sql注入的其他注入

1.宽字节注入 原因 绕过单双引号转义 ?id1 ?id1 1\ 服务器会把单引号转义&#xff0c;单引号由原来的定义字符串的特殊字符被转义为普通字符。 315c27 非常强烈的暗示 代码 单双引号转义 并且编码变成了gbk 上编码 表 这个是GBK编码表&#xff1a;https://…

可变参数模板+lambda

目录 可变参数模板 引入 介绍 展开参数包的方法 递归 逗号表达式 整体使用 emplace 介绍 ​编辑 使用 模拟实现 代码 示例 lambda 引入 介绍 格式 使用 传参 捕捉 原理 可变参数模板 引入 还记得c语言中的printf吗,可以传入任意数量的变量来打印,非常…

pytorch,tf维度理解RNN

input_t input_t.squeeze(1) 这行代码用于从 input_t 中去除尺寸为1的维度。在深度学习中&#xff0c;经常会出现具有额外尺寸为1的维度&#xff0c;这些维度通常是为了匹配模型的期望输入维度而添加的。 在这里&#xff0c;input_t可能具有形状 (batch_size, 1, feature_dim…

青否数字人SaaS系统5.0发布,支持真人接管实时驱动!

青否数字人SaaS系统5.0正式发布&#xff0c;提供口播视频批量制作7*24小时直播全套解决方案。同时直播间支持真人开麦/输入文字选择音色接管&#xff0c;实时驱动直播间数字人回复。 7*24小时直播 青否数字人客户端选择克隆好的数字人主播&#xff0c;克隆好的声音&#xff0…

实现vue项目和springboot项目前后端数据交互

1、安装node.js 太高版本的win7不支持 这里安装node-v12.16.2-x64.msi&#xff0c;指定安装位置后直接按下一步就可以。npm是node内置的工具 这里配置npm的镜像cnpm&#xff08;提高下载速度&#xff0c;以后用到npm的命令都可以用cnpm命令替换&#xff09;不指定cnpm版本使用…

Tuxera2023最新版本新功能特性

当您获得一台新 Mac 时&#xff0c;它只能读取 Windows NTFS 格式的 USB 驱动器。要将文件添加、保存或写入您的 Mac&#xff0c;您需要一个附加的 NTFS 驱动程序。Tuxera 的 Microsoft NTFS for Mac 是一款易于使用的软件&#xff0c;可以在 Mac 上打开、编辑、复制、移动或删…