MLP GCN GAT区别与联系

在节点表征的学习中:

  • MLP节点分类器只考虑了节点自身属性,忽略了节点之间的连接关系,它的结果是最差的;
  • 而GCN与GAT节点分类器,同时考虑了节点自身属性与周围邻居节点的属性,它们的结果优于MLP节点分类器。

从中可以看出邻居节点的信息对于节点分类任务的重要性。

基于图神经网络的节点表征的学习遵循消息传递范式:

  • 在邻居节点信息变换阶段,GCN与GAT都对邻居节点做归一化和线性变换(两个操作不分前后);
  • 在邻居节点信息聚合阶段都将变换后的邻居节点信息做求和聚合;
  • 在中心节点信息变换阶段只是简单返回邻居节点信息聚合阶段的聚合结果。

GCN与GAT的区别在于邻居节点信息聚合过程中的归一化方法不同:

  • 前者根据中心节点与邻居节点的度计算归一化系数;

  • 后者根据中心节点与邻居节点的相似度计算归一化系数。

  • 前者的归一化方式依赖于图的拓扑结构,不同节点其自身的度不同、其邻居的度也不同,在一些应用中可能会影响泛化能力。

  • 后者的归一化方式依赖于中心节点与邻居节点的相似度,相似度是训练得到的,因此不受图的拓扑结构的影响,在不同的任务中都会有较好的泛化表现。
    另外,GCN利用了拉普拉斯矩阵,GAT利用attention系数。一定程度上而言,GAT会更强,因为 顶点特征之间的相关性被更好地融入到模型中。

一些问题

GCN是一种全图的计算方式,一次计算就更新全图的节点特征。学习的参数很大程度与图结构相关,这使得GCN在inductive任务上遇到困境。

  1. 为什么GAT适用于有向图?

我认为最根本的原因是GAT的运算方式是逐顶点的运算(node-wise),这一点可从公式(1)—公式(3)中很明显地看出。每一次运算都需要循环遍历图上的所有顶点来完成。逐顶点运算意味着,摆脱了拉普利矩阵的束缚,使得有向图问题迎刃而解。

  1. 为什么GAT适用于inductive任务?

GAT中重要的学习参数是 W 与 a(·) ,因为上述的逐顶点运算方式,这两个参数仅与顶点特征相关,与图的结构毫无关系。所以测试任务中改变图的结构,对于GAT影响并不大,只需要改变 Ni,重新计算即可。

与此相反的是,GCN是一种全图的计算方式,一次计算就更新全图的节点特征。学习的参数很大程度与图结构相关,这使得GCN在inductive任务上遇到困境。

GCN GAT GraphSAGE

GraphSAGE的提出

前面说的GCN的缺点也是很显然易见的,第一,GCN需要将整个图放到内存和显存,这将非常耗内存和显存,处理不了大图第二,GCN在训练时需要知道整个图的结构信息(包括待预测的节点), 这在现实某些任务中也不能实现(比如用今天训练的图模型预测明天的数据,那么明天的节点是拿不到的)。

在介绍GraphSAGE之前,先介绍一下Inductive learning和Transductive learning。注意到图数据和其他类型数据的不同,图数据中的每一个节点可以通过边的关系利用其他节点的信息。这就导致一个问题,GCN输入了整个图,训练节点收集邻居节点信息的时候,用到了测试和验证集的样本,我们把这个称为Transductive learning。然而,我们所处理的大多数的机器学习问题都是Inductive learning,因为我们刻意的将样本集分为训练/验证/测试,并且训练的时候只用训练样本。这样对图来说有个好处,可以处理图中新来的节点,可以利用已知节点的信息为未知节点生成embedding,GraphSAGE就是这么干的。

GraphSAGE是一个Inductive Learning框架,具体实现中,训练时它仅仅保留训练样本到训练样本的边,然后包含Sample和Aggregate两大步骤,Sample是指如何对邻居的个数进行采样,Aggregate是指拿到邻居节点的embedding之后如何汇聚这些embedding以更新自己的embedding信息。下图展示了GraphSAGE学习的一个过程

第一步,对邻居采样(k=1,第一跳最多采样3个;k=2,第二跳最多采样两个)
第二步,采样后的邻居embedding传到节点上来,并使用一个聚合函数聚合这些邻居信息以更新节点的embedding(从最内层开始更新,总共对红色节点更新两次)
第三步,根据更新后的embedding预测节点的标签

GrapgSage优点

(1)利用采样机制,很好的解决了GCN必须要知道全部图的信息问题,克服了GCN训练时内存和显存的限制,即使对于未知的新节点,也能得到其表示
(2)聚合器和权重矩阵的参数对于所有的节点是共享的
(3)模型的参数的数量与图的节点个数无关,这使得GraphSAGE能够处理更大的图
(4)既能处理有监督任务也能处理无监督任务

Graph Attention Networks(GAT)

为了解决GNN聚合邻居节点的时候没有考虑到不同的邻居节点重要性不同的问题,GAT借鉴了Transformer的idea,引入masked self-attention机制,在计算图中的每个节点的表示的时候,会根据邻居节点特征的不同来为其分配不同的权值。

GAT优点

(1)训练GCN无需了解整个图结构,只需知道每个节点的邻居节点即可
(2)计算速度快,可以在不同的节点上进行并行计算
(3)既可以用于Transductive Learning,又可以用于Inductive Learning,可以对未见过的图结构进行处理

三者特点

GCN:训练是 full-batch 的,难以扩展到大规模网络,并且收敛较慢;

GAT:参数量比 GCN 多,也是 full-batch 训练;只用到 1-hop 的邻居,没有利用高阶邻居,当利用 2 阶以上邻居,容易发生过度平滑(over-smoothing);

GraphSAGE:虽然支持 mini-batch 方式训练,但是训练较慢,固定邻居数目的 node-wise 采样,精度和效率较低。

三者的缺点:

1.GCN 的缺点在于它灵活性差,transductive,并且扩展性非常差,除此之外这篇论文借助验证集来早停帮助性能提升,跟它半监督学习的初衷有点相悖。

2.GraphSage 这篇论文旨在提升 gcn 扩展性和改进训练方法缺陷。它将模型目标定于学习一个聚合器而不是为每个节点学习到一个表示,这中思想可以提升模型的灵活性和泛化能力。除此之外,得益于灵活性,它可以分批训练,提升收敛速度。但是它的问题是因为节点采样个数随层数指数增长,会造成模型在 time per batch 上表现很差,弱于 GCN,这方面的详细讨论可以参考 Cluster-GCN 这篇论文。

3.GAT 这篇论文创新之处是加入 attention 机制,给节点之间的边以重要性,帮助模型学习结构信息。相对的缺点就是训练方式不是很好,其实这个模型可以进一步改,用 attention 做排序来选取采样节点,这样效果和效率方面应该会有提升。

共同缺点

这三种模型针对的图结构都是 homogeneous 的,也就是只有同一种节点和连边,如果是异质网络(heterogeneous)则不能直接处理。能解决的任务目前来说主要是通过 embedding 做节点分类和连边预测。

三者应用方面区别

GCN 和 GraphSAGE 均是各向同性的网络结构,某些情况下学习表示的能力较差一些,只能用于无向图。而 GAT 是各向异性的,考虑了各个邻居节点的权重,可以用于有向图。

GCN 和 GAT 在最开始被提出来的时候,是不考虑自身节点信息的,因此性能比较差,后来人们对图矩阵增加自环的方式来一定程度上缓解这个问题。而 GraphSAGE 被设计出来就考虑了节点本身的信息。

BenchmarkGNN 文章在各个任务上对这几种方法进行了比较,GCN 是性能最差的,GAT 性能介于中间,GraphSAGE 性能较好。另外 GCN 和 GAT 均可以使用残差连接的方式来提升性能。

参考:

MLP GCN GAT
GCN与GAT之间的重要联系和区别
GCN, GAT, GraphSAGE对比【整理】
图神经网络入门必读: 一文带你梳理GCN, GraphSAGE, GAT, GAE, Pooling, DiffPool

MLP,GCN,GAT,GraphSAGE, GAE, Pooling,DiffPool相关推荐

  1. 图神经网络三剑客:GCN、GAT与GraphSAGE

    ©PaperWeekly 原创 · 作者|桑运鑫 学校|上海交通大学 研究方向|图神经网络在金融领域的应用 2019 年号称图神经网络元年,在各个领域关于图神经网络的研究爆发式增长.本文主要介绍一下三 ...

  2. 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2022):基于异构图GCN和GAT的DTI预测

    (2022.4.16)Briefings-DTI-HETA:基于异构图GCN和GAT的DTI预测 目录 (2022.4.16)Briefings-DTI-HETA:基于异构图GCN和GAT的DTI预测 ...

  3. GNN综述:从deepwalk到GraphSAGE,GCN,GAT

    作者丨弃之@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/288322305 编辑丨极市平台 1.graph embedding(GE) 1.1.图中学习的分类 1. ...

  4. GNN在谱域下的演化:Spectral CNN,ChebyNet,GCN

    文章目录 1. 主要脉络梳理 2. 图傅里叶变换(Graph Fourier Transform) 2.1 拉普拉斯矩阵特征分解 2.2 傅里叶基和傅里叶系数 3. 图卷积 4. 卷积神经网络(CNN ...

  5. rx590gme刷bios_RX590 GME 超白金极光特别版,GCN架构

    本文将对RX590 GME 超白金极光特别版A卡予以介绍,如果你想对它的具体情况一探究竟,或者想要增进对它的认识,不妨请看以下内容哦. 蓝宝石RX590 GME 超白金极光特别版采用极光蓝主题配色,搭 ...

  6. 无需任何标记数据,几张照片就能还原出3D物体结构,自监督学习还能这样用...

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 只给你几张物体的照片,你能准确还原出它在各种刁钻视角下的模样吗? 现在,AI可能比你还原得还要准确. 只给几个3D球的正脸照片: AI立刻就 ...

  7. 用AI取代SGD?无需训练ResNet-50,AI秒级预测全部2400万个参数,准确率60% | NeurIPS 2021...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 一次前向传播便可预测几乎任何神经网络的参数,我们离用单一元模型取代手 ...

  8. 一文看懂推荐系统:Gate网络(一):新浪微博GateNet,GateNet就是想用attention的方法去搞,和SENet一样,都是张俊林的杰作

    一文看懂推荐系统:Gate网络(一):新浪微博GateNet,GateNet就是想用attention的方法去搞,和SENet一样,都是张俊林的杰作 提示:最近系统性地学习推荐系统的课程.我们以小红书 ...

  9. 过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件

    过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件 find ./ -type f -size +1G| xargs rm 在清理系统日志文件 ...

  10. java操作跨页的word cell,“excle如何打印不出现断行“EXCEL中,如何不跨页断行打印或显示,谢谢...

    EXCEL中,如何不跨页断行打印或显示,谢谢 打印预览--页面设置--工作表--网格线(打勾) 试试! java导入excel 判断当前行有没有数据 工作中用到入excel一个方法,你还可以通过一些插 ...

最新文章

  1. 使用W3C XML Schema
  2. Oracle 同义词的创建及其作用
  3. python barrier option pricing_《Python金融数据分析》书内代码实战与讲解(二)金融衍生物定价...
  4. python将EXCEL数据导入数据库时日期型数据变成数字并加.0的问题一行代码解决方案方案
  5. Ambari 2.6.0 HDP 2.6.3集群搭建
  6. Tensorflow之RNN,LSTM
  7. 仲裁文件夹服务器,仲裁服务器是什么
  8. kotlin键值对数组_Kotlin程序检查数组是否包含给定值
  9. 离异美女跟程序员相亲,结果自我介绍完就被秒删:三无送个儿
  10. CQRS简单入门(Golang)
  11. java 蓝牙指定连接失败_java – Android蓝牙连接 – 服务发现失败
  12. idea 编译时提示找不到符号
  13. limesurvey php5.2,Limesurvey二次开发(接入CAS统一身份认证)随笔
  14. Altium 怎么设置鼠标滚轮放大缩小
  15. UESTC 1636 梦后楼台高锁,酒醒帘幕低垂 最小生成树Kruskal算法的扩展
  16. YouTube深度学习视频推荐系统
  17. -webkit-touch-callout: none;禁止ios弹出菜单,长按图片保存到手机时
  18. Matlab常用图像处理命令108例(二)
  19. 关于龙蜥社区20个问题 |龙蜥问答第1期
  20. 【总结】浏览器 User-Agent 大全

热门文章

  1. 第一个hadoop程序(hadoop2.4.0集群+Eclipse环境)
  2. python蓝屏_plt.绘图()导致windows出现蓝屏
  3. 效果图色彩与色彩搭配原理
  4. Clouda安装和使用过程详解
  5. Flixel Dame 坦克大战(二)Dame-editor使用指南
  6. vue3 vite版本 引入本地静态图片的方式
  7. lstm优点缺点_LSTM和易失性时间序列:优点和缺点
  8. ADO 在C/C++中的基本使用
  9. thingworx ADO安装
  10. PayPal的一些注意事项