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

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

3天内不再提示

一种兼具神经网络高效性和高斯过程灵活性的方法——神经过程

zhKF_jqr_AI 来源:未知 作者:李倩 2018-10-04 09:00 次阅读

编者按:几个月前,Deepmind在ICML上发表了一篇论文《Neural Processes》,提出了一种兼具神经网络高效性和高斯过程灵活性的方法——神经过程,被称为是高斯过程的深度学习版本。虽然倍受关注,但目前真正能直观解读神经过程的文章并不多,今天论智带来的是牛津大学在读PHDKaspar Märtens的一篇可视化佳作。

在今年的ICML上,研究人员提出了不少有趣的工作,其中神经过程(NPs)引起了许多人的注意,它基于神经网络概率模型,但又可以表示随机过程的分布。这意味着NPs结合了两个领域的元素:

深度学习:神经网络是灵活的非线性函数,可以直接训练

高斯过程:GP提供了一个概率框架,可用于学习非线性函数的分布

两者都有各自的优点和缺点。当数据量有限时,由于本身具备概率性质可以描述不确定性,GP是首选(这和非贝叶斯神经网络不同,后者只能捕捉单个函数,而不是函数分布);而当有大量数据时,训练神经网络比GP推断更具扩展性,因此优势更大。

神经过程的目标就是实现神经网络和GP的优势融合。

什么是神经过程?

NP是一种基于神经网络的方法,用于表示函数的分布。下图展示了如何建立NP模型,以及训练模型背后的一般想法:

给定一系列观察值(xi,yi),把它们分成“context points”和“target points”两组。现在,我们要根据“context points”中已知的输入输出对(xc,yc),其中c=1,…,C,和“target points”中的未知输入x∗t,其中t=1,…,T,预测其相应的函数值y∗t。

我们可以把NP看作是根据“context points”中的“target points”建模的模型,相关信息通过潜在空间z从左侧流向右侧,从而提供新的预测。右侧本质上是从x映射到y的有限维嵌入,而z是个随机变量,这就使NP成了概率模型,能捕捉函数的不确定性。一旦模型完成训练,我们就可以用z的近似后验分布作为测试时进行预测的先验。

乍看之下,这种分“context points”和“target points”的做法有点类似把数据集分成训练集和测试集,但事实并非如此,因为“target points”集也是直接参与NP模型训练的——这意味着模型的(概率)损失函数在这个集上有明确意义。这样做也有助于防止模型过拟合和提供更好的泛化性。在实践中,我们还需要反复把训练数据通过随机采样分为“context points”中的“target points”,以获得更全面的概括。

让我们来思考以下两种情况:

基于单个数据集推断函数的分布

当存在多个数据集且它们之间存在某种相关性时,推断函数的分布

对于情况一,常规的(概率)监督学习就能解决:给定一个包含N个样本的数据集,比如(xi, yi),其中i=1,…,N。假设确实存在一个函数f,它能产生yi=f(xi),我们的目标就是学习f的后验分布,然后用它预测测试集上某点的函数值f(x∗)。

对于情况二,我们则需要从元学习的角度去观察。给定D个数据集,其中d=1,…,D,每个数据集包含Nd个数据对(xi(d), yi(d))。如果我们假设每个数据集都有自己的基函数fd,输入xi后,它们有yi=fd(xi),那么在这种情况下,我们就可能想要了解每个fd的后验分布,然后把经验推广到新数据集d∗上。

对于数据集很多但它们的样本很少的情况,情况二的做法特别有用,因为这时模型学到的经验基于所有fd,它的内核、超参数是这些函数共享的。当给出新的数据集d∗时,我们可以用后验函数作为先验函数,然后执行函数回归。

之所以要举着两个例子,是因为一般来说,GP适用于情况一,即便N很小,这种做法也很有效。而NP背后的思路似乎主要来自元学习——在这种情况下,潜在的z可以被看作是用于不同数据集间信息共享的机制。但是,NP同样具有概率模型的特征,事实上,它同时适用于以上两种情况,具体分析请见下文。

NP模型是怎么实现的?

下面是NP生成模型的详细图解:

如果要逐步分解这个过程,就是:

首先,“context points”里的数据(xc,yc)通过神经网络h映射,获得潜在表征rc

其次,这个向量rc经聚合(操作:平均)获得单个值r(和每个rc具有相同的维数)

这个r的作用是使z的分布参数化,例如p(z|x1:C,y1:C)=N(μz(r),σ2z(r))

最后,为了预测输入x∗t后的函数值,对z采样并将样本与x∗t组成数对,用神经网络g映射(z,x∗t)获得预测分布中的样本y∗t。

NP的推断是在变分推断(VI)框架中进行的。具体来说,我们介绍了两种近似分布:

让q(z|context)去近似条件先验p(z|context)

让q(z|context,target)去近似于各自的p(z|context,target),其中context:=(x1:C,y1:C),target:=(x∗1:T,y∗1:T)

下图是近似后验q(z|·)的具体推断过程。也就是说,我们用相同的神经网络h映射两个数据集,获得聚合的r,再把r映射到μz和σz,使后验q(z|⋅)=N(μz,σz)被参数化。

变分下界包含两个项(下式),其中第一项是target集上的预期对数似然,即先从z∼q(z|context,target)上采样(上图左侧),然后用这个z在target set上预测(上图右侧)。

第二项是个正则项,它描述了q(z|context,target)和q(z|context)之间的KL散度。这和常规的KL(q||p)有点不同,因为我们的生成模型一开始就把p(z|context)当做条件先验,不是p(z),而这个条件先验有依赖于神经网络h,这就是我们没法得到确切值,只能用一个近似值q(z|context)。

实验

NP作为先验

我们先来看看把NP作为先验的效果,也就是没有观察任何数据,模型也没有经过训练。初始化权重后,对z∼N(0,I)进行采样,然后通过x∗值的生成先验预测分布并绘制函数图。

和具有可解释内核超参数的GP相反,NP先验不太明确,它涉及各种架构选择(如多少隐藏层,用什么激活函数等),这些都会影响函数空间的先验分布。

例如,如果我们用的激活函数是sigmoid,调整z的维数为{1, 2, 4, 8}。

如果用的是ReLU:

在一个小数据集上训练NP

假设我们只有5个数据点:

由于NP模型需要context set和target set两个数据集,一种方法是选取固定大小的context set,另一种方法则是用不同大小的context set,然后多迭代几次(1个点、2个点……以此类推)。一旦模型在这些随机子集上完成训练,我们就可以用它作为所有数据的先验和条件,然后根据预测结果绘制图像。下图展示了NP模型训练时的预测分布变化。

可以发现,NP似乎已经成功学习了这5个数据点的映射分布,那它的泛化性能如何呢?我们把这个训练好的模型放在另一个新的context set上,它的表现如下图所示:

这个结果不足为奇,数据量太少了,模型过拟合可以理解。为了更好地提高模型泛化性,我们再来试试更大的函数集。

在一小类函数上训练NP

上文已经用单个(固定)数据集探索了模型的训练情况,为了让NP像GP一样通用,我们需要在更大的一类函数上进行训练。但在准备复杂函数前,我们先来看看模型在简单场景下的表现,也就是说,这里观察的不是单个函数,而是一小类函数,比如它们都包含a⋅sin(x),其中a∈[−1,1]。

我们的目标是探究:

NP能不能捕捉这些函数?

NP能不能概括这类函数以外的函数?

下面是具体步骤:

设a满足均匀分布:a∼U(−2,2)

设xi∼U(−3,3)

定义yi:=f(xi),其中f(x)=a⋅sin(x)

把数据对(xi,yi)随机分成context set和target set两个数据集,并进行优化

重复上述步骤

为了方便可视化,这里我们用了二维z,具体图像如下所示:

从左往右看,模型似乎编码了参数a,如果这幅图不够直观,下面是调整某一潜在维度(z1或z2)的动态可视化:

需要注意的是,这里我们没有用任何context set里的数据,只是为了可视化指定了具体的(z1, z2)值。接下来,就让我们用这个模型进行预测。

如下左图所示,当context set数据集里只包含(0, 0)一个点时,模型覆盖了一个较宽的范围,包含不同a取值下a⋅sin(x)的值域(虽然a∈[−2,2],但训练时并没有完全用到)。

往context set数据集里添加第二个点(1,sin(1))后,可视化如中图所示,相比左图,它不再包含a为负数的情况。右图是继续添加f(x)=1.0sin(x)的点后的情况,这时模型后验开始接近函数的真实分布情况。

这之后,我们就可以开始探究NP模型的泛化性,以2.5sin(x)和|sin(x)|为例,前者需要在a⋅sin(x)的基础上做一些推断,而后者的值始终是个正数。

如上图所示,模型的值域还是和训练期间一样,但它在两种情况下都出现了符合函数分布的一些预期。需要注意的是,这里我们并没有给NP提供足够多的不确定性,所以它预测不准确也情有可原,毕竟比起易于解释的模型,这种自带黑盒特性的模型更难衡量。

之后,作者又比较了GP和NP的预测分布情况,发现两者性能非常接近,只是随着给出的数据点越来越多时,NP会因为架构选择(神经网络过小、低纬度z)出现性能急剧下降。对此,以下几个改进方法可以帮助解决问题:

2维z适合用于学习理解,在实际操作中,可视情况采用更高的维度

让神经网络h和g变得更深,扩大隐藏层

在训练期间使用更多样化的函数(更全面地训练NP超参数),可提高NP模型泛化性

结论

虽然NP号称结合了神经网络和GP,能预测函数的分布,但它从本质上看还是更接近神经网络模型——只需优化架构和训练过程,模型性能就可以大幅提高。但是,这些变化都是隐含的,使得NP更难被解释为先验。

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

    关注

    42

    文章

    4575

    浏览量

    98795
  • 数据集
    +关注

    关注

    4

    文章

    1179

    浏览量

    24360
  • 深度学习
    +关注

    关注

    73

    文章

    5240

    浏览量

    119931

原文标题:函数分布视角下的神经过程

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    人工神经网络原理及下载

    人工神经网络是根据人的认识过程而开发出的一种算法。假如我们现在只有些输入和相应的输出,而对如何由输入得到输出的机理并不清楚,那么我们可以把输入与输出之间的未知
    发表于 06-19 14:40

    求基于labview的BP神经网络算法的实现过程

    求高手,基于labview的BP神经网络算法的实现过程,最好有程序哈,谢谢!!
    发表于 12-10 14:55

    求助大神关于神经网络的问题

    求助大神 小的现在有个难题: 组车重实时数据 对应个车重的最终数值(维数组输入对应输出个数值) 这其中可能
    发表于 07-14 13:35

    求助基于labview的神经网络pid控制

    小女子做基于labview的蒸发过程中液位的控制,想使用神经网络pid控制,请问这个控制方法可以吗?有谁会神经网络pid控制么。。。叩谢
    发表于 09-23 13:43

    神经网络解决方案让自动驾驶成为现实

    的越来越大的挑战。结论机器学习神经网络将沿着条挑战高效处理性能的发展道路继续阔步前进。先进的神经网络架构已经显现出优于人类的识别精确。用
    发表于 12-21 17:11

    【PYNQ-Z2申请】基于PYNQ的卷积神经网络加速

    探索整个过程中资源利用的优化使整个过程更加节能高效预计成果:1、在PYNQ上实现卷积神经网络2、对以往实现结构进行优化3、为卷积神经网络网路
    发表于 12-19 11:37

    【PYNQ-Z2试用体验】神经网络基础知识

    能在外界信息的基础上改变内部结构,是一种自适应系统,通俗的讲就是具备学习功能。现代神经网络一种非线性统计数据建模工具。简单来说,就是给定输入,
    发表于 03-03 22:10

    【案例分享】ART神经网络与SOM神经网络

    一种常用的无监督学习策略,在使用改策略时,网络的输出神经元相互竞争,每时刻只有个竞争获胜的神经
    发表于 07-21 04:30

    人工神经网络实现方法有哪些?

    人工神经网络(Artificial Neural Network,ANN)是一种类似生物神经网络的信息处理结构,它的提出是为了解决些非线性,非平稳,复杂的实际问题。那有哪些办法能实现
    发表于 08-01 08:06

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

    ,基于数据间的相关,构造协方差函数,通过Bayesian推理进行计算,与点秀的神经网络、支持向量机相比,高斯
    发表于 06-30 06:59

    如何构建神经网络

    原文链接:http://tecdat.cn/?p=5725 神经网络一种基于现有数据创建预测的计算系统。如何构建神经网络神经网络包括:输入层:根据现有数据获取输入的层隐藏层:使用反
    发表于 07-12 08:02

    卷积神经网络维卷积的处理过程

    inference在设备端上做。嵌入式设备的特点是算力不强、memory小。可以通过对神经网络做量化来降load和省memory,但有时可能memory还吃紧,就需要对神经网络在memory使用上做进步优化
    发表于 12-23 06:16

    卷积神经网络模型发展及应用

    十余年来快速发展的崭新领域,越来越受到研究者的关注。卷积神经网络(CNN)模型是深度学习模型中最重要的一种经典结构,其性能在近年来深度学习任务上逐步提高。由于可以自动学习样本数据的特征表示,卷积
    发表于 08-02 10:39

    一种基于高效采样算法的时序图神经网络系统介绍

    成为了非常重要的问题。 基于以上问题,本文提出了一种基于高效采样算法的时序图神经网络系统 。首先我们介绍用于时序图神经网络采样的高效采样
    发表于 09-28 10:34

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

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