论文标题:Spectral Networks and Locally Connected Networks on Graphs
论文链接:https://arxiv.org/abs/1312.6203
论文来源:NeurIPS 2014
本文需要的前置知识:傅里叶变换与谱图理论基础
链接:
①傅里叶级数与傅里叶变换
②图神经网络中的谱图理论基础
一、概述
CNN在机器学习领域内的一些问题上取得了比较成功的效果,这主要得益于它处理的底层数据通常有一个坐标网格结构(在1,2,3维度上),因此这些数据就存在平移不变性( translational equivariance/invariance)。图像、语音、视频就属于这一类数据。由于网络不具备平移不变性(网络中的每个节点的邻居数量是不固定的),因此在网络上直接应用CNN是比较困难的。
对于常规的网格数据,CNN能够利用以下几个很好地结合在一起的结构来大大减少系统中的参数数量:
①平移结构(translation structure),使用滤波器在数据的网格结构上平移处理数据,从而实现参数共享,并没有使用线性映射;
②网格上的度量,使用紧凑支持滤波器(compactly supported filters),紧凑支持滤波器是指与输入数据大小无关的滤波器,它的大小可能远小于输入数据的大小;
③网格的多尺度二元聚类(multiscale dyadic clustering),是指CNN应用了跨步卷积(stride convolution)和池化(pooling)来进行下采样(subsampling)。
如果网格数据有个坐标,数据的维度为(举例来说,图片的坐标数就是像素点数,维度就是图片的通道数,彩色图为,灰度图为),如果使用有的输出节点的全连接网络就需要个参数,相当于的参数复杂度。使用任意的滤波器(也就是①)而非全连接网路能将参数复杂度降低到,使用网格上的度量结构(也就是②)来构建局部连接网络也可以。而如果两种一起使用能够将复杂度降低到,这里的代表数据feature map的数量,代表卷积核的数量,此时复杂度与无关。最后使用网格的多尺度二元聚类(也就是③)可以进一步降低复杂度。
然而某些数据并不具备上述几何结构,比如表面张力或温度、从一个气象台网络中观测到的数据、来自社交网络或协同过滤的数据,这些数据都不能直接应用CNN。虽然CNN可以应用于多层,但是在特征维度上没有假设任何几何属性,导致一个4-D tensor只能沿其空间坐标进行卷积,即对于一个4-D的tensor而言,其有四个维度,典型的CNN只能对三个维度(即空间维度)进行卷积操作(通过3D convolution 操作),而不能对维度(特征维度)进行操作。
网络提供了低维网格数据的一种泛化的框架,也就是GCN是CNN在domain上的推广,推广的方式是通过推广卷积的概念。在本文中将会讨论将深度卷积应用于网络数据的方法。本文一共提供两种架构。第一种为空域架构(spatial construction),这种架构能够对网络数据应用上述②和③,应用它们可以构建网络数据的局部连接网络,参数复杂度为而非。另一种架构称为频域架构(spectral construction),能够在傅里叶域内应用卷积。频域架构对于每一个feature map最多需要的参数复杂度,也可以构建参数数量与无关的架构。这两种架构都可以应用高效的前向传播并且能够应用在有多个坐标的数据的数据集上。
二、空域架构
网络数据将由一个加权图来表示,是一个离散的节点集合,大小为,是一个对称半正定矩阵,也就是加权邻接矩阵。将CNN泛化到网络数据的最直接想法是应用多尺度的、层级的局部感受野。
- 通过定义局部性
在网络上可以轻松的定义局部性(locality)的概念。边的权重决定了节点的局部性,举例来说,可以设置一个阈值来决定一个节点的邻居节点集合:
我们可以将注意力限制在稀疏的滤波器上,这些滤波器通过节点的邻居节点集合来定义感受野,以此来构建局部连接网络,这样可以将参数量降低为,这里的代表平均邻居节点数量。
- 图的多尺度聚类
CNN通过池化和下采样来降低网格的大小,这一操作也就是网格的多尺度聚类( multiscale clustering):为每个cluster输入多个特征,输出一个特征。在图上被证明更为有效的聚类方法仍然有待研究,在本文中选择了一种比较朴素的聚类方法。如下图所示,下图中有两层聚类,灰色的点为数据中的无向图节点,然后进行聚类得到下一层带颜色的节点,然后再对这些带颜色的节点进行聚类,第一层为12个节点,第二层6个节点,第三层3个节点:
图上的聚类- 深度局部连接网络
本文提出的空域架构也叫做深度局部连接网络(Deep Locally Connected Networks)。在这个架构中使用了网络的多尺度聚类,事实上这里的尺度可以认为是下采样的层数,在这里我们考虑个尺度,实际上也就是说这个架构由个卷积层,每个卷积层后面都有一个池化层(也就是进行一次聚类),因此这个架构中总共有层,每层包括一个个卷积层和一个池化层。
我们设置,也就是输入层的节点集合,可以认为是第0层,每一层的节点集合记作,这里,可以认为是将聚成个簇的一个划分,因此就表示第层的节点个数,有。另外定义的节点的邻居节点集合的表示:
注意这里的下标虽然为,但它代表的是第的节点集合的每个节点的邻域的表示,里面的每个都是一个集合。
有了上述定义现在我们可以定义网络的第层。假设输入信号是上的实值信号,以来代表第层的卷积核的数量,也代表了第层feature map的数量和信号的维度(类比CNN,卷积核的数量等于feature map的数量,也就是卷积后的信号特征的维度)。每一层都会将上的维的信号转换成上的维的信号,这一过程会权衡空间分辨率和新创建的特征坐标,也就是说,虽然经过每一层的节点数量降低了,但是卷积核的数量会逐层增加以保证特征的维度会增加,也就是说每层有两个结果:
①空间分辨率降低(loses spatial resolution),即空间点数减少;
②滤波器数目增加(increases the number of filters),即每个点特征数增加。
第层的输入用来表示,这里的是一个的矩阵,可以认为是一个列向量,也就相当于第个feature map的信号。那么第层的输出就被定义为:
这里的代表第层的第个卷积核对第层的第个feature map进行卷积的部分,注意由于图的节点的邻居分布情况不同,所以卷积核不像CNN那样是共享的。这里的是一个的稀疏矩阵,矩阵的第行的非零值都只会存在于所指定的第个节点的邻居节点位置。代表非线性激活函数。代表对卷积的结果进行之前所述的池化操作来降低节点的数量,相当于聚类的结果,是一个的稀疏矩阵,每一行指示一个簇的分布,如果采用平均池化,那么的一个例子()可以是:
整个过程可以用下图来表示:
空域架构另外通过以下过程构建第层的和:
这里的计算过程是指:由于中的节点来自中的节点的聚类,所以之间的权重是和对应的聚类之前的中节点之间所有权重的累加。是对的聚类,图聚类的方法是多种多样的,可以自行选取,这里的方法是采用的- covering,使用核函数的的- covering是一个划分,满足:
以代表平均节点数量,那么第层用来学习的参数量为:
实践中通常有,是下采样因子,满足。
- 评价
这种架构的优点在于不需要很强的前提假设,只需要图具备邻域结构即可,甚至不需要很好的embedding向量。但是缺点在于没办法进行参数共享,对于每一层的每一个节点都要有单独的参数进行卷积而不能像CNN那样使用同一个卷积核在数据网格上进行平移。
三、频域架构
- 图的拉普拉斯矩阵
在这里,以代表图的度矩阵,代表图的加权邻接矩阵,常用的图的拉普拉斯矩阵有三种:
①Combinatorial Laplacian,也就是普通形式的拉普拉斯矩阵:
其中的元素为:
②Symmetric normalized Laplacian,也就是对称归一化的拉普拉斯矩阵:
其中的元素为:
③Random walk normalized Laplacian,也就是随机游走归一化拉普拉斯矩阵:
其中的元素为:
- 加权图的调和分析
为简便起见,本文应用的是第①种。对于一个固定的加权邻接矩阵,不同的节点信号列向量(也就是说网络有个节点)有不同的平滑性(smoothness)度量,在节点处的平滑性度量为:
所有信号的平滑性度量为:
其实也就是,关于拉普拉斯矩阵与信号平滑性的关系已经在本文开头给出的文章链接里介绍过了,这里不再赘述。
有了上面的公式我们可以得出最平滑的信号其实是一个归一化的全向量:
事实上空间中最平滑的个相互正交的单位向量其实就是的特征向量:
每个特征向量的平滑性度量的值其实也就是特征值,这一点只需要代入计算一下就可以得出,拉普拉斯矩阵的谱分解为,这里的为特征值构成的对角矩阵,为特征向量构成的正交矩阵,的每一列都是一个特征向量,那么计算一下就可以得到等于特征值,因此最平滑的信号向量就是特征值最小的特征向量,拉普拉斯矩阵的特征值就代表了特征向量的平滑度。
上面提到的一组特征向量其实就是空间的一组基,前面的文章里说过图傅里叶变换其实就是将信号向量投影到拉普拉斯矩阵的各个特征向量上:
特征值的大小表示平滑程度,它对应传统傅里叶变换中的频率,频率高表示短时间内变动多,和这里的相邻节点变动大(变动越大越不平滑)能对应起来。因此图傅里叶变换就是在将一个图信号分解到不同平滑程度的图信号上,就像传统傅里叶变换将函数分解到不同频率的函数上一样。
一个任意信号向量分解到所有的特征向量上对应的每个系数用(,这些系数也就是图傅里叶变换后的系数)表示,可以表示为,也就是,那么的平滑性度量的值可以用这些系数和特征值表示:
- 图卷积
两个函数和进行卷积可以应用卷积定理,用公式表达卷积定理就是:
应用卷积定理可以在频域上进行图的卷积操作,具体的方法是将滤波器和图信号都通过图傅里叶变换转换到频域然后计算转换后的结果的乘积(哈达玛积,也就是向量对应元素相乘),然后将相乘的结果再通过图傅里叶逆变换转换回空域,整个过程如下:
这里将组织成对角矩阵,也就是神经网络要学习的参数。
- 频域架构
在这里我们仍然使用来代表网络的第层,,仍然代表卷积核的数量。这种架构的卷积的过程主要依照卷积定理,首先来描述卷积的过程,之后再描述如何进行下采样,因此现在假设第层和第层的节点数都是,那么第层的输入就是一个的矩阵,输出就是一个的矩阵。第层的计算过程可以表示为:
这里的仍然相当于第个feature map的信号。也就是第个卷积核中对第个feature map进行卷积的部分,每一个都是一个对角矩阵,其实就是前面的,这里之所以有一个连加号是因为要将多个feature map的结果累加起来,仍然表示非线性激活,另外这里的的每一列的特征向量是按照特征值的大小依次排列的(降序)。
通常只有拉普拉斯矩阵的前个特征向量是有意义的,因为后面的特征向量对应的特征值比较小,特征向量非常的平滑,因此在实际中可以取拉普拉斯矩阵的前列构成的矩阵代替,这个过程就相当于频域架构的下采样的过程,这里的就相当于空域架构中的,每一层可以取不同的值。按照目前这种架构所需的参数复杂度为。
四、实验
本文中提出的两种架构在两个数据集上进行了实验验证效果。具体实验设置参看原论文,这里不做赘述。
- 采样MNIST数据集
这个数据集是从MNIST数据集的每张图片()上采样个样本点构建图。实验样本如下图:
样本实验结果如下图所示:
结果- 球体上的MNIST数据集
这个数据集将MNIST数据集中的样本提升到3维空间中。实验样本如下图:
样本实验结果如下图所示:
结果1 结果2参考资料
ref:图傅里叶变换
ref:paper reading:[第一代GCN] Spectral Networks and Deep Locally Connected Networks on Graphs
网友评论