参考 https://tkipf.github.io/graph-convolutional-networks/
原作 THOMAS KIPF, 30 SEPTEMBER 2016
翻译 by Small_Wind
学习图卷积网络的路上,看到了这篇博客,感觉还不错,顺带整理下并翻译了一下,如有任何问题,请在评论进行回复
综述(Overview)
Many important real-world datasets come in the form of graphs or networks: social networks, knowledge graphs, protein-interaction networks, the World Wide Web, etc. (just to name a few). Yet, until recently, very little attention has been devoted to the generalization of neural network models to such structured datasets.
In the last couple of years, a number of papers re-visited this problem of generalizing neural networks to work on arbitrarily structured graphs (Bruna et al., ICLR 2014; Henaff et al., 2015; Duvenaud et al., NIPS 2015; Li et al., ICLR 2016; Defferrard et al., NIPS 2016; Kipf & Welling, ICLR 2017), some of them now achieving very promising results in domains that have previously been dominated by, e.g., kernel-based methods, graph-based regularization techniques and others.
In this post, I will give a brief overview of recent developments in this field and point out strengths and drawbacks of various approaches. The discussion here will mainly focus on two recent papers:
- Kipf & Welling (ICLR 2017), Semi-Supervised Classification with Graph Convolutional Networks (disclaimer: I’m the first author)
- Defferrard et al. (NIPS 2016), Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering
and a review/discussion post by Ferenc Huszar: How powerful are Graph Convolutions? that discusses some limitations of these kinds of models. I wrote a short comment on Ferenc’s review here (at the very end of this post).
许多重要的真实世界数据集以图表或网络的形式出现:社交网络、知识图谱、蛋白质相互作用的网络、万维网等等(仅举几个例子)。然而,直到最近,依然很少有人关注,将神经网络模型泛化到这种结构化的数据集。
在过去的几年中,许多论文重新讨论了将神经网络泛化到任意结构图上的问题,其中一些已经在以前被基于核的方法、基于图的正则化技术等主导的领域,取得了非常有前途的成果。
在这篇文章中,我将简要概述这一领域的最新发展,并指出各种方法的优缺点。这里的讨论主要集中在最近的两篇论文上:
-
Kipf & Welling (ICLR 2017), Semi-Supervised Classification with Graph Convolutional Networks (写这篇源博客的作者是第一作者)
-
Defferrard et al. (NIPS 2016), Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering
以及Ferenc Huszar的一篇评论/讨论帖子:图卷积有多强大?讨论了这类模型的一些局限性。我在这里(在这篇文章的最后)对Ferenc的评论写了一个简短的评论。
大纲(Outline)
- 对图神经网络模型的简要介绍
- 谱图卷积和图卷积网络 (GCNs)
- Demo:一个简单的一阶GCN图嵌入模型
- GCNs作为Weisfeiler-Lehman算法的可微推广
如果你对GCNs和相关的理论比较熟悉,你可以直接跳转到第三部分
图神经网络有多强大(How powerful are Graph Convolutional Networks?)
最近的相关文献(Recent literature)
将成熟的神经网络模型(如RNN或CNN)推广到任意结构的图上是一个具有挑战性的问题。最近的一些论文介绍了特定于问题的专门架构(e.g. Duvenaud et al., NIPS 2015; Li et al., ICLR 2016; Jain et al., CVPR 2016)其他的利用谱图理论中已知的图卷积来定义用于多层神经网络模型的参数化滤波器,类似于我们所熟知和喜爱的“经典”CNN架构(Bruna et al., ICLR 2014; Henaff et al., 2015)
最近更多的工作集中在,弥补快速启发式和缓慢启发式,但多少更有原则的谱方法之间的差距。Defferrard 等人 (NIPS 2016)使用带有自由参数的切比雪夫多项式在谱域近似光滑滤波器,这些参数在类似神经网络的模型中学习。他们在正则域(如MNIST)上取得了令人信服的结果,接近于一个简单的2D CNN模型。
在 Kipf & Welling(ICLR 2017)中,我们采用了一种有点类似的方法,从光谱图卷积的框架开始,但引入了简化方法(我们将在后面讨论),在许多情况下,可以显著提高训练时间和更高的预测精度,在许多基准图数据集上达到最先进的分类结果。
GCNs 第一部分:定义(GCNs Part I: Definitions)
目前,大部分神经网络模型具有某种共同的架构。我将把这些模型称为图卷积网络(GCNs);卷积,因为滤波器参数通常在图中的所有位置共享(权值共享)
对于这些模型,目标是学习 图 G = ( V , E ) G=(V,E) G=(V,E)上的信号/特征函数,并将其作为输入:
- 对于节点 i i i,有特征描述子 x i x_i xi。因此,特征矩阵 X X X的维度为 N × D N × D N×D( N N N表示节点的数量, D D D表示输入特征的数量)
- 用矩阵形式可对图结构进行代表性描述;通常以邻接矩阵 A A A(或其某些函数)的形式出现
并产生一个节点级输出矩阵 Z Z Z (一个维度未 N × F N × F N×F的特征矩阵,其中 F F F是每个节点的输出特征数)。图级输出可以通过引入某种形式的池操作来建模(参见,例如Duvenaud等人, NIPS 2015)。
每一个神经网络层都可以用一个非线性函数进行表示:
H
(
l
+
1
)
=
f
(
H
(
l
)
,
A
)
H^{(l+1)}=f(H^{(l)},A)
H(l+1)=f(H(l),A)
其中,
H
(
0
)
=
X
,
H
(
L
)
=
Z
H^{(0)}=X,H^{(L)}=Z
H(0)=X,H(L)=Z(
z
z
z表示节点级输出),
L
L
L表示层数。然后,具体的模型,差异在如何对
f
(
⋅
,
⋅
)
f(⋅,⋅)
f(⋅,⋅)进行选择和对其进行参数化。
GCNs 第二部分:一个简单的栗子(GCNs Part II: A simple example)
作为一个栗子,我们考虑如下分层传播规则的简单形式:
f
(
H
(
l
)
,
A
)
=
σ
(
A
H
(
l
)
W
(
l
)
)
,
f(H^{(l)},A)=σ(AH^{(l)}W^{(l)}),
f(H(l),A)=σ(AH(l)W(l)),
其中,
W
(
l
)
W^{(l)}
W(l)表示第
l
l
l层的权重矩阵,
σ
(
⋅
)
σ(⋅)
σ(⋅)表示非线性激活函数,例如
R
e
L
U
ReLU
ReLU,尽管表达式很简单,但是它确实很强大(稍后讨论这个问题)。
但首先,让我们解决这个简单模型的两个局限性:与 A A A相乘意味着,对于每个节点,我们把所有邻接节点的特征向量加起来,而不是节点本身(除非图中有自循环)。我们可以通过在图中执行自循环来“修复”这个问题:我们只需将单位矩阵添加到 A A A。
第二个主要的限制是
A
A
A通常不是标准化的,因此与
A
A
A相乘将完全改变特征向量的规模(我们可以通过观察
A
A
A的特征值来理解这一点)。将
A
A
A标准化,使所有行和为1,即
D
−
1
A
D^{−1}A
D−1A(其中
D
D
D是节点度矩阵,一个对角矩阵),就可以消除这个问题。与
D
−
1
A
D^{−1}A
D−1A相乘相当于取相邻节点特征的平均值。实际上,当我们使用对称的标准化(即
D
−
1
A
D
−
1
D^{−1}AD^{−1}
D−1AD−1)时,动力学变得更加有趣(因为这不再等于仅仅是对邻接点进行平均)。结合这两种技巧,我们基本上得到了Kipf & Welling (ICLR 2017)中引入的传播规则:
f
(
H
(
l
)
,
A
)
=
σ
(
D
^
−
1
/
2
A
^
D
^
−
1
/
2
H
(
l
)
W
(
l
)
)
f(H^{(l)},A)=σ(\hat D^{−1/2}\hat A\hat D^{−1/2}H^{(l)}W^{(l)})
f(H(l),A)=σ(D^−1/2A^D^−1/2H(l)W(l))
其中,
A
^
=
A
+
I
\hat A=A+I
A^=A+I,其中
I
I
I是单位矩阵,
D
^
\hat D
D^是
A
^
\hat A
A^的对角节点度矩阵。
在下一节中,我们将进一步了解这种类型的模型是如何在一个非常简单的示例图上运行的:Zachary的空手道俱乐部网络(务必请看一下Wikipedia article)【实际上就是一个数据集】。
GCNs 第三部分:嵌入空手道俱乐部网络(GCNs Part III: Embedding the karate club network)
让我们来看看简单的GCN模型(见上一节或Kipf & Welling, ICLR 2017)是如何在一个著名的图数据集上工作的:Zachary’s空手道俱乐部网络(见上图)。
我们取一个权值随机初始化的三层GCN。现在,甚至在训练权重之前,我们简单地将图的邻接矩阵和 X = I X=I X=I(即单位矩阵,因为我们没有任何节点特征)插入到模型中。三层GCN现在在向前传递过程中执行三个传播步骤,并有效地卷积每个节点的三阶邻域(所有节点最多3个“跳”)。值得注意的是,该模型生成了这些节点的嵌入,它们与图中的群落结构(community-structure)非常相似(见下图)。记住,我们已经完全随机初始化了权重,并且还没有执行任何训练更新(到目前为止)!
这似乎有点令人惊讶。最近一篇关于DeepWalk模型的论文(Perozzi et al.,KDD 2014)表明,它们可以在一个复杂的无监督训练过程中学习非常相似的嵌入。如何可能获得这样的嵌入或多或少“免费”使用我们简单的未经训练的GCN模型?
我们可以通过将GCN模型解释为著名的Weisfeiler-Lehman图算法的广义可微版本来阐明这一点。(一维)Weisfeiler-Lehman算法的工作原理如下:
对于所有的 v i ∈ G v_i∈G vi∈G:
- 获取邻接点 v j v_j vj的特征 h v j h_{v_j} hvj
- 更新节点特征 h v j ← h_{v_j}← hvj←hash ( ∑ j h v j ) (\sum_{j}{h_{v_j}}) (∑jhvj),其中hash(·)是单映射hash函数
重复k步,直到收敛。
在实践中,Weisfeiler-Lehman算法为大多数图分配了一组唯一的特征。这意味着每个节点都被分配了一个唯一描述其在图中角色的特性。例外情况是高度规则的图形,如网格、链等。对于大多数不规则图,这个特征分配可以用来检查图的同构性(即两个图是否相同,直到节点的排列)。
回到我们的图卷积逐层传播规则(现在是矢量形式):
h
v
i
(
l
+
1
)
=
σ
(
∑
j
1
c
i
j
h
v
j
(
l
)
W
(
l
)
)
,
h^{(l+1)}_{v_i}=σ(\sum_{j}{\frac{1}{c_{ij}}h^{(l)}_{v_j}W^{(l)}}),
hvi(l+1)=σ(j∑cij1hvj(l)W(l)),其中
j
j
j索引
v
i
v_i
vi的邻节点。
c
i
j
c_{ij}
cij是边
(
v
i
,
v
j
)
(v_i,v_j)
(vi,vj)的一个归一化常数,这源于在我们的GCN模型中使用对称归一化邻接矩阵
D
−
1
A
D
−
1
D^{−1}AD^{−1}
D−1AD−1。我们现在看到,这个传播规则可以解释为原始Weisfeiler-Lehman算法中使用的哈希函数的可微和参数化(使用
W
(
l
)
W^{(l)}
W(l))变体。如果我们现在选择一个适当的非线性并初始化随机权矩阵,使其正交(或使用来自Glorot & Bengio, AISTATS 2010的初始化),这个更新规则在实践中变得稳定(也多亏了
c
i
j
c_{ij}
cij的归一化)。我们做了一个值得注意的观察,我们得到了有意义的平滑嵌入,我们可以将距离解释为局部图结构的(非)相似性!
GCNs 第四部分:半监督学习(GCNs Part IV: Semi-supervised learning)
因为我们的模型中的一切都是可微分和参数化的,我们可以添加一些标签,训练模型,并观察嵌入的反应。我们可以使用Kipf & Welling (ICLR 2017)中引入的GCNs半监督学习算法。我们简单地为每个类/社区标记一个节点(在下面的视频中突出显示的节点),并开始为几个迭代进行训练。
注意,该模型直接产生了一个我们可以立即可视化的二维潜在空间。我们注意到,3层GCN模型设法线性分离社区,给每个类一个标记的例子。考虑到模型没有收到节点的特征描述,这是一个值得注意的结果。同时,可以提供初始节点特征,这正是我们在论文(Kipf & Welling, ICLR 2017)中描述的实验中所做的,以在多个图数据集上获得最先进的分类结果。
结论
关于这一主题的研究才刚刚开始。过去的几个月里,我们看到了令人兴奋的发展,但到目前为止,我们可能只触及了这类模型的皮毛。图上的神经网络如何进一步适应特定类型的问题,比如,在有向图或关系图上学习,以及如何使用学过的图嵌入来完成未来的任务,等等,还有待观察。这个列表绝不是详尽的,我希望在不久的将来会出现更多有趣的应用程序和扩展。请在评论中告诉我。
SOURCE CODE
We have released the code for Graph Convolutional Networks on GitHub: https://github.com/tkipf/gcn.
You can follow me on Twitter for future updates.
参考
本文原博客:https://tkipf.github.io/graph-convolutional-networks/
Latex常用语法:https://blog.csdn.net/daaikuaichuan/article/details/78626125
字母头上如何加符号:https://blog.csdn.net/program_developer/article/details/89462239