Semi-Supervised Classification With Graph Convolutional Networks

ICLR 2017。图卷积中谱图领域理论上很重要的一篇论文,提升了图卷积的性能,使用切比雪夫多项式的1阶近似完成了高效的图卷积架构。原文链接:[Semi-Supervised Classification with Graph Convolutional Networks. Kipf & Welling 2017](https://arxiv.org/abs/1609.02907v4)

ICLR 2017。图卷积中谱图领域理论上很重要的一篇论文,提升了图卷积的性能,使用切比雪夫多项式的1阶近似完成了高效的图卷积架构。原文链接:Semi-Supervised Classification with Graph Convolutional Networks. Kipf & Welling 2017

摘要

我们提出了一种在图结构数据上的半监督可扩展学习方法,基于高效的图卷积变体。契机是通过一个谱图卷积的局部一阶近似得到的我们的图卷积结构。我们的模型与图的边数呈线性关系,学习到的隐藏层可以对图的顶点和局部图结构同时进行编码。在引文网络和一个知识图谱数据集上的大量实验结果表明我们的方法比相关方法好很多。

引言

我们考虑一个对图顶点进行分类的问题,只有一小部分的顶点有标签。这个问题可以通过基于图的半监督学习任务建模,通过某些明确的图正则化方法(Zhu et al., 2003; Zhou et al., 2004; Belkin et al., 2006; Weston et al., 2012)可以平滑标签信息,举个例子,通过在loss function使用一个图拉普拉斯正则项:

L=L_0+λL_reg,with L_reg=_i.jA_ijf(X_i)f(X_j)2=f(X)TΔf(X)(1)\tag{1} \mathcal{L} = \mathcal{L\_0} + \lambda \mathcal{L\_{reg}}, \rm with \ \mathcal{L\_{reg}} = \sum\_{i.j}A\_{ij} \Vert f(X\_i) - f(X\_j) \Vert^2 = f(X)^T \Delta f(X)

其中,L0\mathcal{L_0}表示对于图的标签部分的监督损失,f()f(\cdot)可以是一个神经网络类的可微分函数,λ\lambda是权重向量,XX是定点特征向量XiX_i的矩阵。NN个顶点viVv_i \in \mathcal{V},边(vi,vj)ε(v_i, v_j) \in \varepsilon,邻接矩阵ARN×NA \in \mathbb{R}^{N \times N}(二值的或者带权重的),还有一个度矩阵Dii=jAijD_{ii} = \sum_jA_{ij}。式1依赖于“图中相连的顶点更有可能具有相同的标记”这一假设。然而,这个假设,可能会限制模型的能力,因为图的边并不是必须要编码成相似的,而是要包含更多的信息。 在我们的研究中,我们将图结构直接通过一个神经网络模型f(X,A)f(X, A)进行编码,并且在监督的目标L0\mathcal{L_0}下对所有有标记的顶点进行训练,因此避免了损失函数中刻意的对图进行正则化。在图的邻接矩阵上使用f()f(\cdot)可以使模型从监督损失L0\mathcal{L_0}中分布梯度信息,并且能够从有标记和没有标记的顶点上学习到他们的表示。 我们的贡献有两点,首先,我们引入了一个简单的,表现很好的针对神经网络的对层传播规则,其中,这个神经网络是直接应用到图上的,并且展示了这个规则是如何通过谱图卷积的一阶近似启发得到的。其次,我们展示了这种形式的基于图的神经网络可以用于对图中的顶点进行更快更可扩展的半监督分类任务。在大量数据集上的实验表明我们的模型在分类精度和效率上比当前在半监督学习中的先进算法要好。

图上的快速近似卷积

在这部分,我们会讨论一个特殊的基于图的神经网络f(X,A)f(X, A)。考虑一个多层图卷积网络(GCN),通过以下的传播规则:

H(l+1)=σ(D~12A~D~12H(l)W(l))(2)\tag{2} H^{(l+1)} = \sigma(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)})

其中,A~=A+IN\tilde{A} = A + I_N是无向图G\mathcal{G}加了自连接的邻接矩阵。INI_N是单位阵,D~ii=jA~ij\tilde{D}_{ii} = \sum_j \tilde{A}_{ij}W(l)W^{(l)}是一个针对层训练的权重矩阵。σ()\sigma(\cdot)表示一个激活函数,比如ReLU()=max(0,)\rm ReLU(\cdot) = \rm max(0, \cdot)H(l)RN×DH^{(l)} \in \mathbb{R}^{N \times D}是第ll层的激活矩阵;H(0)=XH^{(0)} = X。接下来我们将展示通过图上的一阶近似局部谱滤波器(Hammond et al., 2011; Defferrard et al., 2016)的传播过程。

谱图卷积 spectral graph convolutions

定义图上的谱图卷积为信号xRNx \in \mathbb{R}^N和一个滤波器gθ=diag(θ)g_\theta = \rm diag(\theta),参数是傅里叶域中的θRN\theta \in \mathbb{R}^N,也就是:

g_θx=Ug_θUTx(3)\tag{3} g\_\theta \ast x = U g\_\theta U^T x

其中UU是归一化的拉普拉斯矩阵L=IND12AD12=UΛUTL = I_N - D^{-\frac{1}{2}}AD^{-\frac{1}{2}} = U \Lambda U^T的特征向量组成的矩阵,Λ\Lambda是特征值组成的对角阵,UTxU^Txxx的图傅里叶变换。可以认为gθg_\theta是关于LL的特征值的函数,也就是说gθ(Λ)g_\theta(\Lambda)。式3的计算量很大,因为特征向量矩阵UU的乘法的时间复杂度是O(N2)O(N^2)。此外,对于大尺度的图来说,对LL进行特征值分解是计算量非常大的一件事。为了避开这个问题,Hammond et al.(2001)建议使用KK阶切比雪夫多项式Tk(x)T_k(x)来近似gθ(Λ)g_\theta(\Lambda)

g_θK_k=0θ_kT_k(Λ~)(4)\tag{4} g\_\theta' \approx \sum^K\_{k=0} \theta'\_k T\_k(\tilde{\Lambda})

其中,Λ~=2λmaxΛIN\tilde{\Lambda} = \frac{2}{\lambda_{max}} \Lambda - I_Nλmax\lambda_{max}表示LL的最大特征值。θRK\theta’ \in \mathbb{R}^K是切比雪夫系数向量。切比雪夫多项式的定义是:Tk(x)=2xTk1(x)Tk2(x)T_k(x) = 2xT_{k-1}(x) - T_{k-2}(x)T0(x)=1T_0(x) = 1T1(x)=xT_1(x) = x。 回到我们对于一个信号xx和一个滤波器gθg_\theta’的卷积的定义:

g_θxK_k=0θ_kT_k(L~)x(5)\tag{5} g\_\theta' \ast x \approx \sum^K\_{k=0} \theta'\_k T\_k(\tilde{L}) x

其中,L~=2λxmaxLIN\tilde{L} = \frac{2}{\lambda x_{max}} L - I_N;注意(UΛUT)k=UΛkUT(U \Lambda U^T)^k = U \Lambda^k U^T。这个表达式目前是KK阶局部的,因为这个表达式是拉普拉斯矩阵的KK阶多项式,也就是说从中心节点向外最多走KK步,KK阶邻居。式5的时间复杂度是O(ε)O(\vert \varepsilon \vert),也就是和边数呈线性关系。Defferrard et al.(2016)使用这个KK阶局部卷积定义了在图上的卷积神经网络。

按层的线性模型 layer-wise linear model

一个基于图卷积的神经网络模型可以通过堆叠式5这样的多个卷积层来实现,每层后面加一个非线性激活即可。现在假设K=1K=1,也就是对LL线性的一个函数,因此得到一个在图拉普拉斯谱(graph Laplacian spectrum)上的线性函数。这样,我们仍然能通过堆叠多个这样的层获得一个卷积函数,但是我们就不会再受限于明显的参数限制,比如切比雪夫多项式。我们直觉上期望这样一个模型可以减轻在度分布很广泛的图上局部图结构模型过拟合的问题,如社交网络、引文网络、知识图谱和其他很多真实数据集。此外,这个公式可以让我们搭建更深的网络,一个可以提升模型学习能力的实例是He et al., 2016。 在GCN的线性公式中,我们让λmax\lambda_{max}近似等于2,因为我们期望神经网络参数可以在训练中适应这个变化。在这个近似下,式5可以简化为:

g_θxθ_0x+θ_1(LI_N)x=θ_0xθ_1D12AD12x(6)\tag{6} g\_\theta' \ast x \approx \theta'\_0x + \theta'\_1 (L - I\_N)x = \theta'\_0x - \theta'\_1 D^{-\frac{1}{2}} A D^{-\frac{1}{2}} x

两个参数θ0\theta’_0θ1\theta’_1。滤波器参数可以在整个图上共享。连续的使用这种形式的卷积可以有效的对一个顶点的kk阶邻居进行卷积,kk是连续的卷积操作或模型中卷积层的个数。 实际上,通过限制参数的数量可以进一步的解决过拟合的问题,并且最小化每层的操作数量(比如矩阵乘法)。这时的我们得到了下面的式子:

g_θxθ(I_N+D12AD12)x(7)\tag{7} g\_\theta \ast x \approx \theta(I\_N + D^{-\frac{1}{2}} A D^{-\frac{1}{2}}) x

只有一个参数θ=θ0=θ1\theta = \theta’_0 = - \theta’_1。注意,IN+D12AD12I_N + D^{-\frac{1}{2}} A D^{-\frac{1}{2}}现在的特征值在[0,2][0, 2]之间。在深层模型中重复应用这个操作会导致数值不稳定和梯度爆炸、消失的现象。为了减轻这个问题,我们引入了如下的重新正则化技巧:IN+D12AD12D~12A~D~12I_N + D^{-\frac{1}{2}} A D^{-\frac{1}{2}} \to \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}}A~=A+IN\tilde{A} = A + I_ND~ii=jA~ij\tilde{D}_{ii} = \sum_j \tilde{A}_{ij}。 我们可以将这个定义泛化到一个有着CC个通道的信号XRN×CX \in \mathbb{R}^{N \times C}上,也就是每个顶点都有一个CC维的特征向量,对于FF个滤波器或FF个feature map的卷积如下:

Z=D~12A~D~12XΘ(8)\tag{8} Z = \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} X \Theta

其中ΘRC×F\Theta \in \mathbb{R}^{C \times F}是一个滤波器的参数矩阵,ZRN×FZ \in \mathbb{R}^{N \times F}是卷积的信号矩阵。卷积操作的时间复杂度是O(εFC)O(\vert \varepsilon \vert F C),因为A~X\tilde{A} X可以被实现成一个稀疏矩阵和一个稠密矩阵的乘积。

半监督顶点分类

介绍过这个简单、灵活的可以在图上传播信息的模型f(X,A)f(X, A)后,我们回到半监督顶点分类的问题上。如介绍里面所说的,我们可以减轻在基于图的半监督学习任务中的假设,通过在图结构上的数据XX和邻接矩阵AA上使用模型f(X,A)f(X, A)。我们期望这个设置可以在邻接矩阵表达出数据XX没有的信息的这种情况时表现的很好,比如引文网络中,引用的关系或是知识图谱中的关系。整个模型是一个多层的GCN,如图1所示。 Fig1

例子

我们考虑一个两层GCN对图中的顶点进行半监督分类,邻接矩阵是对称的。我们首先在预处理中计算A^=D~12A~D~12\hat{A} = \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}}。前向传播模型的形式如下:

Z=f(X,A)=softmax(A^ ReLU(A^XW(0))W(1))(9)\tag{9} Z = f(X, A) = \rm softmax( \hat{A} \ \rm ReLU( \hat{A}XW^{(0)})W^{(1)})

这里,W(0)RC×HW^{(0)} \in \mathbb{R}^{C \times H}是输入到隐藏层的权重矩阵,有HH个feature map。W(1)RH×FW^{(1)} \in \mathbb{R}^{H \times F}是隐藏层到输出的权重矩阵。softmax激活函数定义为softmax(xi)=1Zexp(xi)\rm softmax(x_i) = \frac{1}{\mathcal{Z}} \exp(x_i)Z=iexp(xi)\mathcal{Z} = \sum_i \exp(x_i),按行使用。对于半监督多类别分类,我们使用交叉熵来衡量所有标记样本的误差:

L=_lY_LF_f=1Y_lfln(Z_lf)(10)\tag{10} \mathcal{L} = - \sum\_{l \in \mathcal{Y}\_L} \sum^F\_{f = 1} Y\_{lf} \ln(Z\_{lf})

其中,YL\mathcal{Y}_L是有标签的顶点的下标集合。 神经网络权重W(0)W^{(0)}W(1)W^{(1)}使用梯度下降训练。我们每次训练的时候都是用全部的训练集来做梯度下降,只要数据集能放到内存中。对AA进行稀疏矩阵的表示,内存的使用量是O(ε)O(\vert \varepsilon \vert)。训练过程中使用了dropout增加随机性。我们将在未来的工作使用mini-batch随机梯度下降。

实现

我们使用Tensorflow实现了基于GPU的,稀疏稠密矩阵乘法形式。式9的时间复杂度是O(εCHF)O(\vert \varepsilon \vert C H F)

使用 Hugo 构建
主题 StackJimmy 设计