一文读懂简化的图卷积网络GCN(SGC)| ICML 2019

GCN vs MLP
Feature propagation 特征传播
Feature transformation and nonlinear transition
分类器
线性化
逻辑回归
优化细节
Performance
Efficiency
这种简化了的线性SGC模型在很多任务上比GCN和一些其他GNN网络更高效,并且参数更少
并且在效率方面,在Reddit数据集上比FastGCN快两个数量级
SGC在文本分类、用户地理定位、关系提取和zero-shot图像分类任务方面,即使不能超越基于GCN的方法,但至少也是竞争对手

特征传播
线性转换
逐点非线性激活



S表示添加自循环“normalized”的邻接矩阵(实际上并没有归一化)
A˜=A+1是A \mathbf{A}A的度矩阵
D˜是A的度矩阵








一个固定的(没有参数,parameter-free)的特征提取器(或平滑器smoothing component)
特征提取器后是一个线性逻辑回归分类器









Spectral networks and locally connected networks on graphs,ICML 2014-首次提出了一个扩展到图上的基于谱图理论的CNN网络
Convolutional neural networks on graphs with fast localized spectral filtering,NIPS 2016-通过使用切比雪夫多项式近似消除了拉普拉斯矩阵分解带来的巨大的计算开销,定义了图卷积
Semi-supervised classification with graph convolutional networks,ICLR 2017-通过使用预先定义的传播矩阵S SS进行一阶切比雪夫近似,极大的降低了图卷积的计算,正式提出GCN
Inductive representation learning on large graphs(GraphSAGE),NIPS 2017-Hamilton等人提出了一个inductive的图卷积,使用固定邻居size采样,然后进行邻居特征聚合
Diffusion-convolutional neural networks,NIPS 2016;;NGCN: Multi-scale graph convolution for semi-supervised node classification,2018;Lanczosnet: Multi-scale deep graph convolutional networks,ICLR 2019-利用多尺度信息,将邻接矩阵S SS提升到更高的阶
How powerful are graph neural networks?,ICLR 2019-研究L图神经网络对任意两个图的区分能力,并引入图同构网络,证明其与图同构的Weisfeiler-Lehman检验同样强大
Predict then propagate: Graph neural networks meet personalized pagerank,ICLR 2019-利用神经网络和个性化随机游走将非线性变换与传播分离
Attention-based graph neural network for semisupervised learning,2018-提出了基于注意力机制的GCN
A simple yet effective baseline for non-attribute graph classification,2018-提出了一种有效的基于节点度统计信息进行图分类的线性baseline
Bootstrapped graph diffusions: Exposing the power of nonlinearity,2018-结果表明,使用线性特征/标签传播步骤的模型可以从自训练策略中提升效果
Label efficient semi-supervised learning via graph filtering,CVPR 2019-提出了一种广义的标签传播,并提供了一个类似谱分析的renormalization trick
Graph Attention Networks,ICLR 2018;Attention-based graph neural network for semisupervised learning,2018;Gaan: Gated attention networks for learning on large and spatiotemporal graphs,2018;Rethinking knowledge graph propagation for zero-shot learning,2018-这些基于注意力机制的模型为不同的边分配了权重,但是注意力机制也带来了内存的使用和巨大的计算开销
一篇基于图上的注意力模型的综述文章:Attention models in graphs: A survey,2018
DeepWalk:它依赖于截断的随机游走,并使用一种skip-gram来生成节点表示
Deep Graph Infomax (DGI),2019:用非监督策略学习图的节点表示,DGI通过最大化相互信息来训练一个图形卷积编码器
…

表2中,可以看出SGC和GCN的性能相当,并且在Citeseer数据集上比GCN高1%。性能提升的原因可能是由于SGC的参数更少较少了过拟合GCN中的过拟合的情况。
GIN中就有严重的过拟合。
LNet and AdaLNet在引文网络上不稳定。

表3是在Reddit社交网络数据集上的实验。
SGC比基于GCN的变种GraphSAGE和FastGCN高1%。
DGI论文中表示随机初始化的DGI编码器的性能几乎与经过训练的编码器的性能相匹配;然而,这两种模型在Reddit上的表现都不如SGC。这个结果可能表明,额外的权重和非线性激活在DGI编码器中是多余的。

图3是在Pubmed和Reddit数据集上的效率对比图
显然,SGC是效率最高的
SGC中是预先计算的,SGC训练的时候只需要学习一个权重矩阵Θ,减少了内存的使用。
由于S通常是稀疏的,而K通常比较小,因此,可以用稀疏稠密矩阵乘法进行计算
无法在Reddit上对GaAN和DGI的训练时间进行基准测试,因为实验没有发布
GPU:NVIDIA GTX 1080 Ti
在大图上由于内存要求不能进行GCN的训练。FastGCN和GraphSAGE等方法使用采样的方法减少邻居数量来处理这个问题。Deep Graph InfoMax(ICLR,2019)通过限制模型的size来解决这个问题
SGC训练的时候比使用快速采样的FastGCN快两个数量级,并且性能几乎没有损失
text classification
semi-supervised user geolocation
relation extraction
zero-shot image classification
graph classification
(Graph convolutional networks for text classification,2019)使用2层的GCN来实现了一个state-of-the-art的结果,创建了一个语料库图,该图将文档和单词都视为图中的节点。
Word-word边的权值为点信息的互信息(point twise mutual information, PMI), word-document边的权值为标准化的TF-IDF socre。
如表4显示,一个SGC (K = 2)在5个基准数据集上与他们的模型竞争,同时达到了83.6倍的速度。

半监督用户地理定位(Semi-supervised user geolocation)根据用户发布的帖子、用户之间的关系以及少数被标记的用户,来定位用户在社交媒体上的“家”的位置。
表5显示,SGC在GEOTEXT、TWITTERUS和TWITTER-WORLD 的高速公路连接方面优于GCN,同时在TWITTER-WORLD上节省了30多个小时。

关系抽取包括预测句子中主语和宾语之间的关系。
C-GCN采用LSTM,后面接着GCN和MLP层。实验将GCN替换为SGC (K = 2)将得到的模型称为C-SGC

zero-shot image分类包括学习一个图像分类器,不需要从测试类别中获取任何图像或标签。
GCNZ使用GCN将类别名称映射到图像特征域,并查找与查询图像特征向量最相似的类别 - 表7显示,使用MLP替换GCN,然后使用SGC可以提高性能,同时将参数数量减少55%。
为了将预先训练好的GloVe向量映射到由ResNet-50提取的视觉特征空间,需要一个MLP特征提取器。
同样,这个下游应用证明了学习图卷积滤波器是多余的。


◆
公开课推荐
◆

推荐阅读
相关文章:

iOS UITableViewCell重用问题
TableView的重用机制,为了做到显示和数据分离,iOS tableView的实现并且不是为每个数据项创建一个tableCell。而是只创建屏幕可显示最大个数的cell,然后重复使用这些cell,对cell做单独的显示配置,来达到既不影响显示效果…

NLP常用工具
为什么80%的码农都做不了架构师?>>> NLP常用工具 各种工具包的有效利用可以使研究者事半功倍。 以下是NLP版版友们提供整理的NLP研究工具包。 同时欢迎大家提供更多更好用的工具包,造福国内的NLP研究。 *NLP Toolbox CLT http://compl…

Swift快速入门之getter 和 setter
属性可以用getter和setter方法的形式提供。 <code class"hljs lasso has-numbering" style"display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: Source Code Pro, monospace;font-size:u…

Linux下getopt函数的使用
getopt为解析命令行参数函数,它是Linux C库函数。使用此函数需要包含系统头文件unistd.h。 getopt函数声明如下: int getopt(int argc, char * const argv[], const char * optstring); 其中函数的argc和argv参数通常直接从main的参数直接传递而来。o…

20行Python代码说清“量子霸权”
作者 | 马超 来源 | 程序人生(ID:coder_life)近日谷歌的有关量子霸权(Quantum Supremacy)的论文登上了Nature杂志150年刊的封面位置,而再次罢占各大媒体的头条位置,其实这篇文章之前曾经短暂上过NASA的网站…

Android组件系列----BroadcastReceiver广播接收器
【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3960623.html 【正文】 一、广播的功能和特征 广播的生命周期很短,经过调用对象-->…

Swift 代码调试-善用XCode工具(UI调试,五种断点,预览UIImage...)
原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmodelist 我的stackoverflow 工欲善其事,必先利其器,强烈建议新手同学好好研究下XCode这个工具。比如Build Settings,Build Info Rules,Build Parse…

Linux下getopt_long函数的使用
getopt_long为解析命令行参数函数,它是Linux C库函数。使用此函数需要包含系统头文件getopt.h。 getopt_long函数声明如下: int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);…

Expect自动化控制简单介绍
telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;也可利用Tk工具,将交互程序包装在X11的图形用…

C++中标准模板库std::vector的实现
以下实现了C标准模板库std::vector的部分实现,参考了 cplusplus. 关于C中标准模板库std::vector的介绍和用法可以参考 https://blog.csdn.net/fengbingchun/article/details/51510916 实现代码vector.hpp内容如下: #ifndef FBC_STL_VECTOR_HPP_ #defi…
Swift学习 OOP三大特性:继承、多态、封装
先看个例子 从上面的例子可以总结那么一句话:”学生是人”。也就是Student类继承People类。简而言之,学生是人,这句话是说得通的,但是”人是学生”这句话是说不通的,不是学生就不是人了嘛? 从代码中,我们可以看出S…

5折票倒计时3天 | 超干货议程首度曝光!2019 中国大数据技术大会邀您共赴
(大会官网https://t.csdnimg.cn/U1wA)2019年,大数据与人工智能的热度已经蔓延到了各个领域,智能交通、AIoT、智慧城市,智慧物流、AI中台、工业制造等各种黑科技成为热搜名词。而在今年的乌镇互联网大会上,大…

mysql select * f
mysql> select * from tb;-------------| id | name |-------------| 1 | tbone || 3 | 2d2 || 5 | 55 || 6 | 66 |-------------4 rows in set (0.00 sec)转载于:https://www.cnblogs.com/bashala/p/3974088.html

C++/C++11中用于定义类型别名的两种方法:typedef和using
类型别名(type alias)是一个名字,它是某种类型的同义词。使用类型别名有很多好处,它让复杂的类型名字变得简单明了、易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的。在C中,任何有效类型都可以有别名。 有两种方法…
iOS学习笔记--01swift实现提示框第三方库:MBProgressHUD
本文使用swift语言使用MBProgressHUD。 开源项目MBProgressHUD可以实现多种形式的提示框。使用简单,方便。GitHud的下载地址是:https://github.com/jdg/MBProgressHUD/ 下载完成后,将MBProgressHUD.h和MBProgressHUD.m拖入已经新建好的Swift项…

2019北京智源大会在京开幕, 中外学术大咖共话人工智能研究前沿
10月31日,由北京智源人工智能研究院主办的2019北京智源大会在国家会议中心开幕,会期两天。智源大会是北京创建全球人工智能学术和创新最优生态的标志性学术活动,定位于“内行的AI盛会”,以国际性、权威性、专业性和前瞻性为特色&a…

linux中登录类型及配置文件
linux中登录shell的类型1.交互式登录:直接通过终端输入用户信息登录1)login:2)在shell中 su - usernamesu -l username2.非交互式登录1)su username2)图形界面的终端3)执行脚本的过程用户配置文…

Swift项目引入第三方库的方法
分类:iOS(55) 目录(?)[] Swift项目引入第三方库的方法 转自 http://blog.shiqichan.com/How-To-Import-3rd-Lib-Into-Swift-Project/ 以下,将创建一个Swift项目,然后引入3个库: Snappy 简化autolayout代码…

最新NLP架构的直观解释:多任务学习– ERNIE 2.0(附链接)| CSDN博文精选
作者 | Michael Ye翻译 | 陈雨琳,校对 | 吴金笛来源 | 数据派THU(ID:DatapiTHU)百度于今年早些时候发布了其最新的NLP架构ERNIE 2.0,在GLUE基准测试中的所有任务上得分均远高于XLNet和BERT。NLP的这一重大突破利用了一…

C++中的内存对齐介绍
网上有很多介绍字节对齐或数据对齐或内存对齐的文章,虽然名字不一样,但是介绍的内容大致都是相同的。这里以内存对齐相称。注:以下内容主要来自网络。 内存对齐,通常也称为数据对齐,是计算机对数据类型合法地址做出了…

__cplusplus的用处
经常在/usr/include目录下看到这种字句: #ifdef __cplusplus extern "C" { #endif ... #ifdef __cplusplus } #endif 不太明白是怎么用的。今天阅读autobook,在第53页看到了作者的解释:C/C编译器对函数和变量名的命名方法不一样…

Linux下的内存对齐函数
在Linux下内存对齐的函数包括posix_memalign, aligned_alloc, memalign, valloc, pvalloc,其各个函数的声明如下: int posix_memalign(void **memptr, size_t alignment, size_t size); void *memalign(size_t alignment, size_t size); void *aligned_…

Swift2.0系列]Error Handling(项目应用篇)
1.FileManager中的应用 倘若你只是想看FileManager中的 Error Handling是如何实现的,请找到3.删除文件以及4.获取文件信息。我分别为你提供了do-catch以及try?的使用方法。 打开Xcode,选中Single View Application,输入项目名称例如FileManagerDemo,点击…

总点第一个视频产生选择偏差?Youtube用“浅塔”来纠正
作者 | Tim Elfrink译者 | Tianyu出品 | AI科技大本营(ID:rgznai100)【导读】本文来自于谷歌研究人员最近发表的一篇论文,介绍了视频平台 Youtube 的视频推荐方法,并在 RecSys 2019 大会上做了分享。本文总结归纳了一些论文中的重…

HTML样式offset[Direction] 和 style.[direction]的区别
为什么80%的码农都做不了架构师?>>> 以offsetLeft与style.left为例: offsetLeft使用的值是字符串,如“100px", style.left则使用数值,如 100 offsetLeft只可以读,因此用无法通过Js改变这个值实现样…
Ubuntu 14.04上安装pip3/numpy/matplotlib/scipy操作步骤
Ubuntu 14.04 64位上默认安装了两个版本的python,一个是python2.7.6,另外一个是python3.4.0,如下图所示: 安装完pip3的结果如下图所示: 升级完pip3的结果如下图所示: 安装完numpy的结果如下图所示: 通过sudo pip3 install matplot…

NSHelper.showAlertTitle的两种用法 swift
var model : CarCity CarCity() if (NSString.isNullOrEmpty(locationLabel.text)) { NSHelper.showAlertTitle(nil, message: "暂无法定位,请检查网络。", cancel: "确定") return } if (NSString.isNullOrEmpty(plateTextFild.text)) { NSHe…

通俗易懂:图卷积神经网络入门详解
作者 | 蝈蝈来源 | 转载自知乎用户蝈蝈【导读】GCN问世已经有几年了(2016年就诞生了),但是这两年尤为火爆。本人愚钝,一直没能搞懂这个GCN为何物,最开始是看清华写的一篇三四十页的综述,读了几页就没读了&a…

Java数据结构一 —— Java Collections API中的表
1.Collection接口 位于java.util包中,以下是重要的部分。 1 public interface Collection<AnyType> extends Iterable<AnyType> 2 { 3 int size(); 4 boolean isEmpty(); 5 void clear(); 6 boolean add(AnyType x); 7 …

Swift 中的内存管理详解
这篇文章是在阅读《The Swift Programming Language》Automatic Reference Counting(ARC,自动引用计数)一章时做的一些笔记,同时参考了其他的一些资料。 在早期的 iOS 开发中,内存管理是由开发者手动来完成的。因为传统…