文章目录
一、GCN
1.1 离散卷积
离散卷积本质上是一种加权求和
如图1所示,CNN中的卷积本质上就是利用一个共享参数的过滤器(kernel),通过计算中心像素点以及相邻像素点的加权和来构成特征图(feature map)实现空间特征的提取,当然加权系数就是卷积核的权重系数。
那么卷积核的系数如何确定的呢?是随机化初值,然后根据误差函数通过反向传播梯度下降进行迭代优化。这是一个关键点,卷积核的参数通过优化求出才能实现特征提取的作用,GCN的理论很大一部分工作就是为了引入可以优化的卷积参数。
图1 CNN中卷积提取feature map示意图
1.2 为什么要研究GCN?
CNN是Computer Vision里的大法宝,效果为什么好呢?原因在上面已经分析过了,可以很有效地提取空间特征。但是有一点需要注意:CNN处理的图像或者视频数据中像素点(pixel)是排列成成很整齐的矩阵(如图2所示,也就是很多论文中所提到的欧几里得结构Euclidean Structure)
图2 图像矩阵示意图(Euclidean Structure)
与之相对应,科学研究中还有很多Non Euclidean Structure的数据,如图3所示。社交网络、信息网络中有很多类似的结构。
图3 社交网络拓扑示意(Non Euclidean Structure)
实际上,这样的网络结构(Non Euclidean Structure)就是图论中抽象意义上的拓扑图。
所以,Graph Convolutional Network中的Graph是指数学(图论)中的用顶点和边建立相应关系的拓扑
图。
GCN研究的原因:
- CNN无法直接处理Non Euclidean Structure的数据。通俗理解就是在拓扑图中每个顶点的相邻顶点数目都可能不同,那么当然无法用一个同样尺寸的卷积核来进行卷积运算。
- 由于CNN无法处理Non Euclidean Structure的数据,又希望在这样的数据结构(拓扑图)上有效地提取空间特征来进行机器学习,所以GCN成为了研究的重点。
1.3 提取拓扑图空间特征的两种方式
1.3.1空间维度
Vertex domain(spatial domain)(空间域)是非常直观的一种方式。顾名思义:提取拓扑图上的空间特征,那么就把每个顶点相邻的neighbors找出来。这里面蕴含的科学问题有二:
- 按照什么条件去找中心vertex的neighbors,也就是如何确定receptive field(感受野)
- 确定receptive field,按照什么方式处理包含不同数目neighbors的特征?
1.3.2 图谱维度
借助于图的拉普拉斯矩阵的特征值和特征向量来研究图的性质
拉普拉斯矩阵
图5 Laplacian 矩阵的计算方法
常用的拉普拉斯矩阵实际有三种:
- L = D - A 定义的Laplacian 矩阵更专业的名称叫Combinatorial Laplacian(组合拉普拉斯算子)
- L^sys = D^-1/2 L D^-1/2 定义的叫Symmetric normalized Laplacian(对称归一化拉普拉斯算子),很多GCN的论文中应用的是这种拉普拉斯矩阵
- L^rw = D^-1 L 定义的叫**Random walk normalized Laplacian(随机游走归一化拉普拉斯算子)
二、GAT
1.1 基础
1.1.1 Graph数据结构的两种特征
- 对于任意一个顶点 i ,它在图上邻居Ni ,构成第一种特征,即图的结构关系。
- 当然,除了图的结构之外,每个顶点还有自己的特征 ℎi (通常是一个高维向量)。它可以使社交网络中每个用户的个体属性;可以是生物网络中,每个蛋白质的性质;还可以使交通路网中,每个交叉口的车流量。
1.2 GCN 的局限性
- GCN 结合邻近节点特征的方式和图的结构依依相关,这局限了训练所得模型在其他图结构上的泛化能力。
2 GAT
2.1 计算Attention
对于顶点i,逐个计算它的邻居们(j∈Ni)和它自己之间的相似系数
e
i
j
=
a
(
[
W
h
i
∥
W
h
j
]
)
,
j
∈
N
i
(
1
)
e_{i j}=a\left(\left[W h_i \| W h_j\right]\right), j \in \mathcal{N}_i (1)
eij=a([Whi∥Whj]),j∈Ni(1)
首先一个共享参数 W 的线性映射对于顶点的特征进行了增维,当然这是一种常见的特征增强(feature augment)方法;最后α(·)把拼接后的高维特征映射到一个实数上。
显然学习顶点 i,j 之间的相关性,就是通过可学习的参数 W和映射 α(⋅) 完成的。
有了相关系数,离注意力系数就差归一化了!其实就是用个softmax
α
i
j
=
exp
(
LeakyReLU
(
e
i
j
)
)
∑
k
∈
N
i
exp
(
LeakyReLU
(
e
i
k
)
)
\alpha_{i j}=\frac{\exp \left(\operatorname{LeakyReLU}\left(e_{i j}\right)\right)}{\sum_{k \in \mathcal{N}_i} \exp \left(\operatorname{LeakyReLU}\left(e_{i k}\right)\right)}
αij=∑k∈Niexp(LeakyReLU(eik))exp(LeakyReLU(eij))
2.2 加权求和
完成第一步,已经成功一大半了。第二步很简单,根据计算好的注意力系数,把特征加权求和(aggregate)一下。
h
i
′
=
σ
(
∑
j
∈
N
i
α
i
j
W
h
j
)
(
3
)
h_i^{\prime}=\sigma\left(\sum_{j \in \mathcal{N}_i} \alpha_{i j} W h_j\right) (3)
hi′=σ(∑j∈NiαijWhj)(3)
h
i
′
就是
G
A
T
输出的对于每个顶点
i
的新特征(融合了邻域信息),
σ
(
)
是激活函数。
h_i^{\prime} 就是GAT输出的对于每个顶点 i 的新特征(融合了邻域信息), \sigma\left(\right)是激活函数。
hi′就是GAT输出的对于每个顶点i的新特征(融合了邻域信息),σ()是激活函数。
原文链接:https://www.zhihu.com/question/54504471/answer/332657604