来源:IJCAI 2019
论文地址:https://arxiv.org/abs/1902.06667
代码地址:https://github.com/CRIPAC-DIG/H-GCN

Introduction

1、问题定义:什么是半监督的节点分类?

图1 半监督节点分类

如图1所示,在标记数据量很少,待预测的节点和标记节点距离较远的情况下,预测未知节点的标签就叫做半监督的节点分类。

2、为什么要进行半监督的节点分类?

在现实生活中,图数据无处不在,例如社交网络,知识图谱,蛋白质分子等。许多应用都需要分析每个节点的性质,图节点分类任务就是这样一个基础的任务。但是,目前图的节点分类存在一些挑战,主要包括:

(1)图数据的非欧式空间难以应用传统的深度学习方法;

(2)节点之间的关系错综复杂;

(3)实际应用中标注数据相比总体数据数据很少。

Related Work

1、GCN

图2 图卷积神经网络的示意图

如图2所示,每个节点通过邻域聚合的方式,把它的邻居节点的特征通过一定的方式聚合到一起,学出来中心节点的表达。

2、GAT

图3 GAT的示意图

如图3所示,GAT仍然是采用邻域聚合的思想,想要学习h1表达,需要聚合h2~h6的特征,只是这里权重的学习使用了Attention机制。

3、GraphSAGE

图4 GraphSAGE示意图

GCN、GAT都属于直推学习(transductive),无法直接泛化到之前未见的节点。而GraphSAGE属于归纳式(inductive)模型,能够为新增节点快速生成embedding,而无需额外训练过程。

主要由以下三部分组成:

邻居采样:因为每个节点的度是不一致的,为了计算高效, 为每个节点采样固定数量的邻居。

邻居特征聚集:通过聚集采样到的邻居特征,更新当前节点的特征。

训练:既可以用获得的特征预测节点的上下文信息(context),也可以利用特征做有监督训练。

4、Hierarchical Graph Representation Learning with Differentiable Pooling(NIPS 2018)

图5 层次化的图卷积网络

如图5所示,层次化的图卷积网络加入了Pooling层,能够捕捉图的层次信息,扩大了感受野。但是,这里的Pooled network训练十分困难,需要两个Loss保证网络能够收敛,Pooled network at level 1,2,3各不相同,需要分别训练。导致整个网络参数量巨大。

Proposed Method

图6 H-GCN的网络结构

如图6所示,H-GCN是一个对称的网络结构:在图6的左侧,在每次GCN操作后,我们使用Coarsening方法把结构相似的节点合并成超节点,因此可以逐层减小图的规模。由于每个超点对应了原始图中的一个局部结构,对超节点组成的超图进行图卷积操作就可以获得更大的更大的感受野。对应地,在示意图的右侧,我们在每次GCN操作后将超节点进行还原,即可得到每个原始节点的表达。同时,我们在对称的神经网络层之间加了shortcut连接,从而可以更好地训练。

具体的coarsening方法如图7所示:

图7 Coarsening方法

具体分为两种情况:

(1)SEG(Structural Equivalence Grouping):合并邻居节点完全相同的节点为一个超节点。

(2)SSG(Structural Similarity Grouping):按照结构相似度从大到小,合并相应的节点。结构相似性按照如下公式计算:

其中,Aij表示节点Vi,Vj所组成边的权值,D(Vi),D(Vj)表示节点Vi,Vj的度。

Experiment

为了验证H-GCN的有效性,作者在主流的节点分类任务上进行了测试,数据集包括引文数据集和知识图谱。分类结果如图8所示,H-GCN取得了SOTA的结果。

一个有意思的发现是:相比在引文数据集上的效果,H-GCN在知识图谱数据集NELL上的精度远远超过其他baseline方法。这是因为在NELL数据集上的训练数据量最少(仅0.3%的标记率),这可以定性地说明H-GCN能有效的增大感受野,使节点感受到相距比较远的标记节点的标签信息。

图8 分类准确率

为了进一步定量验证H-GCN对模型感受野的增大作用,作者在Pubmed上逐渐减小训练数据量,从每类20个标记样本到每类仅5个样本,结果如图9所示。可以发现,当训练样本逐渐减少时,baseline的精度下降非常明显,而H-GCN却能保持很高的准确率。在每类仅5个样本时,H-GCN比其他方法至少高出6个百分点。这是个非常有用的性质,因为现实生活中由于海量的数据量和高昂的标记成本,我们通常没有太多的标记样本,而H-GCN更大的感受野可以更充分地利用标记样本的标签信息。

图9 样本从20-5的分类准确率

相比于传统模型,H-GCN的一个特点是网络层数更深了,作者进一步分析了层数加深对性能的影响。如图10所示,当网络层数加深时,精度逐渐提升,但是当网络太深时,由于过拟合等原因,精度开始下降。在实验中,我们在引文数据集上使用了4层粗化层(对应的网络共有9层),在NELL数据集上使用了5层粗化层(对应的网络共有11层),这可能是由数据集的规模不同导致的。因为NELL的数据集最大,所以网络容量可以更大一点。

图10 层次加深对网络的影响

conclusion

图数据上的coarsening/pooling机制可以有效地增大模型的感受野,从而获取足够的全局信息。不同于传统的浅层图神经网络,作者提出了层次化的深度(分别为9层和11层)图卷积模型H-GCN,在节点分类任务上取得了SOTA的结果。特别地,在训练数据非常少的场景下,H-GCN的提升更为明显。而在现实生活中由于海量的数据量和高昂的标记成本,我们通常没有太多的标记样本,而H-GCN更大的感受野可以更充分地利用标记样本的标签信息,进一步提高分类准确性。

图卷积神经网络_深度层次化图卷积神经网络相关推荐

  1. 转:卷积神经网络_(1)卷积层和池化层学习

    博主总结的很好,学习中.转载:http://www.cnblogs.com/zf-blog/p/6075286.htm 卷积神经网络_(1)卷积层和池化层学习 卷积神经网络(CNN)由输入层.卷积层. ...

  2. ann人工神经网络_深度学习-人工神经网络(ANN)

    ann人工神经网络 Building your first neural network in less than 30 lines of code. 用不到30行代码构建您的第一个神经网络. 1.W ...

  3. 01.神经网络和深度学习 W4.深层神经网络(作业:建立你的深度神经网络+图片猫预测)

    文章目录 作业1. 建立你的深度神经网络 1. 导入包 2. 算法主要流程 3. 初始化 3.1 两层神经网络 3.2 多层神经网络 4. 前向传播 4.1 线性模块 4.2 线性激活模块 4.3 多 ...

  4. 吴恩达神经网络与深度学习——浅层神经网络

    吴恩达神经网络与深度学习--浅层神经网络 神经网络概述 神经网络表示 计算神经网络的输出 m个样本的向量化 for loop 向量化 向量化实现的解释 激活函数 sigmoid tanh函数 ReLu ...

  5. pytorch卷积可视化_使用Pytorch可视化卷积神经网络

    pytorch卷积可视化 Filter and Feature map Image by the author 筛选和特征图作者提供的图像 When dealing with image's and ...

  6. bp 神经网络 优点 不足_深度学习之BP神经网络--Stata和R同步实现(附Stata数据和代码)

    说明:本文原发于"计量经济圈"公众号,在此仅展示Stata的部分.R部分请移步至本人主页的"R语言与机器学习--经济学视角"专栏,或点击下方链接卡跳转. 盲区行 ...

  7. 深度学习面试题09:一维卷积(Full卷积、Same卷积、Valid卷积、带深度的一维卷积)...

    目录 一维Full卷积 一维Same卷积 一维Valid卷积 三种卷积类型的关系 具备深度的一维卷积 具备深度的张量与多个卷积核的卷积 参考资料 一维卷积通常有三种类型:full卷积.same卷积和v ...

  8. 贝叶斯深度神经网络_深度学习为何胜过贝叶斯神经网络

    贝叶斯深度神经网络 Recently I came across an interesting Paper named, "Deep Ensembles: A Loss Landscape ...

  9. 各种一维卷积(Full卷积、Same卷积、Valid卷积、带深度的一维卷积)

    一维卷积通常有三种类型:full卷积.same卷积和valid卷积,下面以一个长度为5的一维张量I和长度为3的一维张量K(卷积核)为例,介绍这三种卷积的计算过程. 一维Full卷积 Full卷积的计算 ...

最新文章

  1. 可视化卷积神经网络的过滤器_万字长文:深度卷积神经网络特征可视化技术(CAM)最新综述...
  2. 2017-2-19 C#基础 基本数据类型的转换,转义字符,常量
  3. java中break,continue,標籤實現goto效果(編程思想)
  4. fatal error C1083 无法打开包括文件“StdAfx.h” No such file or directory
  5. AGC022E - Median Replace
  6. java 枚举内嵌枚举_高度有用的Java ChronoUnit枚举
  7. 项目管理001---认识敏捷开发
  8. 7个设计模式的基本原则
  9. 1.Nginx 简介
  10. 每天一个linux命令
  11. [C#] 汉字转拼音,支持多音字
  12. fluidsim元件库下载_模块七FluidSIM软件应用 (1)
  13. c语言令牌桶原理,令牌桶算法的使用
  14. MVG 为 SGS 提供汽车天线测量和 OTA 测试设备
  15. 证件照怎么制作?怎样自己在线制作2寸照片?
  16. Simpson公式、复化梯形公式、Cotes公式以及Romberg公式
  17. java代码如何整合_Java如何合并两个PPT文档?
  18. 将自己常用的Ubuntu18.04备份为ISO文件,保留私人配置与文件
  19. 如何实现某些软件自动点赞
  20. 解决百度ueditor富文本编辑器不能插入视频的问题/src掉链/src清空,不能显示视频

热门文章

  1. vue 中$index $key 已移除
  2. Java - I/O
  3. egret3D与2D混合开发,画布尺寸不一致的问题
  4. Cracking the Coding Interview 5.2
  5. node --- 使用mongoose连接mongoDB,并初始化所有的Schema
  6. 大数据和人工智能的关系是什么?
  7. Spring Boot实践教程(二):SpringApplication分析
  8. 2017 省赛选拨 想打架吗?算我一个!所有人,都过来!(3) 递推 斐波拉数列的应用...
  9. 互联网产品研发的典型流程
  10. C语言--在终端输入多行信息,找出包含“ould”的行,并打印改行