必威体育Betway必威体育官网
当前位置:首页 > IT技术

透彻理解高斯过程Gaussian Process (GP)

时间:2019-08-28 08:12:03来源:IT技术作者:seo实验室小编阅读:57次「手机版」
 

高斯分布

透彻理解高斯过程Gaussian Process (GP)

一、整体说说

为了理解高斯过程,我们就首先需要了解如下预备知识,即:高斯分布(函数)、随机过程、以及贝叶斯概率等。明白了这些预备知识之后才能顺利进入高斯过程,了解高斯过程本质及其高斯过程描述方法。人们又将高斯过程与贝叶斯概率有机结合在一起,构造了强大的数学方法(或称模型),为人类提供解决日常生活工作的问题。特别是在人工智能领域更是意义非凡。为什么呢?

  1. 高斯过程模型属于无参数模型,相对解决的问题复杂度及与其它算法比较减少了算法计算量。
  2. 高斯模型可以解决高维空间(实际上是无限维)的数学问题,可以面对负杂的数学问题。
  3. 结合贝叶斯概率算法,可以实现通过先验概率,推导未知后验输入变量的后验概率。由果推因的概率。
  4. 高斯过程观测变量空间是连续域,时间或空间。
  5. 高斯过程观测变量空间是实数域的时候,我们就可以进行回归而实现预测。
  6. 高斯过程观测变量空间是整数域的时候(观测点是离散的),我们就可以进行分类。结合贝叶斯算法甚至可以实现单类分类学习(训练),面对小样本就可以实现半监督学习而后完成分类。面对异常检测领域很有用,降低打标签成本(小样本且单类即可训练模型)。

    所以说,我们快点进入高斯过程-贝叶斯概率算法模型吧,功能非凡。

    接下来慢慢展开学习之旅吧。

二、高斯分布(高斯函数)

https://blog.csdn.net/jorg_zhao/article/details/52687448

https://blog.csdn.net/zyttae/article/details/41086773

(一)一维高斯函数

一维高斯函数定义" role="presentation">

随机变量X" role="presentation">X服从一个位置参数为μ" role="presentation">μ、尺度参数为σ" role="presentation">σ的概率分布(正态分布),记为:

X∼N(μ,σ2)." role="presentation">XN(μ,σ2).

则其概率密度函数为

f(x)=1σ2πe−(x−μ)22σ2" role="presentation">f(x)=1σ2πe(xμ)22σ2

正态分布的数学期望值(或期望值)μ" role="presentation">μ等于位置参数,决定了分布曲线的位置;其方差σ2" role="presentation">σ2的开平方或标准差σ" role="presentation">σ等于尺度参数,决定了分布曲线的幅度。正态分布的概率密度函数曲线呈钟形,因此人们又经常称之为钟形曲线“bellcurve”" role="presentation">bellcurve

我们通常所说的标准正态分布是位置参数μ=0" role="presentation">μ=0,尺度参数σ=1" role="presentation">σ=1的正态分布(见下图中红色曲线)。

这里写图片描述

对于任意的实数a,b,c" role="presentation">a,b,c

a=1σ2π是曲线尖峰的高度,b=μ是尖峰中心的坐标,c=σ称为标准方差,表征的是bell钟状的宽度。钟形曲线下的总面积和永远为1" role="presentation">a=1σ2π线b=μc=σbell线1

  • 为什么用概率密度函数表示高斯正态分布的函数:这种方法能够表示随机变量每个取值有多大的可能性。其它方法我们这里不在描述了,如:累积分布函数,cumulant、特征函数、动差生成函数以及cumulant-生成函数。
  • 正态分布中一些值得注意的现象(量):

    1. 密度函数关于平均值μ" role="presentation">μ对称。
    2. 平均值与它的众数(statistical mode)以及中位数(median)同一数值。
    3. 函数曲线下68.268949%的面积在平均数左右的一个标准差范围内。
    4. 95.449974%的面积在平均数左右两个标准差2 \sigma的范围内。
    5. 99.730020%的面积在平均数左右三个标准差3 \sigma的范围内。
    6. 99.993666%的面积在平均数左右四个标准差4 \sigma的范围内。

这里写图片描述

其中:
μ=1m∑i=1mx(i)σ2=1m∑i=1m(x(i)−μ)2)" role="presentation">μ=1mi=1mx(i)σ2=1mi=1m(x(i)μ)2)
机器学习中,用于故障检测时,训练数据X" role="presentation">X是已知,而且不需要有标签,可以作为非监督学习训练。

高斯分布样例如下图(引自吴恩达课件):

一维高斯分布样例图(吴恩达)

注:机器学习中对于方差我们通常只除以m" role="presentation">m而非统计学中的m−1" role="presentation">m1(因为均值进去一个点)。这里顺便提一下,在实际使用中,到底是选择使用1m" role="presentation">1m还是1m−1" role="presentation">1m1其实区别很小,只要你有一个还算大的训练集,在机器学习领域大部分人更习惯使用这个版本的公式。这两个版本的公式在理论特性和数学特性上稍有不同,但是在实际使用中,他们的区别甚小,几乎可以忽略不计。

在异常检测中,利用如下策略判断异常

ifp(x){&#x003C;&#x03B5;,&#x5F02;&#x5E38;&#x2265;&#x03B5;,&#x6B63;&#x5E38;" role="presentation">ifp(x){<ε,异常ε,正常

  • 正态分布的一些性质:

    1. 如果X&#x223C;N(&#x03BC;,&#x03C3;2)" role="presentation">XN(μ,σ2),且a" role="presentation">ab" role="presentation">b是实数,那么aX+b&#x223C;N(a&#x03BC;+b,(a&#x03C3;)2)" role="presentation">aX+bN(aμ+b,(aσ)2) (参见期望值和方差).
    2. 如果X&#x223C;N(&#x03BC;X,&#x03C3;X2)" role="presentation">XN(μX,σX2)Y&#x223C;N(&#x03BC;Y,&#x03C3;Y2)" role="presentation">YN(μY,σY2)是统计独立的常态随机变量,那么:

      它们的和也满足正态分布U=X+Y&#x223C;N(&#x03BC;X+&#x03BC;Y,&#x03C3;X2+&#x03C3;Y2)" role="presentation">U=X+YN(μX+μY,σX2+σY2) (proof).

      它们的差也满足正态分布V=X&#x2212;Y&#x223C;N(&#x03BC;X&#x2212;&#x03BC;Y,&#x03C3;X2+&#x03C3;Y2)." role="presentation">V=XYN(μXμY,σX2+σY2).

      U与V两者是相互独立的。(要求X与Y的方差相等)

    3. 如果X&#x223C;N(0,&#x03C3;X2)" role="presentation">XN(0,σX2)Y&#x223C;N(0,&#x03C3;Y2)" role="presentation">YN(0,σY2)是独立常态随机变量,那么:

      它们的积XY" role="presentation">XY服从概率密度函数为p" role="presentation">p的分布

      p(z)=1&#x03C0;&#x03C3;X&#x03C3;YK0(|z|&#x03C3;X&#x03C3;Y)" role="presentation">p(z)=1πσXσYK0(|z|σXσY),其中K0" role="presentation">K0是修正贝塞尔函数(modified Bessel function)

      它们的比符合柯西分布,满足X/Y&#x223C;Cauchy(0,&#x03C3;X/&#x03C3;Y)." role="presentation">X/YCauchy(0,σX/σY).

    4. 如果X1,&#x22EF;,Xn" role="presentation">X1,,Xn为独立标准常态随机变量,那么X12+&#x22EF;+Xn2" role="presentation">X12++Xn2服从自由度为n的卡方分布。
  • 中心极限定理

    正态分布有一个非常重要的性质:在特定条件下,大量统计独立的随机变量的平均值的分布趋于正态分布,这就是中心极限定理。中心极限定理的重要意义在于,根据这一定理的结论,其他概率分布可以用正态分布作为近似。中心极限定理阐明了随着有限方差的随机变量数量增长,它们的和的分布趋向正态分布。

    • 1、参数为n和p的二项分布,在n相当大而且p接近0.5时近似于正态分布。

      (有的参考书建议仅在np" role="presentation">npn(1&#x2212;p)" role="presentation">n(1p)至少为5时才能使用这一近似)。近似正态分布平均数为&#x03BC;=np" role="presentation">μ=np且方差为&#x03C3;2=np(1&#x2212;p)." role="presentation">σ2=np(1p).(见下图)正态分布的概率密度函数,参数为μ = 12,σ = 3,趋近于n = 48、p = 1/4的二项分布的概率质量函数。

      Normal approximation to binomial.svg

    • 2、一泊松分布带有参数&#x03BB;" role="presentation">λ当取样样本数很大时将近似正态分布&#x03BB;" role="presentation">λ.

      近似正态分布平均数为&#x03BC;=&#x03BB;" role="presentation">μ=λ且方差为&#x03C3;2=&#x03BB;." role="presentation">σ2=λ.,这些近似值是否完全充分正确取决于使用者的使用需求。

  • 相关的一些分布介绍

    • 1、R&#x223C;Rayleigh(&#x03C3;)" role="presentation">RRayleigh(σ)瑞利分布,如果R=X2+Y2&#xFF0C;" role="presentation">R=X2+Y2这里X&#x223C;N(0,&#x03C3;2)" role="presentation">XN(0,σ2)Y&#x223C;N(0,&#x03C3;2)" role="presentation">YN(0,σ2)是两个独立正态分布。
    • 2、Y&#x223C;&#x03C7;&#x03BD;2" role="presentation">Yχν2是卡方分布,具有&#x03BD;" role="presentation">ν自由度,如果Y=&#x2211;k=1&#x03BD;Xk2" role="presentation">Y=k=1νXk2这里Xk&#x223C;N(0,1)" role="presentation">XkN(0,1)其中k=1,&#x2026;,&#x03BD;" role="presentation">k=1,,ν是独立的。
    • 3、Y&#x223C;Cauchy(&#x03BC;=0,&#x03B8;=1)" role="presentation">YCauchy(μ=0,θ=1)是柯西分布,如果Y=X1/X2" role="presentation">Y=X1/X2,其中X1&#x223C;N(0,1)" role="presentation">X1N(0,1)并且X2&#x223C;N(0,1)" role="presentation">X2N(0,1)是两个独立的正态分布。
    • 3、Y&#x223C;Log-N(&#x03BC;,&#x03C3;2)" role="presentation">YLog-N(μ,σ2)对数正态分布,如果Y=eX" role="presentation">Y=eX并且X&#x223C;N(&#x03BC;,&#x03C3;2)." role="presentation">XN(μ,σ2).
    • 4、与Lévy skew alpha-stable分布相关(雷维偏阿尔法-稳定分布):如果X&#x223C;Levy-S&#x03B1;S(2,&#x03B2;,&#x03C3;/2,&#x03BC;)" role="presentation">XLevy-SαS(2,β,σ/2,μ)因而X&#x223C;N(&#x03BC;,&#x03C3;2)." role="presentation">XN(μ,σ2).

(二)二元高斯函数(多元中的特例)

二维高斯函数形如:

f(x,y)=Aexp&#x2061;(&#x2212;((x&#x2212;x0)22&#x03C3;x2+(y&#x2212;y0)22&#x03C3;x2))" role="presentation">f(x,y)=Aexp(((xx0)22σx2+(yy0)22σx2))

A是幅值,x。y。是中心点坐标,σx σy是方差,图示如下,A = 1, xo = 0, yo = 0, σx = σy = 1.

gaussian curve with a 2-dimensional domain

下面使用Matlab直观的查看高斯函数,在实际编程应用中,高斯函数中的参数有

  1. ksize 高斯函数的大小
  2. sigma 高斯函数的方差
  3. center 高斯函数尖峰中心点坐标
  4. bias 高斯函数尖峰中心点的偏移量,用于控制截断高斯函数

为了方便直观的观察高斯函数参数改变而结果也不一样,下面的代码实现了参数的自动递增,并且将所有的结果图保存为gif图像,首先贴出完整代码:

[plain] view plain copy
 function mainfunc()  
% 测试高斯函数,递增的方法实现高斯函数参数的改变对整个高斯函数的影响,  
% 并自动保存为gif格式输出。  
% created by zhao.buaa 2016.09.28  

%% 保存gif动画  
item = 10;      % 迭代次数  
dt = 1;             % 步长大小  
ksize =20;      % 高斯大小  
sigma = 2;      % 方差大小  
% filename = ['ksize-' num2str(ksize) '--' num2str(ksize+dt*item) '-sigma-' num2str(sigma) '.gif']; %必须预先建立gif文件  
filename = ['ksize-' num2str(ksize)  '-sigma-' num2str(sigma) '--' num2str(sigma+dt*item) '.gif']; %必须预先建立gif文件  

% main loop  
for i = 1:item  
    center  = round(ksize/2);          % 中心点  
    bias       = ksize*10/10;              % 偏移中心点量  
    ksigma = ksigma(ksize, sigma, center, bias);    % 构建核函数  
    tname  = ['ksize-' num2str(ksize) '-sigma-' num2str(sigma) '-center-' num2str(center)];  
    figure(i), mesh(ksigma), title(tname);  
    %设置固定的x-y-z坐标范围,便于观察,axis([xmin xmax ymin ymax zmin zmax])  
    axis([0 ksize 0 ksize 0 0.008]);  view([0, 90]);% 改变可视角度     
    % ksize 递增  
%     ksize = ksize + 10;  
    % sigma 递增  
    sigma = sigma + dt;       

    % 自动保存为gif图像  
    frame = getframe(i);  
    im = frame2im(frame);  
    [I,map] = rgb2ind(im,256);  
    if i==1  
        imwrite(I,map,filename,'gif','Loopcount',inf, 'DelayTime',0.4);  
    else  
        imwrite(I,map,filename,'gif','WriteMode','APPend','DelayTime',0.4);  
    end  
end;  

close all;  


%% 截断高斯核函数,截断的程度取决于参数bias  
function ksigma = ksigma(ksize, sigma, center,bias)  
%ksize = 80;    sigma = 15;  
ksigma=fspecial('gaussian',ksize, sigma);   % 构建高斯函数  
[m, n] =size(ksigma);  
for i = 1:m  
    for j = 1:n  
        if(  (i<center-bias)||(i>center+bias)||(j<center-bias)||(j>center+bias)  )  
            ksigma(i,j) = 0;  
        end;  
    end;  
end;  

固定ksize为20,sigma从1-9,固定center在高斯中间,并且bias偏移量为整个半径,即原始高斯函数。

gaussian gift

随着sigma的增大,整个高斯函数的尖峰逐渐减小,整体也变的更加平缓,则对图像的平滑效果越来越明显。

保持参数不变,对上述高斯函数进行截断,即truncated gaussian function,bias的大小为ksize*3/10,则结果如下图:

truncated gaussian function

truncated gaussian function的作用主要是对超过一定区域的原始图像信息不再考虑,这就保证在更加合理的利用靠近高斯函数中心点的周围像素,同时还可以改变高斯函数的中心坐标,如下图(俯视图):

truncated gaussian function 俯视图

(三)多元高斯函数

多元正态分布定义

多变量正态分布亦称为多变量高斯分布。它是单维正态分布向多维的推广。它同矩阵正态分布有紧密的联系。

一般形式:

N维随机向量&#xA0;X=[X1,&#x2026;,XN]T" role="presentation">X=[X1,,XN]T如果服从多变量正态分布,必须满足下面的三个等价条件:

1、任何线性组合&#xA0;Y=a1X1+&#x22EF;+aNXN" role="presentation">Y=a1X1++aNXN服从正态分布。

2、存在随机向量 &#xA0;Z=[Z1,&#x2026;,ZM]T" role="presentation">Z=[Z1,,ZM]T( 它的每个元素服从独立标准正态分布),向量&#xA0;&#x03BC;=[&#x03BC;1,&#x2026;,&#x03BC;N]T" role="presentation">μ=[μ1,,μN]TN&#x00D7;M" role="presentation">N×M矩阵&#xA0;A" role="presentation">A满足 &#xA0;X=AZ+&#x03BC;." role="presentation">X=AZ+μ.

3、存在&#x03BC;" role="presentation">μ 和一个对称正定阵 &#xA0;&#x03A3;" role="presentation">Σ ,满足&#xA0;X" role="presentation">X的特征函数&#x03D5;X(u;&#x03BC;,&#x03A3;)=exp&#x2061;(i&#x03BC;Tu&#x2212;12uT&#x03A3;u)" role="presentation">ϕX(u;μ,Σ)=exp(iμTu12uTΣu),如果&#xA0;&#x03A3;" role="presentation">Σ 是非奇异的,那么该分布可以由以下的pdf来描述:fx(x1,&#x2026;,xk)=1(2&#x03C0;)k|&#x03A3;|exp&#x2061;(&#x2212;12(x&#x2212;&#x03BC;)T&#x03A3;&#x2212;1(x&#x2212;&#x03BC;))," role="presentation">fx(x1,,xk)=1(2π)k|Σ|exp(12(xμ)TΣ1(xμ)),,注意这里的|&#x03A3;|" role="presentation">|Σ|表示协方差矩阵的行列式。

多元高斯分布参数相关性分析&#xFF08;xi;&#x03BC;i;&#x03C3;i&#xFF09;" role="presentation">xi;μi;σi

标准方差对角线x1,x2" role="presentation">x1,x2同时缩小(高度增大,幅度x1,x2" role="presentation">x1,x2同时缩小)或增大(高度缩小,幅度x1,x2" role="presentation">x1,x2同时增大),如下图

多维高斯分布标准方差调整变化图1

标准方差对角线单元素x1" role="presentation">x1缩小(高度单比例增大,幅度单方向x1" role="presentation">x1缩小)或增大(高度单比例缩小,幅度单方向x1" role="presentation">x1增大),如下图

多维高斯分布标准方差调整变化图2

标准方差对角线单元素x2" role="presentation">x2缩小(高度单比例增大,幅度单方向x2" role="presentation">x2缩小)或增大(高度单比例缩小,幅度单方向x2" role="presentation">x2增大),如下图

多维高斯分布标准方差调整变化图3

协方差非对角线同时由0增加,见下图

多维高斯分布非对角线标准方差调整变化图4

协方差非对角线同时由0负增加,见下图

多维高斯分布非对角线标准方差负调整变化图5

均值调整,高斯分布图中心点变化,如下图

多维高斯分布均值调整变化图6

多元高斯概率模型

在一般的高斯分布模型中,我们计算p(x)" role="presentation">p(x) 的方法是: 通过分别计算每个特征对应的几率然后将其累乘起来,在多元高斯分布模型中,我们将构建特征的协方差矩阵,用所有的特征一起来计算p(x)" role="presentation">p(x)

p(x)=&#x220F;j=1np(xj;&#x03BC;j,&#x03C3;j2)=&#x220F;j=1n12&#x03C0;&#x03C3;jexp&#x2061;(&#x2212;((xj&#x2212;&#x03BC;j)22&#x03C3;2))" role="presentation">p(x)=j=1np(xj;μj,σj2)=j=1n12πσjexp(((xjμj)22σ2))

我们首先计算所有特征的平均值,

&#x03BC;=1m&#x2211;i=1mx(i)" role="presentation">μ=1mi=1mx(i)

然后再计算协方差矩阵:

&#x2211;=1m&#x2211;i=1m(x(i)&#x2212;&#x03BC;)(x(i)&#x2212;&#x03BC;)T=1m(X&#x2212;&#x03BC;)T(X&#x2212;&#x03BC;)" role="presentation">=1mi=1m(x(i)μ)(x(i)μ)T=1m(Xμ)T(Xμ)

注:其中&#x03BC;" role="presentation">μ是一个向量,其每一个单元都是原特征矩阵中一行数据的均值。最后我们计算多元高斯分布的p(x)" role="presentation">p(x):

p(x)=1(2&#x03C0;)(n2)|&#x2211;|12exp&#x2061;(&#x2212;12(x&#x2212;&#x03BC;)T&#x2211;&#x2212;1(x&#x2212;&#x03BC;))" role="presentation">p(x)=1(2π)(n2)||12exp(12(xμ)T1(xμ))

其中:|&#x2211;|" role="presentation">||是正定矩阵,在 Octave 中用 det(sigma)计算

&#x2211;&#x2212;1" role="presentation">1是逆矩阵。

多元高斯分布模型与原高斯分布模型的关系:

可以证明的是,原本的高斯分布模型是多元高斯分布模型的一个子集,如果协方差矩阵只在对角线的单位上有非零的值时,即为原本的高斯分布模型了。

(&#x03C3;120&#x22EF;00&#x03C3;22&#x22EF;0&#x22EE;&#x22EE;&#x22EF;&#x22EE;00&#x22EF;&#x03C3;n2)" role="presentation">(σ12000σ22000σn2)

原高斯分布模型和多元高斯分布模型的比较:

原高斯分布模型 多元高斯分布模型
不能捕捉特征之间的相关性 但可以通过将特征进行组合的方法来解决 自动捕捉特征之间的相关性
计算代价低,能适应大规模的特征 计算代价较高 训练集较小时也同样适用
必须要有m&#x003E;n" role="presentation">m>n ,不然的话协方差矩阵 不可逆的,通常需要m&#x003E;10n" role="presentation">m>10n另外特征冗余也会导致协方差矩阵不可逆

使用多元高斯分布函数进行异常检测

: 多元高斯分布函数:

p(x)=1(2&#x03C0;)(n2)|&#x2211;|12exp&#x2061;(&#x2212;12(x&#x2212;&#x03BC;)T&#x2211;&#x2212;1(x&#x2212;&#x03BC;))" role="presentation">p(x)=1(2π)(n2)||12exp(12(xμ)T1(xμ))

多元高斯分布函数有两个参数,&#x03BC;" role="presentation">μ&#x2211;" role="presentation"> 。其中&#x03BC;" role="presentation">μ是一个n维向量。&#x2211;" role="presentation">n&#x00D7;n" role="presentation">n×n的协方差矩阵。

相关阅读

ReadProcessMemory与WriteProcessMemory用例分析

首先介绍一个函数VirtualProtectEx,它用来改变一个进程的虚拟地址中特定页里的某一区域的保护属性,这句话有些咬嘴,直接从MSDN中翻译

python:进程subprocess与管道pipe

一 程序的stdin,stdout,stderr+redirect+pipe程序的stdin,stdout,stderr:通常地一个应用程序默认地连接有3个io流,分别为stdin标准输入

multiprocessing.Queue()和queue.Queue()的区别

from multiprocessing import Pool, Process, Queue       # from Queue import QueueQueue.Queue是进程内非阻塞队列,multip

ProcessOn入门指南

一、引言 作为一名IT从业者,不仅要有扎实的知识储备,出色的业务能力,还需要具备一定的软实力。软实力体现在具体事务的处理能力,包括

Stream Processing: Apache Kafka的Exactly-once的定

2018年,Apache Kafka以一种特殊的设计和方法实现了强语义的exactly-once和事务性。热泪盈眶啊!这篇文章将讲解kafka中exactly-once

分享到:

栏目导航

推荐阅读

热门阅读