图卷积网络(Graph Convolutional networks, GCN) 简述

图卷积网络(Graph Convolutional networks, GCN) 简述

1 背景

卷积神经网络(CNN)的输入是图片等具有欧几里得结构的图结构,也就是这样的图:

这样的“图”并不是广义上的“图”。我们经常需要提取广义的具有点和边的图的特征:

2 问题描述

对于图 G=(V,E) ,我们使用以下特征:

  1. 节点特征:每个节点 i 均有其特征 x_i ,可以用矩阵 X_{N * D} 表示。其中 N 表示节点数, D 表示每个节点的特征数。
  2. 图结构特征:图结构上的信息可以用邻接矩阵 A 表示。

我们的目标是提取出这种广义图结构的特征,进而完成一些任务,如标签补全等。

3 解决思路

在问题描述中我们提到两类特征:节点特征图结构特征。如果我们使用节点特征进行标签补全,那么完全就可以看作是一个标准的结构化特征分类问题,所以我们现在的挑战是如何使用图结构特征帮助训练。公式化的描述为:

其中 H^{(0)} = X

解决思路I:

首先,我们可以使用一种简单的思路:

这里 W 是上一层特征 H 的权重; \sigma 是激活函数,此处可以使用简单的 ReLU

这种思路是基于节点特征与其所有邻居节点有关的思想。邻接矩阵 A 与特征 H 相乘,等价于令,某节点的邻居节点的特征相加。多层隐含层,表示我们想近似利用多层邻居的信息。

这样的思路存在两大问题:

  1. 如果节点不存在自连接(自身与自身有一条边),邻接矩阵 A 在对角线位置的值为0。但事实上在特征提取时,自身的信息非常重要。
  2. 邻接矩阵 A 没有被规范化,这在提取图特征时可能存在问题,比如邻居节点多的节点倾向于有更大的特征值。

解决思路II:

来源:参考文献[2]

基于以上问题,可以提出改进的思路:

这种思路解决了上述问题1和问题2:

  1. 解决问题1的方法是利用以下式子:

让邻接矩阵 A 与单位矩阵 I 相加,就引入了节点自连接的特征。

2. 解决问题2的方法是让邻接矩阵规范化,其中矩阵 D 的定义如下:

矩阵 D 是一个对角线矩阵,其对角线位置上的值也就是相应节点的度。

上述式子也可以表示为:

其中

其中 d_i d_j 分别表示节点 i 和节点 j 的度。

在这种思路下,使用多层隐含层进行训练,我们就可以使用多层邻居的信息。

4 训练过程

对于整个训练过程,我们只需要对各层的权重矩阵 W 进行梯度下降训练,而规范化后的邻接矩阵,在训练过程中实际上是个常量:

5 实际问题

我们可以用上述思路解决图数据的标签补全问题。在这个问题中,对于部分节点,我们有其标注的分类,而其他标签,我们需要训练好的模型帮助我们进行分类。

在训练过程中,我们可以看到特征提取层后的结果:

我们可以看到经过特征提取后,相似的节点被嵌入到了相近的位置。

参考文献

  1. How powerful are Graph Convolutional Networks?
  2. [1609.02907] Semi-Supervised Classification with Graph Convolutional Networks
编辑于 2019-05-17