gcn 图卷积神经网络_经典半监督图卷积神经网络Semi-GCN

今天我将解读一篇非常经典的文章《SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS》。这篇论文提出了一种半监督图卷积算法,利用图的拓扑结构和节点的side informaton进行标签分类,效果较传统算法有了明显提升。

这篇论文已经有很多博客有非常详细的介绍,我对这篇论文的解读主要聚焦在对算法原理的深入理解上,希望给大家带来一些新的启发。


1、GCN的核心思想

先跳过论文大段的推导过程,只看最后的结论,GCN模型的向前传播公式是:

a4f826fc602e8d20ac26ad5e10b74271.png

通过该公式我们来探究模型到底是在干什么。为了理解方便,我用一个具体例子来说明该式子的含义。

假设有下面一个由5个Node组成的无向图:

0e5179c53d03d1e4849970fbd7de1358.png

根据图结构得到邻接矩阵A:

1c374b08c354dc91f8c504bdf212a148.png

在邻接矩阵A的基础上加上自环(单位对角阵I):

5e58c86f82cc752bb763eb33480045f6.png

为什么要加自环呢,这个留在后面再说。

根据加自环的邻接矩阵,很容易得到度矩阵(加自环):

fabfebf5045aa3a575785b8bf8e0d9fb.png

度矩阵是个对角阵,对角上的元素取值是邻接矩阵所在行求和。

在向前传播公式中有一个矩阵

,它是根据度矩阵(加自环)和邻接矩阵(加自环)计算的,在传播开始之前可以先计算好。

d3b6175d23c5dac0cc545a8568d88159.png

这里大家又会有疑问,为什么需要这样的变换,而不直接使用邻接矩阵呢?这个问题将在第二部分中解释,我们还是回到向前传播公式中。在神经网络第一层的传播中,输入是节点的特征。为了方便,假设每个Node的特征向量是1维的,于是X=(x1,x2,x3,x4,x5)',将特征矩阵左乘

,即可以得到变换后的特征:

可以看到,对比一个普通的NN,GCN只是在特征上做了一个变换,而这个变换的实质就是特征通过拓扑结构进行了传播。每个节点的特征不再是自身的特征,而是自身和其邻居节点的特征加权求和。讲到这里,大家就很清楚为什么加自环的吧,其目的是需要在特征变换时保留了自身特征的贡献。

在神经网络第二层的传播中,节点依然会按照上述机制进行特征传播,但这里的特征不再是节点的原始特征,而是经过变换后(传播->聚合->Emdedding->非线性变换)的特征。这个时候,每个节点可以接收到2-hop的信息,感受域进一步增加。

2. Laplacian矩阵

矩阵

是一种形式
Laplacian矩阵,Laplacian矩阵的形式决定了特征传播的贡献权重。在上述例子中,对于节点1,其变换后的特征由本身和它的邻居节点2共同贡献,贡献的权重分别是0.5(1/2)和0.32(
)。

实际上,Laplacian矩阵的形式一般有以下三种:

1)Unnormalized Laplacian:

2)Normalized Laplacian:

3)Random Walk Laplacian:

现在的问题是为什么在GCN中要使用Normalized Laplacian,这里我们只从直觉上说明这个问题。

假设节点A的邻居只有B,为了对A进行特征传播,一个最直接的聚合方法是就是平均贡献,即:X=0.5A+0.5B(X=1/degree(A)*A+1/degree(A)*B。这样的做法看起来很有道理,但是如果B的邻居非常非常多(极端情况是与图上其他所有点都连接),那么经过特征变换后图上很多点的特征都会非常像相似,因此显然在传播的时候需要考虑邻居的度。

因此,我们可以将传播公式改写成X=1/degree(A)*A+1/degree(B)*B,然而这样的问题在于若degree(B)很大,B的贡献将几乎忽略不计。综合上述两种形式,既不会让邻居B的贡献过大、也不会让邻居B的贡献过小,于是得到传播公式:

X=1/degree(A)*A+1/(sqrt(degree(A)*degree(B))*B

这种传播公式对应的变换矩阵就是Normalized Laplacian。

3. 模型参数和损失函数

假设图上的节点数是N,特征维度是M,隐层神经元数是K。

【第一层】 Laplacian矩阵:N*N ,特征:N*M ,参数:M*K

【第二层】 Laplacian矩阵:N*N ,隐层表示:N*K ,参数K*K

因此,一个m层的GCN共有参数M*K+N*K*(m-1)需要训练。

GCN的损失函数同样是交叉熵函数,与NN的区别只是在于计算损失时仅使用有标签的节点。

4. 图傅里叶变换与图卷积

前面讲了这么多,大家是否会非常疑惑卷积究竟体现在哪里,似乎抛开卷积一切也说得通。为了从图卷积的角度来说明该算法,我们需要将欧式空间的概念引入到图上面来。

1)Gradient:欧式空间是函数上某一点的导数,图上是edge上两个node的函数值差分(领域概念推广);

2)Laplacian算子:欧式空间是函数上某一点的微分算子(Gradient的Divergence),图上是图上某一点和其邻居的函数值差分的加权平均;

3)Fourier basis:欧式空间是一组正弦函数,图上是Laplacian矩阵(L)的特征向量U';欧式空间是无穷维,图上是Node的个数N(拉普拉斯矩阵是半正定对称矩阵,必有N个正交基);

4)Convolution:在欧式空间卷积等价于经过傅里叶变换后在频域上做点积后再做逆傅里叶变换回到时域,在图上可以根据4)的类比进行图上的傅里叶变换和逆变换。

有了上述类比,在图上我需要对一个信号(特征)x和卷积核g做图卷积生成一个卷积后的向量应该怎么做呢?

第一步:对X和g作傅里叶变换 U'x,U'g

第二步:对傅里叶变换后的结果作点积

第三步:再做逆傅里叶变换

由于

,因此上述式子就变成了
,显然
就是卷积参数(对角阵),可以建立NN来求解。

以上是最原始GCN的内容,可参见《Spectral Networks and Deep Locally Connected Networks on Graph》这篇文章。

上述做法的问题主要是卷积参数数量大(图上节点总数N),计算上述矩阵乘法复杂度高,且需要求特征向量。在《Convolutional Neural Networks on Graphs With Fast Localized Spectral Filtering》这篇文章中,作者进行了两个方面的优化:

1)将

变成k个Laplacian矩阵特征值对角阵多项式组合相加:实际上是对邻域的特征进行加权求和;

2)将Chebyshev polynomials 来近似Laplacian矩阵特征值对角阵多项式。

在《SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS》中令k=1,即得到卷积结果:


总结

  1. 如果只考虑节点分类任务,将图卷积的本质理解为特征传播即可。
  2. 相比于一般的DNN,GCN只是每层在节点特征上做了一次变换,其他并没有什么不一样。

讨论

  1. Laplacian矩阵为什么可以作为图傅里叶变换的基?即特征向量正好对应于不同频率的基?
  2. 为什么Laplacian矩阵特征值对角阵多项式可以被Chebyshev polynomials 来近似?
  3. 如何从谱聚类的角度理解三种Laplacian矩阵形式的不同?
  4. Semi-GCN这种半监督学习方法与graph based semi-supervised learning有什么异同?
  5. GCN可以做Edge的分类或者预测吗?
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值