基于图同构网络(GIN)的图表征网络的实现
基于图同构网络的图表征学习主要包含以下两个过程:

  1. 首先计算得到节点表征;
  2. 其次对图上各个节点的表征做图池化(Graph Pooling),或称为图读
    出(Graph Readout),得到图的表征(Graph
    Representation)。
    在这里,我们将采用自顶向下的方式,来学习基于图同构模型(GIN)的图
    表征学习方法。我们首先关注如何基于节点表征计算得到图的表征,而忽
    略计算结点表征的方法。
    基于图同构网络的图表征模块(GINGraphRepr
    Module)
    此模块首先采用GINNodeEmbedding 模块对图上每一个节点做节点嵌入
    (Node Embedding),得到节点表征,然后对节点表征做图池化得到图
    的表征,最后用一层线性变换得到图的表征(graph representation)。

可以看到可选的基于结点表征计算得到图表征的方法有:
3. “sum”:
对节点表征求和;
使用模块torch_geometric.nn.glob.global_add_pool。
4. “mean”:
对节点表征求平均;
使用模块torch_geometric.nn.glob.global_mean_pool 。
5. “max”:取节点表征的最大值。
对一个batch中所有节点计算节点表征各个维度的最大值;
使用模块torch_geometric.nn.glob.global_max_pool。
6. “attention”:
基于Attention对节点表征加权求和;
使用模块 torch_geometric.nn.glob.GlobalAttention;
来自论文 “Gated Graph Sequence Neural Networks” 。
7. “set2set”:
8. 另一种基于Attention对节点表征加权求和的方法;
9. 使用模块 torch_geometric.nn.glob.Set2Set;
10. 来自论文 “Order Matters: Sequence to sequence for sets”。

基于图同构网络的节点嵌入模块
(GINNodeEmbedding Module)
此模块基于多层GINConv实现结点嵌入的计算。此处我们先忽略GINConv
的实现。此模块得到的节点属性输入为类别型向量,我们首先用
AtomEncoder 对其做嵌入得到第0 层节点表征(稍后我们再对
AtomEncoder做分析)。然后我们逐层计算节点表征,从第1层开始到第
num_layers 层,每一层节点表征的计算都以上一层的节点表征
h_list[layer] 、边edge_index 和边的属性edge_attr 为输入。需要注
意的是,GINConv的层数越多,此模块的感受野(receptive field)越
大,结点i 的表征最远能捕获到结点i 的距离为num_layers 的邻接节点的
信息。

GINConv–图同构卷积层
图同构卷积层的数学定义如下:
PyG中已经实现了此模块,我们可以通过torch_geometric.nn.GINConv
来使用PyG定义好的图同构卷积层,然而该实现不支持存在边属性的图。在
这里我们自己自定义一个支持边属性的GINConv 模块。
由于输入的边属性为类别型,因此我们需要先将类别型边属性转换为边表
征。我们定义的GINConv模块遵循“消息传递、消息聚合、消息更新”这一
过程。

背景:Weisfeiler-Lehman Test (WL Test)
图同构性测试
两个图是同构的,意思是两个图拥有一样的拓扑结构,也就是说,我们可
以通过重新标记节点从一个图中得到另外一个图。Weisfeiler-Lehman 图
的同构性测试算法,简称WL Test,是一种用于测试两个图是否同构的算
法。
WL Test 的一维形式,类似于图神经网络中的邻接节点聚合。WL Test 1)
迭代地聚合节点及其邻接节点的标签,然后2)将聚合的标签散列成唯一的
新标签,该过程形式化为下方的公示。在迭代过程中,发现两个图之间的
节点的标签不同时,就可以确定这两个图是非同构的。需要注意的是节点
标签可能的取值只能是有限个数。在上方的公示中, 表示节点 的第 次迭代的标签,第 次迭代的标签为
节点原始标签。
WL测试不能保证对所有图都有效,特别是对于具有高度对称性的图,如链
式图、完全图、环图和星图,它会判断错误。
Weisfeiler-Lehman Graph Kernels 方法提出用WL子树核衡量图之间相
似性。该方法使用WL Test不同迭代中的节点标签计数作为图的表征向量,
它具有与WL Test相同的判别能力。直观地说,在WL Test的第 次迭代中,
一个节点的标签代表了以该节点为根的高度为 的子树结构。
Weisfeiler-Leman Test 算法举例说明:给定两个图 和 ,每个节点拥
有标签(实际中,一些图没有节点标签,我们可以以节点的度作为标
签)。
Weisfeiler-Leman Test 算法通过重复执行以下给节点打标签的过程来实
现图是否同构的判断:

  1. 聚合自身与邻接节点的标签得到一串字符串,自身标签与邻接节点的标
    签中间用,分隔,邻接节点的标签按升序排序。排序的原因在于要保证
    单射性,即保证获得的结果不因邻接节点的顺序改变而改变。2. 标签散列,即标签压缩,将较长的字符串映射到一个简短的标签。
  2. 给节点重新打上标签。每重复一次以上的过程,就完成一次节点自身标签与邻接节点标签的聚
    合。
    当出现两个图相同节点标签的出现次数不一致时,即可判断两个图不相
    似。如果上述的步骤重复一定的次数后,没有发现有相同节点标签的出现
    次数不一致的情况,那么我们无法判断两个图是否同构。
    当两个节点的 层的标签一样时,表示分别以这两个节点为根节点的WL子
    树是一致的。WL子树与普通子树不同,WL子树包含重复的节点。下图展
    示了一棵以1节点为根节点高为2的WL子树。
    图相似性评估
    此方法来自于Weisfeiler-Lehman Graph Kernels。
    WL Test 算法的一点局限性是,它只能判断两个图的相似性,无法衡量图之
    间的相似性。要衡量两个图的相似性,我们用WL Subtree Kernel方法。
    该方法的思想是用WL Test算法得到节点的多层的标签,然后我们可以分别
    统计图中各类标签出现的次数,存于一个向量,这个向量可以作为图的表
    征。两个图的这样的向量的内积,即可作为这两个图的相似性的估计。图同构网络模型的构建
    能实现判断图同构性的图神经网络需要满足,只在两个节点自身标签一样
    且它们的邻接节点一样时,图神经网络将这两个节点映射到相同的表征,
    即映射是单射性的。可重复集合(Multisets)指的是元素可重复的集合,
    元素在集合中没有顺序关系。 一个节点的所有邻接节点是一个可重复集
    合,一个节点可以有重复的邻接节点,邻接节点没有顺序关系。因此GIN模
    型中生成节点表征的方法遵循WL Test算法更新节点标签的过程。
    在生成节点的表征后仍需要执行图池化(或称为图读出)操作得到图表
    征,最简单的图读出操作是做求和。由于每一层的节点表征都可能是重要
    的,因此在图同构网络中,不同层的节点表征在求和后被拼接,其数学定
    义如下,
    采用拼接而不是相加的原因在于不同层节点的表征属于不同的特征空间。
    未做严格的证明,这样得到的图的表示与WL Subtree Kernel得到的图的表
    征是等价的。

作业:
[6,[4,[1,5,6]]]
[3,[[4,[3,5,6]],[2,[1,3,5]]]]
[1,[[2,[1,3,5]],[5,[1,2,4]]]]

基于图同构网络(GIN)的图表征网络的实现相关推荐

  1. 干货!基于神经网络的多粒度图表征学习

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 图是建模实体与实体之间关系的常用数据结构.近年来,图数据挖掘引起了学术界和工业界广泛的关注,如分类.聚类等等.然而图相似度学习这一任务却 ...

  2. 论文浅尝 | ICLR2020 - 基于组合的多关系图卷积网络

    论文笔记整理:吴锐,东南大学计算机学院硕士. 来源:ICLR 2020 链接:https://arxiv.org/pdf/1911.03082.pdf 动机 目前针对于GCN的研究大多数都关注在学习无 ...

  3. 深度卷积网络基本模型,图卷积网络 图像分类

    如何利用卷积神经网络提取图像特征 . 卷积神经网络有以下几种应用可供研究:1.基于卷积网络的形状识别物体的形状是人的视觉系统分析和识别物体的基础,几何形状是物体的本质特征的表现,并具有平移.缩放和旋转 ...

  4. 显著改善分割预测,ETH开源基于情景图储存网络的视频目标分割|ECCV2020

    原文链接:https://bbs.cvmart.net/articles/3119 专注计算机视觉前沿资讯和技术干货 微信公众号:极市平台 官网:https://www.cvmart.net/ 本文主 ...

  5. 一文概览图卷积网络基本结构和最新进展(附视频代码)

    来源:机器之心 本文长度为3476字,建议阅读7分钟 本文为你介绍图卷积网络的基本结构和最新的研究进展,并用一个简单的一阶 GCN 模型进行图嵌入. 本文介绍了图卷积网络的基本结构和最新的研究进展,并 ...

  6. 直播 | WWW 2021论文解读:论解耦图卷积网络和标签传播的等价性

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  7. 理解图卷积网络的节点分类

    理解图卷积网络的节点分类 在过去的十年中,神经网络取得了巨大的成功.但是,只能使用常规或欧几里得数据来实现神经网络的早期变体,而现实世界中的许多数据都具有非欧几里得的底层图形结构.数据结构的不规则性导 ...

  8. 关系抽取:图卷积网络的学习(二)(附代码)

    关系抽取:图卷积网络的学习(二)(附代码) 目录 关系抽取:图卷积网络的学习(二)(附代码) 论文一:基于关系图的实体关系联合抽取 摘要 1.Introduction 2.Motivation 3.G ...

  9. 机器学习笔记 - 什么是图注意力网络?

    1.什么是图注意力网络? 顾名思义,图注意力网络是图神经网络和注意力层的组合.要理解图注意力网络,我们首先需要了解什么是注意力层和图神经网络.首先,我们将看一下对图神经网络和注意力层的基本理解,然后我 ...

最新文章

  1. 2022-2028年中国激光玻璃行业市场供需规模及发展趋势研究报告
  2. 净空法师认为忧郁症源于缺乏伦理教育和因果教育
  3. asp.net中显示DataGrid控件列序号的几种方法
  4. python垃圾分类图像识别算法_Python 实现一个简单的垃圾分类小游戏(已获校级二等奖)...
  5. 让女朋友能懂的网络技术篇之动态代理
  6. 漫画 | 程序员离职事件始末
  7. Android中的onActivityResult和setResult方法的使用
  8. 有两个集合,两个集合都是10万个数据(已排序),判断B是不是A的子集,算法时间复杂度为Q(N)...
  9. 锦官城思享会-成都创业与商业CXO闭门会圆满举办
  10. leetcode:Excel Sheet Column Number
  11. ES6 javascript 实用开发技巧 1
  12. /usr/bin/ld: 找不到 -lglut
  13. django数据库设置为MySQL
  14. elementUI table 绑定数据
  15. 20200615每日一句
  16. 大数据学习菜鸟的Hadoop快速入门基础教程汇总详细解答
  17. 全网通小区专家全自动做
  18. 硬链接(hard link)与软链接(soft link/symbolic link)
  19. 很多人说单片机很简单。但本专业学生都认为单片机是最难学的课程。为什么学起来都这么吃力呢?
  20. 疫情下的校园生活是咋样的?

热门文章

  1. 背包算法(Knapsack Algorithm)
  2. Docker 实战总结(非常全面),赶紧收藏!
  3. 新买的笔记本计算机内存不足,笔记本电脑内存不足怎么办 解决方法【图文教程】...
  4. POI和 EasyExcel对Excel的简单操作
  5. 教培机构借助「视频+直播+活动」快速拓客
  6. android 自定义progressdialog,自定义ProgressDialog
  7. Android中设置ProgressDialog背景透明
  8. 注销app密码服务器时出错,苹果7注销id显示验证错误连接服务器出现问题是怎么回事...
  9. 一个简单的问题:单元测试中让线程sleep的方法
  10. Java8中Stream的用法