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

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更大的感受野可以更充分地利用标记样本的标签信息,进一步提高分类准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机二级怎么测试c语言,全国计算机等级测试二级C语言视频教程(完整版).doc...

第一章 程序设计的基本概念01-01.程序设计的基本概念(1)01-02.程序设计的基本概念(2)01-03.程序设计的基本概念(3)第二章 C语言基础知识02-01.简单C语言的构成和格式(1)02-02.简单C语言的构成和格式(2)02-03.标识符的组成和分类02-04.整型数据和实型数据(1)02-05.整型数据和实型…

去掉Phoca Download的Powered By

进入components/com_phocadownload/views/ 这是Phoca Download的模板文件夹 打开category/tmpl/default.php 分类页 //echo </div><div class"pd-cb"> </div> . $this->tmpl[phoca_download];echo </div> ; 打开file/tmpl/default.php …

如何居中div

div居中 博客分类&#xff1a;笔记csshtmldiv CSS中怎么让div居中 CSS 如何使div层水平居中今天用CSS遇到个的问题,div本身没有定义自己居中的属性, 网上很多的方法都是介绍用上级的text-align: center然后嵌套一层div来解决问题. 可是事实上这样的方法科学吗? 经过网络搜索…

c语言小数加分,求救:c语言课程设计 员工工资管理程序 有加分的。谢谢

#define SIZE 50/* 定义结构体 */struct date{int month;int day;int year;};typedef struct employee{char name[50] ,num[10],sex,edu[10],duty[15];int age,income;struct employee *next;}empl[SIZE];/* 逐项输出链表中的内容 */void view (struct employee* head){struct …

老师能提供什么帮助

老师能提供什么帮助&#xff1f; 这篇本来想上周写的&#xff0c;原计划在感恩节推送&#xff0c;可惜太忙&#xff0c;计划赶不上变化。 时隔十年&#xff0c;我又要给计算机系的同学们上课了&#xff0c;心里还是有些小激动的。我下学期要开一门大课叫程序设计与数据结构,涵盖…

(转)SystemProcessesAndThreadsInformation

http://hi.baidu.com/hanjdud8606/item/7a970408a95acc843d42e27f NTSTATUS NTAPI ZwQuerySystemInformation(ULONG SystemInformationClass,PVOID SystemInformation,ULONG SystemInformationLength,PULONG ReturnLength ); 第一个参数是一个枚举类型&#xff0c;传入的是你需…

12个Icon图标资源网站

1.除了Icon以外&#xff0c;还有很多不错的UI设计素材。 地址&#xff1a;http://worldui.com/2.除了免费Icon资源下载以外&#xff0c;还提供Icon定制的付费服务。地址&#xff1a;http://dryicons.com/3.很喜欢这个icon资源站的展示方式。地址&#xff1a;http://www.icotrip…

python列表split_Python-split()函数实例用法讲解

在Python中&#xff0c;split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串&#xff0c;这些子串会被保存到列表中(不包含分隔符)&#xff0c;作为方法的返回值反馈回来。split函数用法split(sepNone, maxsplit-1)参数sep – 分隔符&#xff0c;默认为所有的空字…

go语言基础 -- 闭包

什么是闭包 闭包的概念&#xff0c;在很多语言中都有&#xff0c;比如python&#xff0c;这里要介绍的go&#xff0c;闭包就是函数与其相关的环境组合的一个整体。 我们通过一个例子来理解闭包&#xff1a; func Addfunc() func (x int) int {var n int 0// 返回的是一个函数…

linux中解决SSH连接慢问题

2019独角兽企业重金招聘Python工程师标准>>> 现在连接linux服务器一般都是使用SSH远程连接的方式。最近新装了一台服务器&#xff0c;发现telnet时速度很快&#xff0c;ping时一切也正常&#xff0c;但SSH连接的时候却很慢。经过网上资料查询&#xff0c;大致是有以…

利用Theme自定义Activity进入退出动画

有没有觉得Activity的默认动画太快了或者太难看了。。我原来使用Activity.overridePendingTransition来自定义Activity的进入动画&#xff0c;却发现没法定义退出的动画。结果就发现了强大的Theme和Style&#xff0c;之后还需要好好研究一下。具体是这样子的&#xff1a;在Andr…

阿里云深圳数据中心正式开放

阿里云深圳数据中心正式开放 ​ 8月29日&#xff0c;阿里云深圳数据中心正式开放运营&#xff0c;这是继杭州、青岛、北京、香港之后&#xff0c;我们在全球开放的第五个数据中心。 深圳数据中心主要辐射以深圳、广州为中心的华南区域&#xff0c;以满足这一区域内的商贸企业、…

vue 文件及描述信息一起上传_用Vue实现一个大文件上传和断点续传

前言这段时间面试官都挺忙的&#xff0c;频频出现在博客文章标题&#xff0c;虽然我不是特别想蹭热度&#xff0c;但是实在想不到好的标题了-。-&#xff0c;蹭蹭就蹭蹭 :)事实上我在面试的时候确实被问到了这个问题&#xff0c;而且是一道在线 coding 的编程题&#xff0c;当时…

c语言函数声明定义参数命名,C语言函数声明与定义

C语言函数声明与定义教程在C语言函数声明与定义语法type funcName(paramType1 param1, paramType2 param2){// 执行语句...return val}参数参数描述type函数的返回值类型&#xff0c;如果没有任何返回值&#xff0c;则写 void&#xff0c;不可以死省略不写。funcName函数名。pa…

gcc g++ Linux下动态库_静态库

关于Unix静态库和动态库的分析 基本概念 库有动态与静态两种&#xff0c;动态通常用.so为后缀&#xff0c;静态用.a为后缀。 例如&#xff1a;libhello.so libhello.a 为了在同一系统中使用不同版本的库&#xff0c;可以在库文件名后加上版本号为后缀,例如&#xff1a; libhell…

SNF开发平台WinForm之五-高级查询使用说明-SNF快速开发平台3.3-Spring.Net.Framework

5.1运行效果&#xff1a; 5.2开发实现&#xff1a; 1、按上面效果来说&#xff0c;先来看一下在程序当中如果调用。第一步在页面拖拽一个按钮为“高级查询”&#xff0c;事件上写下如下代码&#xff1a; 如果是单表查询的话&#xff0c;只需要传GridView就行&#xff0c;如果是…

【转】PowerDesigner表结构和字段大小写转换

【转自】http://blog.csdn.net/xysh1991/article/details/8016192 使用方法&#xff1a;进入PowerDesigner&#xff0c;打开一个PDM&#xff0c;在菜单栏找到&#xff1a;Tools – Excute Commands – Edit/Run Script&#xff0c;或者直接按CtrlShiftX调出脚本执行窗口&#x…

新唐c语言怎么计算指数运算,C语言位域精解

有些信息在存储时&#xff0c;并不需要占用一个完整的字节&#xff0c; 而只需占几个或一个二进制位。例如在存放一个开关量时&#xff0c;只有0和1 两种状态&#xff0c;用一位二进位即可。为了节省存储空间&#xff0c;并使处理简便&#xff0c;&#xff23;语言又提供了一种…

华为荣耀5cvs华为v9play_华为荣耀v9play和荣耀9哪个好_华为荣耀v9play和荣耀9对比评测_飞翔教程...

华为荣耀v9play是华为最新发布的手机&#xff0c;这款手机可以说是华为荣耀v9的青春版&#xff0c;把这款手机跟华为荣耀9对比起来哪款更好呢&#xff1f;下面就为大家带来详细的华为荣耀v9play和荣耀9对比评测&#xff01;荣耀9介绍&#xff1a;6.12日下午&#xff0c;荣耀在上…

颈椎病防治指南

2019独角兽企业重金招聘Python工程师标准>>> 长期从事财会、写作、打字、办公室等职业的工作人员&#xff0c;由于长期低头伏案工作&#xff0c;使颈椎长时间处于屈曲位或某些特定体位&#xff0c;不仅使颈椎间盘内的压力增高&#xff0c;而且也使颈部肌肉长期处于非…