前言
这篇文章是最早提出将CNN扩展到图上,直接处理图类型的数据而不需要对图类型的数据进行转化。
这篇文章可以说是GCN领域的开山之作,在文中直接指出了日后GCN领域研究的两大方向:基于空域和基于频域。在此篇博客中着重对基于空域的GCN进行解读,关于基于空域GCN的理论框架在上一篇博客中基于频域GCN理论基础(拉普拉斯矩阵与傅里叶变换)
1.综述
卷积神经网络在图片和音频的识别任务中表现良好,是充分利用了信号在其域中的局部平移不变性
何为局部平移不变性
1.首先明确何为平移不变性:
在欧几里得几何中,平移是一种几何变换,表示把一幅图像或一个空间中的每一个点在相同方向移动相同举例,比如对图像分类任务来说,图像中的目标不管被移动到图片的哪个位置,得到的结果(标签)应该是相同的,这就是卷积神经网络中的平移不变性。平移不变性意味着系统产生完全相同的响应(输出),不管它的输入是如何平移的 。
2.在CNN中如何实现平移不变性
在CNN中卷积被定义为不同位置的特征检测器,同时存在的池化操作返回局部感受野中最显著的值。两者结合起来提供了CNN的局部平移不变性,通俗来说就是通过卷积+池化的操作以后不管某一特征移动了位置,总可以检测出来输入到下一层中,且全连接层是加权求和计算被CNN激活的特征又可以传导到下一层中
3.基于CNN引发的对GCN的西靠
但由于图是非欧氏空间的数据结构无法进行传统意义上的卷积操作,但是同时又希望卷积的思想可以应用在图结构上。于是作者基于此提出了两种结构,一种基于域的层次聚类(空域),另一种基于图拉普拉斯矩阵(频域)
同时作者通过实验证明对于低维图而言,学习卷积层成为可能因为存在大量与输入大小无关的变量。于是得到了有效的深层结构
2.CNN高效的原因及与GCN的关系
无论是文本数据(1D)还是图片数据(2D)都是规则化的数据。以图片为例,CNN可以利用几种有效的结构减少系统中的参数数量:
1.固定大小的卷积核在图上进行遍历,在此过程中用卷积+非线性变换的激活函数替代了一般化的线性映射。提高深层次特征提取能力同时,同一卷积核在一张图上共享权重,大大减少了参数的数量
2.由于网格上的结构特点,可以支持紧凑的过滤器,其支持的过滤器通常比输入信号的尺寸小的多。这里的意思是卷积核的尺寸远小于输入图片的尺寸因此可以更加紧凑的提取特征???
3.网格的结构允许多尺度的二元聚类,也就是子采样操作,在CNN中通过步长卷积和池化实现
这里举了一个例子:
如果在
d
d
d维网格上有
n
n
n个输入坐标,则有
m
m
m个输出的全连通层,需要
n
∗
m
n*m
n∗m个参数,在典型的运行状态下,其复杂度为
O
(
n
2
)
O(n^2)
O(n2)参数。使用任意的过滤器而不是通用的全连接层可以将每个特征图的复杂度降低到
O
(
n
)
O(n)
O(n)个参数,就像通过构建“局部连接”网络来使用度量结构一样。结合使用这两种方法给出了
O
(
k
⋅
S
)
O (k·S)
O(k⋅S)参数,k是特征图的数量和S的支持过滤器,因此学习复杂性不依赖于
n
n
n。最后,使用多尺度二元聚类使每个继承层使用比
2
d
2^d
2d更少的(空间)坐标/过滤器。
图提供了一个自然的框架来概括低维网格结构,并扩展了卷积的概念。巴拉巴拉一大堆终于说到了正题上。在此篇文章中在图上讨论深层神经网络,而不是规则的网络上,提出了两种不同的结构。第一个是,我们展示了一个可以将上述结构(2)和(3)扩展到一般图的结构,并使用它们来定义“局部”连接和池化层,这需要 O ( n ) O(n) O(n)参数而不是 O ( n 2 ) O(n^2) O(n2)。称之为空间结构。另一种结构,称之为谱结构,它利用了傅里叶域中卷积的性质同时结合了图的拉普拉斯算子从而实现将原域的卷积转换到了傅里叶变换下频域的相乘。看到这里可以说这篇文章是第一代GCN不为过,直接确定了日后GCN的两个研究方向空域和频域。
3.空域GCN
最直接的概括如何泛化CNN到一般图的要点就是:多尺度、分层次、感受野
3.1图的局部性概念
在图中用加权图
G
=
(
ω
,
W
)
G=(\omega,W)
G=(ω,W)表示
ω
\omega
ω是大小为
m
m
m的离散集,
W
W
W是
m
∗
m
m*m
m∗m大小的对称非负矩阵
局部性的概念在图的上下文中很容易推广。实际上,图中的权重决定了局部性的概念。例如,一个简单的方式来定义W的邻居是设定一个阈值δ> 0和把邻居设置为
我们可以将注意力限制在稀疏的“过滤器”上,感受野由这些邻域给出以获得局部连接的网络,从而将一个过滤器层中的参数的数量减少到
O
(
S
⋅
n
)
O(S⋅n)
O(S⋅n)。
S
S
S是平均的邻居大小。换句话说就是可以根据权重值来筛选某一结点的邻居
3.2图的多分辨率分析( Multiresolution Analysis on Graphs)
其实就是一种图聚类操作
由CNN上的操作所启发,作者介绍了一种图上的操作,此操作类比于CNN中池化和下采样可以减少CNN中feature map的大小。通过这种操作可以在图上进行类似于池化的操作以减少特征图的尺寸,简单来说就是在图上将多个点映射成一个点层层映射,达到减少图上点的目的。同时得到聚合了多个点且包含更丰富信息的点。这种方法叫做图的多分辨率分析( Multiresolution Analysis on Graphs).作者介绍此方法还是一个开放的研究领域也就是还没有定论,于是作者在此篇文章中将使用一种比较简单的凝聚方法。具体的凝聚过程如图所示
现在我们考虑有K个尺度。第0个尺度表示原始的图,即
Ω
0
=
Ω
\Omega_0=\Omega
Ω0=Ω对于之后的每个尺度的特征图,定义为
Ω
k
,
k
=
1...
K
\Omega_k,k=1...K
Ωk,k=1...K.聚类算法会把图
Ω
k
−
1
\Omega_{k-1}
Ωk−1分成
d
k
d_k
dk类。
d
0
d_0
d0为原始图的结点数量
m
m
m因此图
Ω
k
−
1
\Omega_{k-1}
Ωk−1中每个结点的相邻结点可以定义为上述描述
明确各符号的定义:
- K K K:聚类的层数,也就是网络的层数
- Ω \Omega Ω:代表着每一层网络的顶点个数,各层的输入信号 Ω k \Omega_k Ωk,原始的输入信号就是 Ω 0 \Omega_0 Ω0
-
d
k
d_k
dk:第
k
k
k层的下采样的cluster数,用于决定下一次输入feature的维
度。 - N k , i N_{k,i} Nk,i:第k层的第i个neighborhoods,局部连接的接收域
- f k f_k fk:第k层的滤波器数目,graph中每一个点的特征数。
举例:
对于此图来说
第一层12个结点,第二层6个结点,第三层按图看是3个结点(图中未标明)
第一层有6个聚类,第二层有3个聚类,第三层图中未标明未知
相对而言每一层的邻域满足定义
N
k
N_k
Nk={
N
k
,
i
;
i
=
1...
d
k
−
1
N_{k,i};i=1...d_{k-1}
Nk,i;i=1...dk−1}
3.3 深度局部链接网络(Deep Locally Connected Networks)
空域图卷积重点
如图所示为卷积+池化的整个操作过程,此图对应的就是图聚类的示意图,只不过聚类的时候含有多个滤波器,这种情况就可以对应于传统CNN操作。
这里需要注意的是:
- 卷积的输入的结点特征可能是一个向量,维度记为 f k − 1 f_{k-1} fk−1.同时,一次卷积操作可能包含多个卷积核,即卷积的通道数 f k f_k fk类似与图像中的卷积,对输入特征的每一维做卷积,然后累加求和,就可以得到某个通道 j j j的卷积结果。
- x k = ( x k , i ; i = 1... f k − 1 ) x_k=(x_{k,i};i=1...f_{k-1}) xk=(xk,i;i=1...fk−1)是 k k k层的输入,大小为 d k − 1 ∗ f k − 1 d_{k-1}*f_{k-1} dk−1∗fk−1, d k − 1 d_{k-1} dk−1是第 k − 1 k-1 k−1层的图聚类数量也就对应为下一层的结点数量, f k − 1 f_{k-1} fk−1是第 k − 1 k-1 k−1层特征的维度(也就是卷积核的数量)
- 公式中括号内的对滤波器和输入运算求和则完全对应于卷积操作,也就是卷积操作后根据卷积核的数量组成下一层的feature map
核心公式为
明确变量意义: - x ( k , i ) x_(k,i) x(k,i):第 k k k层信号的第 i i i个特征
- F k , i , j F_{k,i,j} Fk,i,j:第 K K K层的第 j j j个滤波器的第 i i i个值
- h h h:非线性激活函数
- L k L_k Lk:第 k k k层的池化操作
- ( ∑ i = 1 f k − 1 F k , i , j x k , i ) (\sum_{i=1}^{f_{k-1}}F_{k,i,j}x_{k,i}) (∑i=1fk−1Fk,i,jxk,i):是对信号 x k x_{k} xk进行滤波器 F k , j F_{k,j} Fk,j操作也就是对每一个滤波器进行特征点层数上的相加类似于CNN中的卷积操作,同时考虑了个数为 f k f_k fk的这一层的滤波器个数类比于CNN中的通道数,之后在对每一个滤波器产生的值进行处理。局部性体现在滤波器中(滤波器由neighborhoods给定),表示其他的邻域内的信息向中心节点汇聚。之后经过 h h h的非线性激活和 L k L_k Lk的池化(figure1 所示的聚类操作),得到下一层的信号
4.结论
经过如上图所示的操作之后我们可以得出两点结论:
- 随着层数的增加,图的空间分辨率降低,即空间点数减少,因为由上述公式可知,我们在对一个邻域的结点进行滤波器操作之后进行了加权,也就是将一个邻域的结点的信息进行汇总,之后进行了池化操作。可以类比于欧氏空间的CNN操作。就是由多个滤波器作用于图片。每个滤波器得到的值进行拼接形成下一层的feature map
- 由图可知每一层的滤波器数目增加,在第二层为4个,第三层为6个
综上所述:信号输入到model后,卷积操作通过与滤波器
F
F
F实现(
F
F
F由 neighborhoods 决定,实现 locally),之后通过聚类实现空间上的下采样,得到该层的输出结果。
使用空域构建,我们实现了CNN的特点(2)(3),但是很难实现特点(1)权重共享。从公式中我们可以看出,对于每个结点,卷积的权重是不同的。但是对于图像中的卷积,不同位置的卷积核的权重是共享的。主要的原因是在图G上无法使用传统的卷积公式计算,之前的内容只是近似的实现了卷积的操作。
5.优缺点
此种基于空域的GCN的优缺点如下
优点:
对于弱规则的图结构适用。也就是全局联系不大的图适用。因为整个操作的核心是基于聚类然后再聚类的局部进行卷积操作。如果整个图是有良好global embedding的高维图就没有聚类的优势反而会存在较大误差
缺点:
由图可知每个聚类的结点数可能不同同时采用不同的滤波器从而无法共享权重,在大图上导致了非常高的计算代价。换句话说就是CNN的单次卷积操作是由一个 filter 在整个数据立方(grid)上进行滑动(即 stride convolutions ),使得数据立方的不同位置可以使用同一个 fliter,而这个操作无法在 spatial construction 的 GCN 中实现。
6.频域卷积
令
V
V
V为图拉普拉斯
L
L
L的特征向量,按特征值排序。给出一个加权图,我们可以通过对权值的频谱进行操作来推广卷积网络,该谱由其图拉普拉斯的特征向量给出。
为了简单起见,让我们首先描述一个结构,每层
k
=
1...
K
k = 1 . . .K
k=1...K转换大小为
Ω
×
f
k
−
1
\Omega\times f_{k-1}
Ω×fk−1的输入向量
x
k
x_k
xk到一个输出大小为
Ω
×
f
k
\Omega\times f_{k}
Ω×fk的输出向量
x
k
+
1
x_{k+1}
xk+1,也就是说,没有空间二次抽样
变量说明:
- x k , i x_{k,i} xk,i:第 k k k层的信号的第 i i i个特征
- F k , i , j F_{k,i,j} Fk,i,j第 k k k层的第 j j j个滤波器的第 i i i个值,整体来看这就是卷积核,在此表达式中是对称矩阵
- h h h非线性激活函数
- V V V图拉普拉斯矩阵的特征向量,由特征值排序
算法推导的具体流程可以详见我的上一篇博客
基于频域GCN理论基础(拉普拉斯矩阵与傅里叶变换)
7.实验
作者通过两个数字实验来证明模型的有效性。实验的数据集是MNIST。第一个实验是从原始28*28的图片中随机采样400个像素点,结果如图所示。这些像素点虽然还是有2-D结构,但是无法使用标准的卷积。
下采样MNIST数字举例
展示了实验一构建的图的层次聚类结果,(a)k=1最细粒度的聚类结果 (b)k=3的聚类结果
展示了图拉普拉斯矩阵的两个特征向量, 图拉普拉斯矩阵的两个特征向量u2,u20
这里分别使用Nearest Neighbor分类器,两层全连接神经网络作为对比模型。第一个实验的结果如表1所示,FC
N
N
N表示全连接层(
N
N
N维输出),LRF
N
N
N表示空域卷积(
N
N
N维输出),MP
N
N
N表示max-pooling层(
N
N
N维输出),SP
N
N
N表示频域卷积(
N
N
N维输出):
MNIST中的数字由笔画构成,具有局部性。空域卷积明确地满足这一约束,而频域卷积并没有强制具有空间局部性.
空域和频域卷积在下采样MNIST上学习得到的卷积核。(a)(b)在两个不同的cluster中编码相同的特征的两个不同的感受野。©(d)频域卷积学习得到的卷积核。(e)(f)带平滑约束的空域卷积学习得到的卷积核。