[论文阅读] | Semi-supervised classification with GCN(侧重Cora数据集)

写在前面

  本文比较适合基本了解GCN中图卷积运算的读者,即H(l+1)=σ(D~1/2A~D~1/2HlWl)H^{(l+1)}=\sigma(\tilde{D}^{-1/2} \tilde{A} \tilde{D}^{-1/2} H^l W^l),这个公式的出处为论文[1]。因为我是在阅读其他论文(采用的GCN与[1]相同)的时候发现,上述公式对应的图卷积运算只适用于处理无向图,但实验使用的引文网络数据集Cora、Citeseer和Pubmed理论上来说对应的是有向图。于是感到十分疑惑,便查看了论文[1],发现作者直接将Cora一类的数据集当做无向图处理,并建立对称的邻接矩阵;出于好奇,查找了Cora数据集的来源、组织格式以及如何将其处理成有向图。


1 GCN简介

1.1 图(Graph)

[论文阅读] | Semi-supervised classification with GCN(侧重Cora数据集)
图通常由图中的顶点、边以及边的权值组成,即G=(V,E,W)G = (V,E,W)。其中,

  • 顶点集合:V=(v1,v2,...vn),n=VV = (v_1, v_2,...v_n), n=|V| 表示该图包含顶点v1v2v_1、v_2等共计nn个顶点;
  • 边集合:E=(e1,e2,...em)E=(e_1,e_2,...e_m),表示该图共含有mm条边;
  • 权值集合:一种比较简单的定义方式为,针对图中任意两个顶点viv_ivjv_j,如果它们两个之间有一条边,则对应的权值wijw_{ij}为1,否则为0,即:
    wi,j={0,vivj1,vivjw_{i,j}= \left\{\begin{matrix} 0&, v_i 和 v_j 没有边 \\ 1&, v_i 和 v_j 存在边 \\ \end{matrix}\right.
    图中所有顶点之间的权值组成权值集合WW
1.2 图对应的矩阵
  • 邻接矩阵AAnnnn列,第ii行第jj列为wijw_{ij},对角线元素为0
    A=[0w1,2w1,3...w1,nw2,10w2,3...w2,n...............wn,1wn,2wn,3...0]A= \begin{bmatrix} 0 & w_{1,2} & w_{1,3} & ... & w_{1,n}\\ w_{2,1}& 0 & w_{2,3} & ... & w_{2,n}\\ ... & ... & ...& ... & ... \\ w_{n,1} & w_{n,2} & w_{n,3} & ... & 0 \\ \end{bmatrix}

  • 度矩阵DDnnnn列的对角矩阵,对角线上元素为顶点的度di=j=1nwijd_i = \sum_{j=1}^n w_{ij}
    D=[d10...00d2...0............00...dn]D= \begin{bmatrix} d_1 & 0 & ... & 0 \\ 0 & d_2 & ... & 0 \\ ... & ... & ...& ... \\ 0 & 0 & ...& d_n\\ \end{bmatrix}

  • 拉普拉斯矩阵:L=DAL=D-A
    li,j={di,i=j1,ijwij=10,ijwij=0l_{i,j}= \left\{\begin{matrix} d_i,&i=j \\ -1,&i\neq j且w_{ij}=1 \\ 0,&i\neq j且w_{ij}=0\\ \end{matrix}\right.
    如果图GG为无向图,即Aij=AjiA_{ij}=A_{ji},则此时的邻接矩阵、度矩阵和拉普拉斯矩阵均为对称矩阵

1.3 拉普拉斯矩阵LL的性质
  1. 半正定矩阵:所有特征值大于等于0
  2. 对称矩阵:nnLL矩阵有nn个线性无关的特征向量,而且不同特征值对应的特征向量正交。这个性质(无向图对应的拉普拉斯矩阵对称)使得拉普拉斯矩阵可以进行特征分解,进而在特征分解的基础上推导出谱域图卷积公式。
1.4 GCN结构

[论文阅读] | Semi-supervised classification with GCN(侧重Cora数据集)
GCN的基本结构如上图所示,与CNN整体框架有些相似,包括输入层、中间多层隐藏层(图卷积层)和输出层。

** 输入层:图的邻接矩阵AA和特征矩阵XX,其中特征矩阵XX由每个顶点对应的特征向量组成,例如常用的词袋模型、embedding等。

** 图卷积层:根据前一层计算出的特征和参数矩阵计算下一层的特征,例如第ll层的计算
H(l+1)=σ(D~1/2A~D~1/2HlWl) (1)H^{(l+1)}=\sigma(\tilde{D}^{-1/2} \tilde{A} \tilde{D}^{-1/2} H^l W^l) \ \quad(1)
   其中 A~=A+I\tilde{A} = A+I, D~=A~\tilde{D} = \sum\tilde{A}, WlW^{l}为参数矩阵,HlH^{l}为特征矩阵。

** 输出层:得到经过多层图卷积运算后计算出的特征,根据输出特征可以进行后续顶点分类等任务。


2 Cora数据集简介

  Cora是研究论文之间引用关系的数据集,包含2708篇论文和5249条引用,这2708篇论文对应7个类别(Case_Based、Genetic_Algorithms、Neural_Networks、Probabilistic_Methods、Reinforcement_Learning、Rule_Learning、Theory),每篇论文使用维度为1433的词袋模型表示特征。将其组织成图,则图中的每一个顶点对应一篇论文,图中的边则表示论文之间的引用关系。

2.1 原始Cora组织形式

数据集下载链接:link
下载解压后的Cora数据集对应两个文件:
[论文阅读] | Semi-supervised classification with GCN(侧重Cora数据集)
1."cora.content"文件

包含2708条数据,对应2708篇论文
每条数据的格式为:<paper_id> <word_attributes>+ <class_label>
   <paper_id>:论文ID
   <word_attributes>:使用词袋模型(字典长度为1433)表示的特征向量,由0和1组成
   <class_label>:论文所属的类别标签,如Genetic_Algorithms

** 注意,Cora数据集其实是给出了所有2708个样本的标签信息的,有的论文中描述划分的测试集为“unlabled”其实是为了验证其设计的半监督算法而设计的。
[论文阅读] | Semi-supervised classification with GCN(侧重Cora数据集)
2. "cora.cites"文件

描述论文之间的引用关系,包含5249条数据;
每条的组织格式为< ID of cited paper> < ID of citing paper>,前一项表示被引用论文的ID。
例如35,1033 表示ID为1033的论文引用了ID为35的论文,在建立的图中,有一条边从1033指向35。
[论文阅读] | Semi-supervised classification with GCN(侧重Cora数据集)
由此可见,Cora等一类的引文网络建立的图理论上是有向图。这就回到了我初始的疑问,论文[1]建立起的GCN网络肯定是不能处理有向图的,因为有向图对应的拉普拉斯矩阵不是对称的,就不能进行特征分解,也推导不出公式(1)对应的图卷积运算。

不过论文[1]明确表示

We treat the citation links as (undirected) edges and construct abinary,symmetric adjacency matrix A

也就是说,将引文网络对应的图看做是无向图。但是它采用的数据集格式并非本文2.1中展示的,而是下面2.2中所示的组织格式。

2.2 Cora数据集另一种组织格式

下载链接:link
[论文阅读] | Semi-supervised classification with GCN(侧重Cora数据集)
这种组织格式是在论文[2]中定义的。论文[2]发表于2016年,研究一种基于Graph embedding的半监督学习框架。在论文[2]中,作者采用了Cora数据集。
[论文阅读] | Semi-supervised classification with GCN(侧重Cora数据集)
上图来自于原文,从中我们可以看出:

1.关于有向图和无向图

  如果论文ii引用了jj,则设置aij=aji=1a_{ij}=a_{ji}=1,这样建起其的图必然为无向图,对应的邻接矩阵为对称矩阵。

2.关于数据集划分

Cora数据含有2708个样本,划分为训练集和测试集

  • 训练集:140个样本,每类随机选择20个样本,一共包含7个类别,因此训练集含有140个样本;
  • 测试集:随机选择了1000个样本
  • 无标注样本:1708个样本(这里说的无标注是考虑算法的需求,不使用对应的标签)

因此形成的数据集文件如下:

  • ind.cora.x: 140×1433140 ×1433 ,140个训练样本的对应的特征向量;
  • ind.cora.y:140×7140 ×7,训练样本的one-hot编码向量;
  • ind.cora.allx:1708×14331708 ×1433,除了随机选择的1000个测试样本,其余的有标注和未标注样本对应的特征向量;
  • ind.cora.ally:1708×71708 ×7,allx样本的one-hot编码向量;
  • ind.cora.tx:1000×14331000 ×1433,1000个测试样本的对应的特征向量;
  • ind.cora.ty:1000×71000 ×7,测试样本的one-hot编码向量;
  • ind.cora.graph:格式为{index: [index_of_neighbor_nodes]}的字典,字典的key表示引用论文的下标,对应的values表示被引用的论文下标。graph中的引用关系已经变成了对称的形式,如下图,1引用了2,同时2引用了1。
    [论文阅读] | Semi-supervised classification with GCN(侧重Cora数据集)
    [论文阅读] | Semi-supervised classification with GCN(侧重Cora数据集)

3 总结

  论文[2]之后的很多论文都沿用了论文[2]中的数据集组织和划分形式,将理论上为有向图的引文网络数据集当做无向图处理。当然,现在已经有专门用于有向图运算的GCN了,不过在2017年论文[1]提出使用一阶切比雪夫多项式简化之前k阶切比雪夫多项式定义的图卷积运算时,推导出的公式(1)对应的图卷积还只能用于无向图。

参考文献

[1] Kipf, T. N., & Welling, M. (2016). Semi-supervised classification with graph convolutional networks. arXiv preprint arXiv:1609.02907.
[2] Yang, Z., Cohen, W., & Salakhudinov, R. (2016, June). Revisiting semi-supervised learning with graph embeddings. In International conference on machine learning (pp. 40-48).