ICLR 2017 | GCN:基于图卷积网络的半监督分类

目录

  • 前言
    • A. Spectral-Based ConvGNN
    • B. Spatial-Based ConvGNN
  • 1. 引言
  • 2. 图的快速近似卷积
  • 3. 半监督节点分类
  • 4. 实验

前言

ICLR 2017 | GCN:基于图卷积网络的半监督分类_第1张图片
题目: Semi-Supervised Classification with Graph Convolutional Networks
会议: International Conference on Learning Representations, 2017
论文地址:Semi-Supervised Classification with Graph Convolutional Networks

阅读前建议读一下前面几篇关于GNN的入门文章:

  1. 图神经网络(GNN)的基本原理
  2. 图解GNN:A Gentle Introduction to Graph Neural Networks
  3. TNNLS | GNN综述:A Comprehensive Survey on Graph Neural Networks

在TNNLS | GNN综述:A Comprehensive Survey on Graph Neural Networks一文中对GCN进行了大概的讲解,讲解如下:
在这里插入图片描述
RecGNN使用相同的图循环层(Grec)来更新节点的表示,而ConvGNN使用不同的图卷积层(Gconv)来更新节点表示。

ConvGNN分为两种:基于频域的和基于空间域的。其中基于频域的方法通过从图信号处理的角度引入过滤器(卷积核的集合)来定义图卷积,其中图卷积运算被解释为从图信号中去除噪声。 基于空间域的ConvGNN继承了RecGNN的思想,通过消息传递来定义图卷积运算。

A. Spectral-Based ConvGNN

基于频域的ConvGNN:假设图是无向的。无向图的归一化图拉普拉斯矩阵定义为:
L = I n − D − ( 1 / 2 ) A D − ( 1 / 2 ) L=I_n-D^{-(1/2)}AD^{-(1/2)} L=InD(1/2)AD(1/2)
其中 D D D是一个对角阵,对角上的元素表示对应节点的度。归一化图拉普拉斯矩阵具有实对称半正定的性质,因此可以被分解为:
L = U Λ U T L=U\Lambda U^T L=UΛUT
其中 U = [ u 0 , u 1 , . . . , u n ] ∈ R n × n U=[u_0, u_1,...,u_n] \in R^{n \times n} U=[u0,u1,...,un]Rn×n是特征值排序的特征向量矩阵, Λ \Lambda Λ是特征值对角矩阵,线代基础知识了。归一化图拉普拉斯矩阵的特征向量形成正交空间,即 U T U = I U^TU=I UTU=I

对图进行处理时, x ∈ R n x \in R^n xRn表示为所有节点的特征向量, x i x_i xi为第 i i i个节点的特征向量。 x x x的图傅里叶变换为: ℑ ( x ) = U T x \Im(x)=U^Tx (x)=UTx,逆图傅里叶变换为: ℑ − 1 ( x ^ ) = U x ^ \Im^{-1}(\hat{x})=U\hat{x} 1(x^)=Ux^,其中 x ^ \hat{x} x^表示傅里叶变换的结果信号。

由以上定义可知,图傅里叶变换将输入图信号投影到标准化空间,其中空间基由标准化图拉普拉斯算子的特征向量形成。原始输入信号可以被表示为: x = ∑ i x ^ i u i x= \sum_{i}\hat{x}_iu_i x=ix^iui(逆图傅里叶变换)。

有了以上定义后,输入信号与过滤器 g ∈ R b g \in R^b gRb间的卷积运算被定义为:
在这里插入图片描述
如果将过滤器表示为: g θ = d i a g ( U T g ) g_{\theta}=diag(U^Tg) gθ=diag(UTg),则图卷积可以简化为:
在这里插入图片描述
基于频域的ConvGNN都遵循以上定义,只是过滤器可能有所不同。

比如:Spectral CNN假设过滤器 g θ = Θ i , j ( k ) g_{\theta}=\Theta_{i, j}^{(k)} gθ=Θi,j(k)是一组可学习的参数,Spectral CNN的图卷积层定义为:
在这里插入图片描述
其中 k k k是层索引, H ( k − 1 ) ∈ R n × f k − 1 H^{(k-1)} \in R^{n \times f_{k-1}} H(k1)Rn×fk1是输入图信号, H 0 = X H_0=X H0=X f k − 1 f_{k-1} fk1为输入通道数, f k f_k fk为输出通道数。

B. Spatial-Based ConvGNN

基于空间域的ConvGNN:基于节点的空间关系来定义图卷积。

Image可以被视为Graph的特殊形式,每个像素代表一个节点,每个像素直接连接到其附近的像素:
ICLR 2017 | GCN:基于图卷积网络的半监督分类_第2张图片对于3x3窗口,每个节点的邻域就是其周围8个像素点。 类似地,基于空间域的图卷积将中心节点的表示与相邻节点的表示进行卷积,得到中心节点的更新表示。

图的神经网络(NN4G)是基于空间域的ConvGNN的第一个工作,它通过直接汇总节点的邻域信息来执行图卷积,NN4G导出的下一层的节点状态公式为:
在这里插入图片描述
f f f是激活函数, h v ( 0 ) h_v^{(0)} hv(0)初始化为零向量。上式的矩阵形式为:
在这里插入图片描述
扩散CNN (DCNN)认为图的卷积是一个扩散过程。它假设信息以一定的转移概率从一个节点转移到它的一个相邻节点,使信息分布在几轮后达到均衡。DCNN将扩散图卷积定义为:
在这里插入图片描述
其中 f f f是激活函数,概率转移矩阵 P = D − 1 A P=D^{-1}A P=D1A。由于扩散的平稳分布是概率转移矩阵幂级数的总和,因此DGC可以定义如下:
在这里插入图片描述
这里 W ( k ) ∈ R D × F W^{(k)} \in R^{D \times F} W(k)RD×F。需要注意的是,这里使用了概率转移矩阵的幂,这意味着远处的邻居对中心节点更新的贡献很少。

PGC-DGCNN基于最短路径增加了远处邻居的贡献。PGC-DGCNN定义了最短路径邻接矩阵 S ( j ) S^{(j)} S(j):如果节点 v v v到结节点 u u u的最短路径长度为 j j j,则 S v , u ( j ) = 1 S_{v,u}^{(j)}=1 Sv,u(j)=1,否则为0。PGC-DGCNN中的图卷积运算定义如下:
在这里插入图片描述
式中 D ~ i i ( j ) = ∑ l S i , l ( j ) \tilde{D}_{ii}^{(j)}=\sum_{l}S_{i,l}^{(j)} D~ii(j)=lSi,l(j) H ( 0 ) = X H_{(0)}=X H(0)=X ∣ ∣ || 表示向量的连接。

本篇文章提出的GCN是基于空间域的ConvGNN

1. 引言

考虑在图中对节点进行分类的问题,图中只有少数节点被标记,然后我们的任务是预测未标记节点的标签,这种问题就是图的半监督分类。

解决上述问题比较经典的方法:
在这里插入图片描述
其中 L 0 L_0 L0表示标记数据上的误差, f f f可以是神经网络, X X X是节点特征向量矩阵, Δ = D − A \Delta=D-A Δ=DA是未归一化的图拉普拉斯矩阵( D D D为度矩阵, A A A为邻接矩阵), f ( X i ) f(X_i) f(Xi)表示节点的编码表示。

上式中加上正则化项后,如果两个节点邻接( A i j ≠ 0 A_{ij} \neq 0 Aij=0),那么我们会认为它们可能共享同一标签。这种假设会限制模型的表达能力,因为图中的边不一定需要编码节点相似性,也可能是其它信息。

2. 图的快速近似卷积

传统的图卷积:
H ( l + 1 ) = σ ( A H ( l ) W ( l ) ) H^{(l+1)}=\sigma(AH^{(l)}W^{(l)}) H(l+1)=σ(AH(l)W(l))
可以发现,节点的状态向量在通过每一层图卷积进行传播时,都乘上了邻接矩阵 A A A,也就是说节点在更新自己状态向量的同时考虑了邻接节点的信息,但并没有考虑到自身的信息,这是因为 A A A的对角线为0(除非节点存在自环)。

本文提出的图卷积传播规则:
在这里插入图片描述
其中 A ~ = A + I N \tilde{A}=A+I_N A~=A+IN,即邻接矩阵在原有基础上加上一个单位矩阵,也即每一个节点都增加一条指向自己的边; D ~ \tilde{D} D~为加上自环后的度矩阵; W ( l ) W^{(l)} W(l)为层权重矩阵; σ ( ⋅ ) \sigma(\cdot) σ()为激活函数,比如ReLU; H ( 0 ) = X H^{(0)}=X H(0)=X,也就是节点特征矩阵;经过多层卷积后,我们得到了最终的 H k H^{k} Hk H k H^{k} Hk即GCN学到的节点的状态向量表示。

可以发现,本文在传统图卷积的基础上做了两点创新:

  1. A ~ = A + I N \tilde{A}=A+I_N A~=A+IN。每个节点强行加上自环,这样节点的状态向量在向前传播过程中就能考虑到自身的特征信息。
  2. 对加上自环后的邻接矩阵 A ~ \tilde{A} A~进行了归一化: D ~ − 1 2 A ~ D ~ − 1 2 \tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}} D~21A~D~21。归一化后的邻接矩阵每一行的和都为1。

3. 半监督节点分类

有了上述图卷积的传播规则后,半监督节点分类就变得很简单了。比如说我们要分为两类,那么只需要在GCN后加上一个输出为2的全连接层,然后再经过一个Softmax即可。得到输出后再算出交叉熵损失,然后反向传播更新每一层GCN的参数 W W W

比如考虑只有一个隐藏层的简单模型:
在这里插入图片描述
其中 A ^ = D ~ − 1 2 A ~ D ~ − 1 2 \hat{A}=\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}} A^=D~21A~D~21,即加上自环然后进行归一化的邻接矩阵; W ( 0 ) W^{(0)} W(0)为从输入到隐藏层的权重矩阵; W ( 1 ) W^{(1)} W(1)为隐藏层到输出层的权重矩阵。

简单来说,我们有:
H ( 1 ) = R e L U ( A ^ X W ( 0 ) ) Z = s o f t m a x ( A ^ H ( 1 ) W ( 1 ) ) \begin{aligned} H^{(1)}&=ReLU(\hat{A}XW^{(0)})\\ Z&=softmax(\hat{A}H^{(1)}W^{(1)}) \end{aligned} H(1)Z=ReLU(A^XW(0))=softmax(A^H(1)W(1))

然后我们有交叉熵损失:
在这里插入图片描述
其中 y L y_L yL为有label的节点索引集。

然后损失函数对神经网络参数 W ( 0 ) W^{(0)} W(0) W ( 1 ) W^{(1)} W(1)求导,梯度下降更新参数,更新后进行新一轮的传播。

等到训练了一定轮数后,我们就可以对未标记的节点标签的类别进行预测了。

4. 实验

数据集
ICLR 2017 | GCN:基于图卷积网络的半监督分类_第3张图片
实验设置:测试集大小为1000个节点,网络采用第三节中提出的双层GCN模型:
在这里插入图片描述
Baseline:标签传播(LP)、半监督嵌入(SemiEmb)、流形正则化(ManiReg)以及DeepWalk。

实验结果
ICLR 2017 | GCN:基于图卷积网络的半监督分类_第4张图片
可以发现,GCN的效果是最好的!

你可能感兴趣的:(Papers,GNN,GCN,图卷积)