热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

图卷积神经网络_深度层次化图卷积神经网络

来源:IJCAI2019论文地址:https:arxiv.orgabs1902.06667代码地址:https:github.comCRI

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

Introduction

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

5ddef27be50cdb97b6209379a5057b6c.png
图1 半监督节点分类

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

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

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

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

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

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

Related Work

1、GCN

f213d60159b04b2dc4da1bfa32d0bbcc.png
图2 图卷积神经网络的示意图

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

2、GAT

638ffa135337f8448094a83b01574fff.png
图3 GAT的示意图

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

3、GraphSAGE

7294a72e3ce986d1225ee80e9d529946.png
图4 GraphSAGE示意图

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

主要由以下三部分组成:

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

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

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

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

93b02cc28e33150236987144b6286aa7.png
图5 层次化的图卷积网络

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

Proposed Method

7233668b86f7f9823abd43954ce77e63.png
图6 H-GCN的网络结构

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

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

d123e96a94876d6ffb8ee05b32798e65.png
图7 Coarsening方法

具体分为两种情况:

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

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

e0c866d204278dd1153057b7d35a6b4b.png

其中,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能有效的增大感受野,使节点感受到相距比较远的标记节点的标签信息。

e661c8396dbbada4512b74b3e785abad.png
图8 分类准确率

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

293b50c63d0be2c602cc84362acedaec.png
图9 样本从20-5的分类准确率

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

226d8eb67b8e5f56e3ae890c39155d6d.png
图10 层次加深对网络的影响

conclusion

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



推荐阅读
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文介绍了在实现了System.Collections.Generic.IDictionary接口的泛型字典类中如何使用foreach循环来枚举字典中的键值对。同时还讨论了非泛型字典类和泛型字典类在foreach循环中使用的不同类型,以及使用KeyValuePair类型在foreach循环中枚举泛型字典类的优势。阅读本文可以帮助您更好地理解泛型字典类的使用和性能优化。 ... [详细]
  • Thisworkcameoutofthediscussioninhttps://github.com/typesafehub/config/issues/272 ... [详细]
  • [转载]从零开始学习OpenGL ES之四 – 光效
    继续我们的iPhoneOpenGLES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 本文介绍了关于Java异常的八大常见问题,包括异常管理的最佳做法、在try块中定义的变量不能用于catch或finally的原因以及为什么Double.parseDouble(null)和Integer.parseInt(null)会抛出不同的异常。同时指出这些问题是由于不同的开发人员开发所导致的,不值得过多思考。 ... [详细]
  • 知识图谱表示概念:知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Obj ... [详细]
author-avatar
泉怪的皮毛_884
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有