神经网络与高斯过程会碰撞出怎样的火花?
本文中,我们先梳理出单隐层神经网络与高斯过程(GP)的关系,再将概念拓展到多隐层神经网络,然后讨论如何用 GP 来完成传统神经网络的任务,即学习和预测。
1 单隐层神经网络与NNGP
在如下图所示的全连接神经网络中:
函数的输出可以写为:
我们令网络的的所有参数服从高斯分布:
第 j个隐藏单元的输出的方差为:
定义:高斯过程是是一组变量的集合,这组变量的任意子集都服从多元高斯分布。[2]
其实,与其说高斯过程描述了这几个变量,不如说它描述的是一个函数的分布:
对于任意数量的输入,其对应的函数输出的联合概率分布都是多元高斯分布。
[1] 中的作者做了以下的实验来为验证这种高斯分布:
可以看到,随着 H逐渐变大,两个输出呈现出二元高斯分布(并且有明显的相关性)。
现在我们来直觉上理解一下这个结论的作用。
2 多隐层神经网络与NNGP
我们已经知道单隐层神经网络的每一维输出可以看作是一个高斯过程(GP),其实这个结论可以推广到多隐层全连接神经网络 [3]。
可以看到整个递归式中唯一非线性的部分就是激活函数ϕ 。这使得我们不能得到一个完全的解析式。幸运的是对于一些特定的激活函数,是可以有等价的解析式表达的。比如对于常用的 ReLU 函数,递归式就可以表示为如下的解析形式:
3 用NNGP做预测
在讲 NNGP 的预测方法前,我们需要先铺垫一个基础知识:多元高斯分布的条件概率分布。
其中:
现在我们就知道如何用 NNGP 做预测了:
记得我们前两节的结论是:对于全连接层神经网络,当网络参数服从高斯分布,且隐层宽度足够大时,其每一维度的输出都是一个高斯过程。
和常规 learning 问题一样,我们的数据集有两部分:训练集和测试集。
我们将它们记为向量的形式:
4 总结
传统神经网络与神经网络高斯过程(NNGP)最大的区别在于,后者没有显式的训练的过程(即通过 BP 调整参数),而是只借助了神经网络的结构信息(包括网络参数的分布,激活函数)来生成一个 kernel,即协方差矩阵。
我们甚至都不需要真的生成一个神经网络就可以得到 kernel:
假设我们用到是 ReLU 激活函数,那么从:
开始,到递归式:
都不需要涉及神经网络的具体参数。
除此之外,还可以直接指定一个 empirical 的协方差矩阵,比如平方指数(squared exponential)误差:
参考文献
[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.
文章转自微信公众号@算法进阶