0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器学习笔记之高斯过程(下)

jf_78858299 来源:人工智能大讲堂 作者:人工智能大讲堂 2023-05-30 16:50 次阅读

我们可以将输出绘制成输入的函数图像。下面的线只是一个常规的非随机函数,即weight=g(height)或y=g(x)。

图片

在本节中,我们使用符号g(x)表示一个非随机函数,而使用f(x)表示一个随机函数。

为了更轻松地生成训练数据,我们将切换到一个新模型y=sin(x)。我们使用这个方程生成2个训练数据点(下面的2个蓝点)来构建一个高斯模型。然后从图片中采样三次,如下面的三条实线所示。

图片

我们看到,这2个训练数据点强制图片在蓝点相交。如果我们持续采样,我们将开始直观地识别每个图片图片的平均值和范围。例如,下面的红点和蓝线估计了图片=−3.8时图片的均值和方差。由于图片介于2个训练点之间,因此估计具有相对较高的不确定性(由σ表示)。

图片

在下面的图中,我们有5个训练数据,并从图片中采样30条线。红色虚线表示图片的均值输出值图片,灰色区域是离图片不超过2图片的范围。图片

如前所述,每条线都像一个函数,将输入映射到输出:y=g(x)。我们从许多可能的函数g开始,但是训练数据集会降低或增加某些函数的可能性。从技术上讲,图片模拟了给定训练数据集的函数g的可能性分布(上述绘制的线的概率分布)。

高斯过程(GP)的特点是构建高斯模型来描述函数的分布。

我们不会通过采样来解决这个问题,而是通过分析方法来解决。

回到:

图片

我们可以将表达式推广为以下形式,其中f是训练集的标签(体重),图片是我们要预测图片的体重。现在我们需要使用高斯模型来解决p(图片|f)的问题。

图片

回想一下之前关于多元高斯定理的部分,如果我们有一个模型:

图片

我们可以通过以下方式求图片

图片

现在,我们应用这些公式来解决p(图片|f)的问题:

图片

对于训练数据集,假设输出标签f服从高斯分布:

图片

并且假设图片的高斯分布为:

图片

其中,L定义为:

图片

然后根据多元高斯定理,我们有:

图片

我们将应用这些公式来模拟采样自y=sin(x)的训练数据。在这个例子中,由于sin函数的均值为0,所以μ=图片=0。因此,我们的方程将简化为:

图片

请注意,矩阵K可能难以求逆。因此,我们首先应用Cholesky分解对K进行分解,然后应用线性代数来解决图片

图片

表示使用线性代数方法来求Ax=b方程的解x。

在求图片之前,我们需要预先计算一些项:

图片

应用图片和上面的方程:

图片

现在我们有计算图片图片的方程:

代码

首先,准备训练数据,并通过sin函数打标签。训练数据包含5个数据点(图片=−4,−3,−2,−1和1)。

Xtrain = np.array([-4, -3, -2, -1, 1]).reshape(5,1)
ytrain = np.sin(Xtrain)      # Our output labels.

测试数据:我们创建50个新数据点,在-5和5之间线性分布,由高斯过程进行预测。

# 50 Test data
n = 50
Xtest = np.linspace(-5, 5, n).reshape(-1,1)

在这里,我们定义一个核函数,使用指数平方核度量两个数据点之间的相似性。

# A kernel function (aka Gaussian) measuring the similarity between a and b. 1 means the same.
def kernel(a, b, param):
    sqdist = np.sum(a**2,1).reshape(-1,1) + np.sum(b**2,1) - 2*np.dot(a, b.T)
    return np.exp(-.5 * (1/param) * sqdist)

计算核(K,图片图片):

K = kernel(Xtrain, Xtrain, param)                        # Shape (5, 5)
K_s = kernel(Xtrain, Xtest, param)                       # Shape (5, 50)
K_ss = kernel(Xtest, Xtest, param)                       # Kss Shape (50, 50)

我们将使用Cholesky分解对K进行分解,即图片

L = np.linalg.cholesky(K + 0.00005*np.eye(len(Xtrain)))  # Shape (5, 5)

计算我们的预测的输出均值图片。由于我们假设μ∗=μ=0,因此该方程变为:

图片

L = np.linalg.cholesky(K + 0.00005*np.eye(len(Xtrain)))  # Add some nose to make the solution stable 
                                                         # Shape (5, 5)


# Compute the mean at our test points.
Lk = np.linalg.solve(L, K_s)                             # Shape (5, 50)
mu = np.dot(Lk.T, np.linalg.solve(L, ytrain)).reshape((n,)) # Shape (50, )

计算 σ

# Compute the standard deviation.
s2 = np.diag(K_ss) - np.sum(Lk**2, axis=0)               # Shape (50, )
stdv = np.sqrt(s2)                                       # Shape (50, )

采样图片以便我们可以绘制它的图像。

图片

使用μ和L作为方差来对其进行采样:

图片

L = np.linalg.cholesky(K_ss + 1e-6*np.eye(n) - np.dot(Lk.T, Lk))    # Shape (50, 50)
f_post = mu.reshape(-1,1) + np.dot(L, np.random.normal(size=(n,5))) # Shape (50, 3)

我们采样了3个可能的输出,分别用橙色、蓝色和绿色线表示。灰色区域是离μ不超过2σ的范围。蓝点是我们的训练数据集。在蓝点处,σ更接近于0。对于训练数据点之间的点,σ增加反映了它的不确定性,因为它不接近训练数据点。当我们移动到x=1之外时,就没有更多的训练数据了,并且导致σ变大。

图片

这是另一个在观察5个数据点后的后验概率图。蓝点是我们的训练数据点,灰色区域展示了预测的不确定性(方差)。

图片

高斯混合模型

高斯混合模型是一种概率模型,它假设所有数据点都来自于高斯分布的混合物。

对于K=2,我们将有两个高斯分布G1=(μ1,σ21)和G2=(μ2,σ22)。我们从随机初始化参数μ和σ开始。高斯混合模型尝试将训练数据点适合到G1和G2中,然后重新计算它们的参数。数据点被重新拟合并且参数再次计算。迭代将继续直到解决方案收敛。

图片

图片

EM算法

使用随机值初始化G1和G2的参数(μ1,σ21)和(μ2,σ22),并将P(a)=P(b)=0.5。

对于所有的训练数据点x1,x2,⋯,计算它属于a(G1)或b(G2)的概率。

图片

现在,我们重新计算G1和G2的参数:

图片

重新计算先验概率:

图片

对于多元高斯分布,其概率分布函数为:

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4317

    浏览量

    62487
  • 机器学习
    +关注

    关注

    66

    文章

    8386

    浏览量

    132469
  • gpa
    gpa
    +关注

    关注

    0

    文章

    7

    浏览量

    4682
  • 高斯分布
    +关注

    关注

    0

    文章

    6

    浏览量

    2743
收藏 人收藏

    评论

    相关推荐

    机器学习基石笔记

    3)机器学习基石笔记 Lecture3:Types of Learning
    发表于 05-26 14:53

    吴恩达机器学习笔记分享

    吴恩达机器学习笔记 —— 1 绪论:初识机器学习
    发表于 06-05 17:42

    机器学习笔记之BP推导

    机器学习笔记:BP推导
    发表于 06-15 17:11

    高斯过程回归GPR和多任务高斯过程MTGP

    文章目录高斯过程回归多任务高斯过程文献阅读文献[1]文献[2]文献[3]文献[4]文献[5]文献[6]编程实现参考文献和资料本文介绍了高斯
    发表于 06-30 06:59

    基于高斯过程回归学习的频谱分配算法

    针对认知无线网络中认知用户的频谱分配问题,提出了一种基于拍卖理论和高斯过程回归学习的频谱分配算法。该算法基于VCG拍卖模型,考虑认知用户对通信质量的要求,构造出更有效的收益函数。在频谱拍卖过程
    发表于 11-30 10:40 0次下载
    基于<b class='flag-5'>高斯</b><b class='flag-5'>过程</b>回归<b class='flag-5'>学习</b>的频谱分配算法

    机器学习的个人学习笔记

    本文档的主要内容详细介绍的是机器学习的个人学习笔记免费下载。
    发表于 03-01 09:28 22次下载
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b>的个人<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>

    python机器学习笔记资料免费下载

    本文档的主要内容详细介绍的是python机器学习笔记资料免费python机器学习笔记资料免费下载
    发表于 03-01 10:09 39次下载

    什么是高斯过程 神经网络高斯过程解析

    神经网络是怎么和高斯过程联系在一起的呢?Lee et al. [1] and Neal [2] 指出,随机初始化无限宽网络的参数会产生一个高斯过程,称作神经网络
    发表于 08-10 11:25 4378次阅读

    机器学习笔记之高斯过程(上)

    高斯分布 我们定义一个将输入x映射到输出y的函数图片,在统计学中,我们使用随机模型来定义这种关系的概率分布。例如,一个3.8 GPA的学生可以获得平均$60K的薪水,方差(σ2)为$10K
    的头像 发表于 05-30 16:49 1591次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之高斯</b><b class='flag-5'>过程</b>(上)

    PyTorch教程18.1之高斯过程简介

    电子发烧友网站提供《PyTorch教程18.1之高斯过程简介.pdf》资料免费下载
    发表于 06-05 10:46 0次下载
    PyTorch教程18.1<b class='flag-5'>之高斯</b><b class='flag-5'>过程</b>简介

    PyTorch教程18.2之高斯过程先验

    电子发烧友网站提供《PyTorch教程18.2之高斯过程先验.pdf》资料免费下载
    发表于 06-05 10:47 0次下载
    PyTorch教程18.2<b class='flag-5'>之高斯</b><b class='flag-5'>过程</b>先验

    PyTorch教程18.3之高斯过程推理

    电子发烧友网站提供《PyTorch教程18.3之高斯过程推理.pdf》资料免费下载
    发表于 06-05 10:48 0次下载
    PyTorch教程18.3<b class='flag-5'>之高斯</b><b class='flag-5'>过程</b>推理

    PyTorch教程-18.1. 高斯过程简介

    SageMaker Studio Lab 中打开笔记本 在许多情况机器学习相当于从数据中估计参数。这些参数通常很多且相对难以解释——例如神经网络的权重。相比之下,
    的头像 发表于 06-05 15:44 834次阅读
    PyTorch教程-18.1. <b class='flag-5'>高斯</b><b class='flag-5'>过程</b>简介

    PyTorch教程-18.2. 高斯过程先验

    SageMaker Studio Lab 中打开笔记本 了解高斯过程 (GP) 对于推理模型构建和泛化以及在各种应用中实现最先进的性能非常重要,包括主动学习和深度
    的头像 发表于 06-05 15:44 793次阅读
    PyTorch教程-18.2. <b class='flag-5'>高斯</b><b class='flag-5'>过程</b>先验

    PyTorch教程-18.3。高斯过程推理

    18.3。高斯过程推理¶ Colab [火炬]在 Colab 中打开笔记本 Colab [mxnet] Open the notebook in Colab Colab [jax
    的头像 发表于 06-05 15:44 1004次阅读
    PyTorch教程-18.3。<b class='flag-5'>高斯</b><b class='flag-5'>过程</b>推理