Gaussian Process

https://www.youtube.com/watch?v=4vGiHC35j9s

图文详解高斯过程(一)——含代码 - 知乎

numpy中expand_dims()函数详解_塔塔的守护者的博客-CSDN博客_expand_dims

先验与后验 - 搜索结果 - 知乎

补充:何为先验何为后验

作者:昌硕
链接:https://zhuanlan.zhihu.com/p/26464206

为了很好的说明这个问题,在这里举一个例子:

玩英雄联盟占到中国总人口的60%,不玩英雄联盟的人数占到40%:

为了便于数学叙述,这里我们用变量X来表示取值情况,根据概率的定义以及加法原则,我们可以写出如下表达式:

P(X=玩lol)=0.6;P(X=不玩lol)=0.4,这个概率是统计得到的,或者你自身依据经验给出的一个概率值,我们称其为先验概率(prior probability)

另外玩lol中80%是男性,20%是小姐姐,不玩lol中20%是男性,80%是小姐姐,这里我用离散变量Y表示性别取值,同时写出相应的条件概率分布:

P(Y=男性|X=玩lol)=0.8,P(Y=小姐姐|X=玩lol)=0.2

P(Y=男性|X=不玩lol)=0.2,P(Y=小姐姐|X=不玩lol)=0.8

那么我想问在已知玩家为男性的情况下,他是lol玩家的概率是多少:

依据贝叶斯准则可得:

P(X=玩lol|Y=男性)=P(Y=男性|X=玩lol)*P(X=玩lol)/

[ P(Y=男性|X=玩lol)*P(X=玩lol)+P(Y=男性|X=不玩lol)*P(X=不玩lol)]

最后算出的P(X=玩lol|Y=男性)称之为X的后验概率,即它获得是在观察到事件Y发生后得到的

Introduction:

假设我们有这么两个高斯分布,x_1, x_2的均值为0,也就是期望值为0。假设他们是正态分布,那么对角线Cov(x_1, x_1) = 1, Cov(x_2, x_2) = 1。对于\sum右上角的元素应该是0(无线性关联)因为增加x_1,跟随着x_2无法确定单独增加还是减少,因为对应的点有正也有负。因此Cov(x_1, x_2) = 0

对于这一个分布,我们可以清楚地看到增加x_1x_2也会相应增加并且是正的,所以协方差左下右上这两块也会是正的。

从联合分布到条件分布:

 假设我们已经知道描述这个红色bell的各个参数,如均值和协方差矩阵,在x_2处切一刀(图上是错误的,老师画成了x_1),求x_2给定的x_1分布下的\mu_1_2\Sigma_1_2, 公式如上图所示,下图是一般通用公式,x_1, x_2是拓展到向量的,而不是单单一个值

 电脑中的取样方法/转换标准正态分布:

 左边的图:下面是正态分布概率密度函数,左上角是概率积分,右边是0-1均匀分布。在均匀分布上取一点投影到积分函数的y,对应的x投影到高斯分布。结局取点就会集中在期望附近。

将高维度高斯转换到标准正态分布要用到Cholesky方法。具体如图所示。

 Regression in Gaussian:

 已知X =[x_1, x_2, x_3](是这三个元素组成向量还是x_1,x_2, x_3个个都是高维度向量?我偏向于这个解释,但是老师又说他们是1维。。接着看吧,看到后面觉得应该这三个就是一维的)的高维高斯以及某个函数f的函数值f_1, f_2, f_3,要学习这种分布,为了简便设均值为0,然后协方差矩阵的参数由x_i,x_j之间的距离k_i_j来衡量,距离越近相关性越大。

 我们构造f这个分布是用来做预测的,如下图所示:

假设我们已经有Dataset D,里面已经知道(x_1, f_1), (x_2, f_2), (x_3, f_3),我们通过上一张图建立了f = [f_1, f_2, f_3]~N(0, {\color{Red} K}),我们假设这新的x^*的函数值f^*也属于正态分布。依照我们之前的理论,把它append进这个f组成新向量[f f^*]^T,根据上述学到的公式,在知道f的情况下,P(f^* | f)

就可以求出来,具体就是确定\mu ^* \sigma ^*,得到f^*的期望值以及它的波动情况。

根据上面的预测方法,我们现在可以知道,依据现有的数据⭕,如果新加入了一个点●,它的函数值的期望大小与区间就能被确定,并且可以看出,根据算法,在x_1, x_2之间的那个新点的区间很小说明预测的会比较靠谱,越是远离数据的预测区间越大,也就是越不靠谱,换种说法就是没有数据的地方我们不能做自信的预测。

 Gaussian Process是函数的分布。如何创建一个简单的可视化分布呢

第一步:创建大向量X = [x_1, x_2, ..., x_N]

第二步:假定μ是0矩阵,用圈起来的公式计算出N*N kernel matrix

第三步:做Cholesky 拆出标准差

第四步:对每个x点都进行一个正态分布生成,用L转换到函数分布下

实现代码如下:

import numpy as np
import matplotlib.pyplot as plt


def kernel(a, b):
    # a**2 会把 a所有元素平方,sum函数加个1让a变为nx1,再reshape成列向量
    sqdist = np.sum(a**2, 1).reshape(-1, 1) + np.sum(b**2, 1) - 2 * np.dot(a, b.T)
    return np.exp(-.5 * sqdist)


n = 50
X_test = np.linspace(-5, 5, n).reshape(-1, 1)
print("X_text is ", X_test)
K_ = kernel(X_test, X_test)
print("kernel is ", K_)

L = np.linalg.cholesky(K_ + 1e-6*np.eye(n))
print("append term is ", 1e-6*np.eye(n))
f_prior = np.dot(L, np.random.normal(size=(n, 10))) # 10表示一个点取10个
plt.plot(X_test, f_prior)
plt.show()

 这段代码产生的函数如左图,很乱,但是你有数据的时候就可以用数据构建函数分布,用构建的那个分布来扩张你的kernel,那么生成的函数就会有一定约束一样,越靠近数据,variance 就会越低

 我们用定义的这个核来进行映射,首先先用得到的数据构建,然后append f^* 得到新的期望与核,然后以此获得该点对应的均值与方差。

Recap in Lecture 2

参数L的作用:

   对于参数l来说,随着l的增长,两个x点的距离差结果就会减小,exp函数增大,于是相邻点的相关性增强(指数函数结果接近1),图里的点与点之间就会出现最右图的取值区间很窄的情况。这个l的意义就是effect-kernel-width,数字越大kernel的width越高

  选择这些参数的方法可以用cross-validation。

Things about dealing with noise:

  y是一个带噪声的函数,去求P(y | X)的话,我们要利用类似以下公式的原理来边缘化f

P(A) = \sum_B P(A | B)

  第一眼看到这个公式是有点懵逼的,但是仔细一想,如果fX是一一对应的,那么自然P(f | X)

的值就为1,那么根据边缘概率公式对f积分的话那自然就会有P(y | X)

对于这里的 P(f | X),产生X的函数是正态分布来的所以概率这么表达,对于p(y|f)(这个表达下面那个f就是f(x_i)这个值确定的情况), 产生观测值y_i的几率就是符合正态分布,期望值是f_i, 方差是噪声方差。有n个点就连乘n下。

 根据协方差公式,新的协方差增大了,在对角线上增加了\sigma _y^2的噪声项,除了这个以外其他的预测准则仍然与原来不变。问题来了,我之前一直不知道为啥设置均值为0,观察预测规则以后发现预测的数值仅仅与y和协方差的项有关,只需要原来数据X对应的y(计算\mu ^*),以及新来的X^*(计算\Sigma ^*)便可以进行预测。

得到的结果如图所示,现在有数据的地方也有uncertainty的存在了。

Learning kernel parameter:

        

 通过极大似然估计,然后对所要求的参数求导,通过梯度下降法就可以得出需要的那个参数l

 从另一个角度进行推论:k^*^*是一个常数。k_*^T是由需要预测的点和旧的点组成的相关度向量, \alpha的来源是training。从上面这个求和的式子可以看出,GP过程就是在用一堆的basic function(指数函数),通过学习它们的权重\alpha,来approximate一个non-linear function。这就很符合我们对机器学习的直觉。

Noisy GP regression and Ridge:

没仔细听,以后有用到再说吧, 暂时写到这,后续写贝叶斯优化/GP后续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值