GCNII (ICML 2020) 分享
GCNII汇报ppt版可通过关注公众号后回复关键词:GCNII 来获得,供学习者使用!
Motivation
在计算机视觉中,模型CNN随着其层次加深可以学习到更深层次的特征信息,叠加64层或128层是十分正常的现象,且能较浅层取得更优的效果。
图卷积神经网络GCNs是一种针对图结构数据的深度学习方法,但目前大多数的GCN模型都是浅层的,如GCN,GAT模型都是在2层时取得最优效果,随着加深模型效果就会大幅度下降,经研究GCN随着模型层次加深会出现Over-Smoothing问题,Over-Smoothing既相邻的节点随着网络变深就会越来越相似,最后学习到的nodeembedding便无法区分。
上图中,随着模型层次加深,在Cora数据上TestAccuracy逐渐向下降,Quantitative Metric for Smoothness给Over-smoothness提出一个定量的指标SVM_?,如下公式所示:
SVM_?衡量了图中任意两个节点之间的欧氏距离之和,SVM_?越小表示图学习时Over-Smoothing越严重当,当SVM_?=0时,图中所有节点完全相同,也可以从图中看出随着层次的加深,SVM_?的值越来越小。
Method
GCNII全程:GraphConvolutional Networks via Initial residual and Identity Mapping
GCNII为了解决GCN在深层时出现的Over-Smoothing问题,提出了Initial Residual和Identit Mapping两个简单技巧,成功解决了GCN深层时的Over-Smoothing问题。
1、Initial residual
残差一直是解决Over-Smoothing的最常用的技巧之一,传统GCN加residualconnection用公式表示为:
GCNII Initial Residual不是从前一层获取信息,而是从初始层进行残差连接,并且设置了获取的权重。这里初始层initial representation不是原始输入feature,而是由输入feature经过线性变换后得到,如下公式所示:
但Initial Residual不是GCNII首次提出,而是ICLR 2019模型APPNP中提出。
2、Identity Mapping 仅仅使用残差只能缓解Over-Smoothing问题,因此GCNII借鉴了ResNet的思想有了Identity Mapping,Initial Residual的想法是在当前层representation和初始层representation之间进行权重选择,而Identity Mapping是在参数W和单位矩阵I之间设置权重选择,如下公式所示:
从上面公式看出,前半部分是Initialresidual,后半部分是IdentityMapping,其中α和β是超参,GCNII论文中也给出了为什么IdentityMapping可以起到缓解DeepGNN出现Over-Smoothing问题,总结来说:IdentityMapping可以起到加快模型的收敛速度,减少有效信息的损失。
Conclusion
1、实验数据
实验中Cora, Citeseer, Pubmed三个引文数据,是同质图数据,常用于Transductive Learning类任务,三种数据都由以下八个文件组成,存储格式类似:
ind.dataset_str.x=> the feature vectors of the training instances as scipy.sparse.csr.csr_matrix object;
ind.dataset_str.tx=>the feature vectors of the test instances as scipy.sparse.csr.csr_matrix object;
ind.dataset_str.allx=>the feature vectors of both labeled and unlabeled training instances (asuperset of ind.dataset_str.x) as scipy.sparse.csr.csr_matrix object;
ind.dataset_str.y=>the one-hot labels of the labeled training instances as numpy.ndarray object;
ind.dataset_str.ty=>the one-hot labels of the test instances as numpy.ndarray object;
ind.dataset_str.ally=>the labels for instances in ind.dataset_str.allxas numpy.ndarray object;
ind.dataset_str.graph=>a dictin the format {index: [index_of_neighbor_nodes]}as collections.defaultdict object;
ind.dataset_str.test.index=>the indices of test instances in graph, for the inductive setting as listobject. All objects above must be saved using python pickle module.
以cora为例:
ind.dataset_str.x=> 训练实例的特征向量,是scipy.sparse.csr.csr_matrix类对象,shape:(140,1433)
ind.dataset_str.tx=> 测试实例的特征向量,shape:(1000,1433)
ind.dataset_str.allx=> 有标签的+无无标签训练实例的特征向量,是ind.dataset_str.x的超集,shape:(1708,1433)
ind.dataset_str.y=>训练实例的标签,独热编码,numpy.ndarray类的实例,是numpy.ndarray对象,shape:(140,7)
ind.dataset_str.ty=>测试实例的标签,独热编码,numpy.ndarray类的实例,shape:(1000,7)
ind.dataset_str.ally=>对应于ind.dataset_str.allx的标签,独热编码,shape:(1708,7)
ind.dataset_str.graph=>图数据,collections.defaultdict类的实例,格式为{index:[index_of_neighbor_nodes]}
ind.dataset_str.test.index=>测试实例的id,2157行上述文件必须都用python的pickle模块存储
2、实验结果
实验结果在Cora,citeseer,pubmed三个数据上都进行DeepGNN测试,测试结果可以看出随着网络层级的加深,模型不仅没有像传统GNN出现Over-Smoothing而效果下降,反而模型效果随着深度增加而不断提升,解决了传统DeepGNN存在的Over-Smoothing问题。