我是靠谱客的博主 灵巧火,最近开发中收集的这篇文章主要介绍神经网络高斯过程 (Neural Network Gaussian Process),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

b8e3e81d5479e4d0fac705e1783eedb8.gif

©作者 | 宋珣

单位 | 南京大学

研究方向 | 数据挖掘

我们先梳理出单隐层神经网络与高斯过程(GP)的关系,再将概念拓展到多隐层神经网络,然后讨论如何用 GP 来完成传统神经网络的任务,即学习和预测。

8bcf14dc9bd1d4f2036cd7bec5491b0d.png

单隐层神经网络与NNGP

在如下图所示的全连接神经网络中:

02ab4f8e9123db8d1bc2c640996ac269.png

函数的输出可以写为:

eb75b6135d2777322a0d62d69fb2988c.png

我们令网络的的所有参数服从高斯分布:

0a786de6715c1a49d052ca1d1413787d.png

现在我们研究在某个输入 下第 个输出单元的值,即 。

因为 ,对于任意的 ,第 个隐藏单元的输出的期望值是 0:

05f9c7e50ac15d6e0fcef093bae79d2b.png

第 个隐藏单元的输出的方差为:

e6641730e41aae67cd5aebf09ca71233.png

注意对于所有的 , 的值都是一样的(因为它只决于 , 和 ),所以我们令  。

由于所有隐层输出 独立同分布,由中心极限定理可知,当 趋于无穷时,服从高斯分布,方差为 。综上,当 趋于无穷时,我们得到 的先验分布为:

d1165cdfa3b8a4c868d50d142e4ab6bb.png

为了限制 的方差不会趋于无穷,对于某个固定的 ,我们令 ,可得

341a682421dc4140bdff29c8a5dfab2f.png

现在对于一组输入 ,我们考虑其对应输出 的联合概率分布。根据定义, 应当服从均值为 0 的多元高斯分布,其中任意两个输出 和 之间的协方差定义为:

908731f374eb7c777f9c900c6c63377c.png

其中 ,该值对于所有的 都相等。

此时我们说 组成一个高斯过程,高斯过程的定义为:

定义:高斯过程是是一组变量的集合,这组变量的任意子集都服从多元高斯分布。[2]

其实,与其说高斯过程描述了这几个变量,不如说它描述的是一个函数的分布:

对于任意数量的输入,其对应的函数输出的联合概率分布都是多元高斯分布。

[1] 中的作者做了以下的实验来为验证这种高斯分布:

2e0a1e9396088552cd1ad098f05ef1af.png

参数设置为:。在上面的三张图中,分别设置隐藏层宽度 为 1,3 和 10。

每个点代表对网络参数的一次采样(即每个点都是一个单独的神经网络),横轴和纵轴分别代表输入为 和 时的函数输出。

可以看到,随着 逐渐变大,两个输出呈现出二元高斯分布(并且有明显的相关性)。

现在我们来直觉上理解一下这个结论的作用。

0aad68a13a54fa3ddb44e83132e5f843.png

我们以上面 的情况为例。还是那两个输入,一个 ,一个 。现在我们假设 的标签 已知:,那么 的标签 该是多少呢?

在没有 的标签时,我们并不知道图中的哪些点(代表的神经网络)可以拟合 和 之间的关系。而当得知 后,我们至少可以把选择范围缩小在上图的红色方框内,因为只有那里面的模型对 的预测符合我们的观测值。此时一种可行的做法是综合考虑方框内所有模型对 的预测,然后给出最终输出(比如取它们的均值)。

在这个例子中,( )相当于训练样本,而 是测试集

aedc466bf76be74fc44c0461b9b8f81f.png

多隐层神经网络与NNGP

我们已经知道单隐层神经网络的每一维输出可以看作是一个高斯过程(GP),其实这个结论可以推广到多隐层全连接神经网络 [3]。

对于输入 ,将第 层的第 个单元的输出记为 ,神经网络的计算可以表示为:

12bb49e2c7eabdf2e1b7a95493ff15c9.png

其中 为激活函数。

对输入 ,其输出 是一个高斯过程(原理同单隐层类似):

d70eb3ca0a0e96b4e77c0ce769dceaf0.png

其中 被称为 kernel,它的递归式为:

b1ef47d6b7a12a1dee35ed4fce03521c.png

可以看到整个递归式中唯一非线性的部分就是激活函数 。这使得我们不能得到一个完全的解析式。幸运的是对于一些特定的激活函数,是可以有等价的解析式表达的。比如对于常用的 ReLU 函数,递归式就可以表示为如下的解析形式:

dc8c224482c43bad940e29d023fa1718.png

10e4c994bdbfbace1f309164056a014d.png


用NNGP做预测

在讲 NNGP 的预测方法前,我们需要先铺垫一个基础知识:多元高斯分布的条件概率分布

考虑一个服从高斯分布的向量 ,我们把它分成一上一下两部分: 和 。则我们有:

238ea21373580da9c6eb1ae4ffce1f3f.png

在已知 的情况下, 的分布可以表示为:

3e0b13326f7c74bd990ccd0ea1b4e18d.png

其中:

e4af7db704233bfb5cf1a12c1c444115.png

注意 是已知 时 的分布。区别于 的先验分布, 是一种后验分布,它利用了 的观测值以及 与 之间的协方差 ,在一定程度上消除了对原有 的不确定度。

现在我们就知道如何用 NNGP 做预测了:

记得我们前两节的结论是:对于全连接层神经网络,当网络参数服从高斯分布,且隐层宽度足够大时,其每一维度的输出都是一个高斯过程。

和常规 learning 问题一样,我们的数据集有两部分:训练集测试集

训练集的每个样本包括一个输入值和一个观测值: 

而测试集只有输入样本  

我们将它们记为向量的形式:

545081c39d329da2eac95e18c3b61f25.png

我们感兴趣的未知量为 ,根据我们的结论, 和 的联合高斯概率分布为:

c679fa71694016cecb417c7d9396ae60.png

现在已知 ,则 的后验分布为:

0df1684a7bda7f520cc647a720d57e0f.png


792c951758b06c2dfaeecc0c160600bc.png


总结

传统神经网络与神经网络高斯过程(NNGP)最大的区别在于,后者没有显式的训练的过程(即通过 BP 调整参数),而是只借助了神经网络的结构信息(包括网络参数的分布,激活函数)来生成一个 kernel,即协方差矩阵。

我们甚至都不需要真的生成一个神经网络就可以得到 kernel:

假设我们用到是 ReLU 激活函数,那么从:

203a09baaba5211ee680ad19a20692f0.png

开始,到递归式:

8a960a2cd6b22a0ed9d927b87abcc66c.png

都不需要涉及神经网络的具体参数。

除此之外,还可以直接指定一个 empirical 的协方差矩阵,比如平方指数(squared exponential)误差

3f300f7563b300d8b41c1ec3b504c78d.png

和 的距离越远,协方差越小,反之则越大。这是符合直觉的,因为对于一个连续平滑的函数,相隔较近的点总会有更强的相关性——这也是 empirical 的协方差函数所依赖的共识。

outside_default.png

参考文献

outside_default.png

[1] Neal R M. Bayesian learning for neural networks[M]. Springer Science & Business Media, 2012.

[2] Williams C K I, Rasmussen C E. Gaussian processes for machine learning[M]. Cambridge, MA: MIT press, 2006.

[3] Lee J, Bahri Y, Novak R, et al. Deep neural networks as gaussian processes[J]. arXiv preprint arXiv:1711.00165, 2017.

[4] Roman Garnett. BAYESIAN OPTIMIZATION.

更多阅读

042ac94c629957a4744c66a79957bdbf.png

6952100f0546830a146a37f191f643cd.png

6a90fa25fb7ebe6e5a4c2fad73c04dee.png

28ae646ab6c1b3892fc62aeccb8f22fe.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

???? 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

???? 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

9afd1e6a6589ab56147dff22d04e07e3.png

△长按添加PaperWeekly小编

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

7fb4ec298e7112f1fbe27acfd3590642.jpeg

最后

以上就是灵巧火为你收集整理的神经网络高斯过程 (Neural Network Gaussian Process)的全部内容,希望文章能够帮你解决神经网络高斯过程 (Neural Network Gaussian Process)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部