Spectral Networks and Deep Locally Connected Networks on Graphs
初代GCN
1.概要
- 在欧氏空间中,卷积网络(CNN)具有平移不变性、权值共享、局部连接、分层次表达的特点,而图片及音频信号在其域中具有局部的平移不变性,因此卷积神经网络在图片及音频处理问题上表现良好。
平移不变性:
平移是一种几何变换,表示把一幅图像或一个空间中的每一个点在相同方向移动相同距离。比如对图像分类任务来说,图像中的目标不管被移动到图片的哪个位置,得到的结果(标签)应该是相同的,这就是卷积神经网络中的平移不变性。平移不变性意味着系统产生完全相同的响应(输出),不管它的输入是如何平移的 。平移不变性依赖于CNN的卷积和池化两步操作
-
然而,图网络是一种非欧式结构的数据,网络是不规则的关系型数据,因此其不存在平移不变性。
无向图的空间结构:\(G=(\Omega,W)\),其中\(\Omega\)表示图中所有节点的集合,\(size = m\);\(W\)表示图的邻接矩阵,\(shape = (m,m)\),由于是无向图,\(W\)是一个对称矩阵。\(W\)中的值\(W_{i,j}\)表示节点\(i,j\)之间的边的权重,为非负值,当这两个节点之间没有边的时候,认为权重值为0。
图中每个节点一般具有两种信息:
一是每个节点都有自己的特征信息。比如人的三维骨架,每个点都有三维坐标数据。
二是图谱中的每个节点还具有结构信息。具体来说就是节点与节点之间相连的信息。
个人理解:找不到一个统一模式的卷积核对于图中的每一个节点进行常规的卷积操作,因为图中的每一个节点都具有不同的特征信息以及结构信息。
因此,图是一种非欧式空间的数据结构,无法进行传统意义上的卷积操作。本论文旨在解决这一问题,将卷积的思想从欧式数据扩展 到非欧数据上。
-
本论文提出了两种结构:
-
基于域的层次聚类(空间结构,spatial construction)
将性质2,3扩展到普遍的图中,并以此定义“局部连接和池化”,将参数数量从\(O(n^2)\)降低到\(O(n)\)
-
基于图的拉普拉斯矩阵(谱结构,spectral construction)
它利用了傅里叶域中卷积的性质同时结合了图的拉普拉斯算子从而实现将原域的卷积转换到了傅里叶变换下频域的相乘。所需要的参数数量同样为\(O(n)\)。
这两种结构都具有较小的参数数量,能够适用于大维度的数据,运算效率更高。
-
-
同时作者通过实验证明对于低维图而言,学习卷积层成为可能因为存在大量与输入大小无关的变量。于是得到了有效的深层结构。
-
主要贡献:
-
证明了对于弱欧式几何的数据结构,可以用\(O(n)\)的参数数量来构建高效的网络结构。
-
提出了一种具备\(O(1)\)参数的网络结构。
-
2. 空间结构(Spatial Construction)
最直接地概括CNN泛化得到一般图的要点是:多尺度、分层次、局部感受野。对于一个图\(G=(\Omega,W)\),\(\Omega\)是一个规模为m的离散集,\(W\)为规模为mxm的对称、非负矩阵。
2.1 邻域(Neighborhoods)
在传统的欧式空间中(以图像为例),在卷积时需要设置一定大小的卷积核,如 kernel = (3,3),就是相当于中心像素点的邻域为周围的8个像素点。
在图中,利用矩阵\(W\)来确定每个节点的邻域。论文中给出公式:\[N_{\delta}(j) = \{i \in \Omega : W_{ij} > \delta \} \]表示节点\(j\)的邻域\(N_\delta(j)\),是一个集合。以\(\delta\)为阈值划分节点\(i,j\)的邻域,权值\(W_{ij}\)大于\(\delta\)则表明\(i\)属于节点\(j\)的邻域。
我们可以将注意力限制在稀疏的“卷积核”上,感受野由这些邻域给出以获得局部连接的网络,从而将一个卷积层中的参数的数量减少到\(O(S \cdot n)\)。S是平均的邻居大小。
2.2 图上多尺度分析(Multiresolution Analysis on Graphs)
(这个图相当于是GCN的俯视图,灰色为第一层,彩色为第二层,第三层未画出)
2.3 深度局部连接网络
在传统的欧氏空间中,在进行卷积时需要设定一定的步长,如stride=(3,3)
,假设input_size=18*18
, filter_size=3*3
,则可以计算出output_size=6*6
;我们换一种角度理解这个卷积的步骤:实际上卷积相当于对于输入图像的\(18*18\)给像素点寻找了\(6*6\)个聚类中心,然后进行聚类操作。每一个类中的元素为其中心的邻域元素。将每一个类中的所有元素与对应的卷积核相乘求和,得到一个输出的像素点。
由于我们在2.1节中已经介绍过邻域在图结构上的扩展概念\(N_{\delta}(j) = \{i \in \Omega : W_{ij} > \delta \}\),因此比较容易定义深度局部连接网络。但在此之前,让我们先来定义一些基本概念。
- 各层输入信号
\(\Omega:\)各层的输入信号。其中\(\Omega_0\)是原始的输入信号
- 网络层数
假设我们的深度局部连接网络一共有K层,那么表示神经网络除了有原始的输入层以外,还需要经过K个卷积层。
假设输入的图为\(G=(\Omega,W),\)我们将输入层的图结构记作\(\Omega_0 = \Omega,\)第k层卷积层的激活值记为\(\Omega_k\)。
由于第\(\Omega_{k-1}\)到\(\Omega_k\)是通过聚类得到的,因此我们只需要知道层与层之间的聚类个数就可以根据\(\Omega_{k-1}\)的结构推导出\(\Omega_k\)的结构。
例如,第\(k-1\)层的聚类个数为\(d_{k-1}\),则表明第\(k\)层共有\(d_{k-1}\)个聚类,因此第\(k\)层的特征的维度就为\(d_{k-1}\)
\[N_k = \{N_{k,i; i = 1,...,d_{k-1}}\} \ \ \ \ \ \ \ \text{第k层共有$d_{k-1}$个类,每一个类有其所对应的邻域} \]
- 下采样(聚类)数
第k层采样数记为\(d_k\),同时也是下一层输入的维度
- 邻域
\(N_{k,i}\)表示第k层第i个顶点的邻居,局部连接的感受野。
- 滤波器数目
\(f_k\)表示第k层的滤波器数目,graph中每一个顶点的特征数。
我们结合下图分析一下网络结构:
(这个图相当于是GCN的侧视图,将网络结构分层展示了出来)
-
输入层的图\(\Omega_0\):
具有12个节点,每一个节点的特征数为1。
-
第一层的图\(\Omega_1\)
由于第一层的滤波器个数为4,因此第一层每一个节点经过滤波后产生的新特征数为4。\((f_1 = 4)\)
接下来将这12个具有4个特征的节点聚类为6个新的节点。\((d_1 = 6)\)
-
第二层的图为\(\Omega_2\)
由于第二层的滤波器个数为6,因此第一层每一个节点经过滤波后产生的新特征数6。\((f_2 = 6)\)
接下来将这6个具有4个特征的节点聚类为3个新的节点。\((d_2 = 3)\)
由图可知,随着层数的增加,图的空间分辨率降低,即空间点数减少;每一层的滤波器数目增加,在第二层为4个,第三层为6个
可以发现,在GCN中,滤波相当于卷积操作,聚类相当于池化操作。
我们用\(X_k\)表示第k层信号。
滤波器进行特征点层数上的相加类似于CNN中的卷积操作,之后在对每一个滤波器产生的值进行处理。局部性体现在滤波器中(滤波器由neighborhoods给定),表示其他的邻域内的信息向中心节点汇聚。之后经过\(h\)的非线性激活和L_k$的池化(figure1 所示的聚类操作),得到下一层的信号
参考
[1] 图卷积网络 帅的被人砍1996 2019-04-24 16:55:41 https://blog.csdn.net/Dongjiuqing/article/details/89496671
[2] 基于小波的图卷积神经网络 沈华伟 2020-03-31 11:58:47 https://www.bilibili.com/video/BV1ta4y1t7EK?from=search&seid=1396531989268603044