【图卷积网络】03-空域卷积介绍 (一)

news2024/11/28 18:46:40

注:本文为3.1-3.2 空域卷积视频笔记,仅供个人学习使用


1、谱域图卷积

1.1 回顾

上篇博客【图卷积神经网络】02-谱域图卷积介绍讲到了三个经典的谱域图卷积:

  • SCNN用可学习的对角矩阵来代替谱域的卷积核。
    在这里插入图片描述

  • ChebNet采用Chebyshev多项式代替谱域的卷积核
    在这里插入图片描述

  • GCN可以视为ChebNet的进一步简化。仅考虑1阶切比雪夫多项式,且每个卷积核仅只有一个参数
    在这里插入图片描述
    它们三个的共同特点是:均基于卷积定理和图傅里叶变换。


1.2 谱域图卷积的缺陷

  1. 谱域图卷积不适用于有向图
    • 图傅里叶变换的应用是有限制的,仅限于在无向图。
    • 谱域图卷积的第一步是要将空域信号转换到谱域,当图傅里叶变换无法使用时,谱域图卷积也就无法进行下去。
    • 在大量的实际场景中,Wij ≠ Wji
  2. 谱域图卷积假定固定的图结构
    在这里插入图片描述
    • 模型训练期间,图结构不能变化(不能改变节点之间的权重,不能增删节点)。
    • 在某些场景下,图结构可能会变化(如社交网络数据、交通数据)。
  3. 模型复杂度问题
    • SCNN需要进行拉普拉斯矩阵的谱分解,计算耗时,复杂度为 。
    • ChebNet和GCN不需要进行谱分解。但是其可学习的参数过于简化。降低模型复杂度的同时也限制了模型的性能。

能否绕开图谱理论,重新定义图上的卷积?本文介绍四种空域图卷积模型,每一个模型可以视为对于上述问题的四个不同的回

  1. GNN
  2. GraphSAGE
  3. GAT
  4. PGC
    在这里插入图片描述

2、四个空域卷积模型


2.1 GNN

2.1.1 问题:什么是卷积?

论文:GNN Hechtlinger Y, Chakravarti P, Qin J, et al. A Generalization of Convolutional Neural Networks to Graph-Structured Data.[J]. arXiv: Machine Learning, 2017

回答1:== 卷积即固定数量邻域节点排序后,与相同数量的卷积核参数相乘求和==。传统卷积的有着固定的邻域大小(如3X3的卷积核即为八邻域),同时有着固定的顺序(一般为左上角到右下角)。
在这里插入图片描述

2.1.2 核心思想

卷积的操作可以分为两步

  1. 构建邻域。
    • 找到固定数量的邻居节点。
    • 对找到的邻居节点进行排序。
  2. 对邻域的点与卷积核参数内积

对于图结构数据而言,构建邻域存在一些困难:

  1. 不存在固定八邻域结构。每个节点的邻域大小是变化的。
  2. 同一邻域内的节点不存在顺序
    在这里插入图片描述

2.1.3 解决思路

  1. 使用==随机游走(random walk)==的方法,根据被选中的概率期望大小选择固定数量的邻居节点。
  2. 然后根据节点被选择的概率期望来对邻域进行排序。

符号标记

  1. 为图上的随机游走转移矩阵,其中 Pij 表示由 i 节点到 j 节点的转移概率。

  2. 相似度矩阵(similarity matrix)为 S。文中的相似度矩阵可以理解为邻接矩阵W。

  3. D 为度矩阵, 在这里插入图片描述

2.1.4 具体步骤

  • GNN假设存在图转移矩阵 。假如图结构是已知的,那么 和 即为已知。随机游走概率转移矩阵定义如下:P = D-1S
  • 使用归一化的邻接矩阵来作为转移矩阵!
  • 多步的转移期望定义为:在这里插入图片描述在这里插入图片描述
  • 根据期望大小来选择邻域,Πi(k)表示节点的序号。该节点为(k步内)由i节点出发的访问期望数第c大的节点。那么有:在这里插入图片描述
  • 执行1D卷积(内积)
    在这里插入图片描述

2.1.5 CNN卷积操作示例

在这里插入图片描述
Pn 这个矩阵的元素 Pnij 的意义是:从 i 节点出发走 n 步 到 j 节点的概率。实际上是对相似度矩阵S(邻接矩阵D)做了归一化,使得每一行加起来是1,可以表示概率。
在这里插入图片描述
计算期望Q,假设最大走3步,即k=3.在这里插入图片描述
根据Q,选择p个节点作为邻域。假设p=3.
在这里插入图片描述
执行1D卷积.对于5号节点而言,其卷积操作如下:在这里插入图片描述
其中 xc5 为第c层 的5号节点上的信号。注意 x5 ,x2 ,x1 的顺序不能变,是根据期望大小排列的。


2.1.6 实验结果

论文:GNN Hechtlinger Y, Chakravarti P, Qin J, et al. A Generalization of Convolutional Neural Networks to Graph-Structured Data.[J]. arXiv: Machine Learning, 2017
在这里插入图片描述
分子活性检测和在MNIST数据集上的实验。
这个方法优于传统的全连接层( Fully connectedNN )和随机森林( Random Forest )。


对GNN的再思考:本质上,GNN的做法是强制将一个图结构数据变化为了一个类似规则数据。从而可以被1D卷积所处理。
在这里插入图片描述


2.2 GraphSAGE

2.2.1 问题:什么是卷积?

论文:Inductive representation learning on large graphs, in Proc. of NIPS, 2017

回答2: 卷积=采样+信息的聚合!

2.2.2 核心思想

  • 将卷积分为采样和聚合两步。
  • SAGE 的简写为: Sample and AggreGatE
  • 聚合函数必须与输入顺序无关。 即作者认为邻域的节点不需要进行排序。在这里插入图片描述

2.2.3 实现过程

  1. 通过采样,得到邻域节点。
  2. 使用聚合函数来聚合邻居节点的信息,获得目标节点的embedding;
  3. 利用节点上聚合得到的信息,来预测节点/图的label;在这里插入图片描述
    卷积=采样+信息的聚合!
  • 采样
    • GraphSAGE采用均匀采用法(Uniform Sampling)来采样固定的邻域节点。即对于某一节点,在其一阶相连的节点上均匀采样以构建一个固定节点数量的邻域。对同一节结点在不同批次迭代中采样的结点可能是不同的。
  • 聚合
    • Mean aggregator
      在这里插入图片描述

    • LSTM(长短期记忆递归神经网络,是一种特殊的递归神经网络) aggregator。使用LSTM来encode邻居的特征。这里忽略掉邻居之间的顺序,即随机打乱,输入到LSTM中.

  • Pooling aggregator.在这里插入图片描述
  • 前向计算流程在这里插入图片描述

与GNN的不同之处

  • 在GNN(以及传统CNN)中需要确定邻域节点的顺序。但是,GraphSAGE的作者认为图卷积邻域的节点不需要进行排序
  • 在GNN中邻域里的每个节点拥有不同的卷积核参数。在GraphSAGE中邻域里的所有节点共享同样的卷积核参数
  • 在邻域选择方法上,GNN通过随机游走的概率大小来构建邻域,GraphSAGE通过均匀采样构建邻域。

2.2.4 GraphSAGE卷积操作示例

在这里插入图片描述
对于5号节点, 有1号、2号、4号三个一阶相邻的节点。这三个节点是候选节点,从这三个节点中采样,来构建5号节点的邻域。

  • 假设取均值聚合函数。假设现在正处于第k层。
  • 假设需要采样2个节点(有放回的采样)。对5号节点的邻域的的某一次采样的结果为:1号节点和4号节点。
  • 在第一步,聚合邻域节点的结果为:在这里插入图片描述
  • 在第二步,结合中心节点信息的结果为:在这里插入图片描述
    hk5即第k层的输出。

在另一次迭代采样时,对5号节点的邻域的的某一次采样的结果为:1号节点和1号节点(由于是有放回的采样,这是有可能的)。

  • 在第一步,聚合邻域节点的结果为:在这里插入图片描述
  • 第二步是一样的
    在这里插入图片描述
    hk5即第k层的输出。

2.2.5 实验结果

论文:Inductive representation learning on large graphs, in Proc. of NIPS, 2017
在这里插入图片描述

  • 效果上 GraphSAGE优于DeepWalk等传统方法。
  • 计算时间上, GraphSAGE 中 LSTM 训练速度最慢,但相比DeepWalk, GraphSAGE 预测时间减少 100-500 倍。
  • 此外对GraphSAGE而言,(图 B 中表示)随着邻居采样数量递增, F1 增大,计算时间也变大。
  • “unsup F1”和“sup F1”分别指在无监督学习和监督学习下的结果。

2.3 GAT

2.3.1 问题:什么是卷积?

论文:GRAPH ATTENTION NETWORKS ICLR 2018

回答3: 卷积可定义为利用注意力机制(attention)对邻域节点有区别的聚合。

什么是attention?

注意力机制是一种能让模型对重要信息重点关注并充分学习吸收的技术。它模仿了人类观察物品的方式。核心逻辑就是「从关注全部到关注重点」
在这里插入图片描述

2.3.2 核心思想

  • GAT即 GRAPH ATTENTION NETWORKS,其核心思想为将attention引入到图卷积模型中。
  • 作者认为邻域中所有的节点共享相同卷积核参数会限制模型的能力。因为邻域内的每一个节点和中心节点的关联度都是不同的,在卷积聚合邻域节点信息时需要对邻域中的不同的节点区别对待。
  • 利用attention机制来建模邻域节点与中心节点的关联度。

2.3.3 具体步骤

  1. 使用注意力机制计算节点之间的关联度
    • 计算关联度
      在这里插入图片描述

    • softmax归一化。为了使不同节点之间的注意力系数易于比较,作者使用softmax函数对每个节点的注意力系数进行归一化。
      在这里插入图片描述

  2. 利用注意力系数对邻域节点进行有区别的信息聚合,完成图卷积操作。在这里插入图片描述

2.3.4 GAT卷积操作示例

在这里插入图片描述

  1. 对于5号节点, 有1号、2号、4号三个一阶相邻的节点。这三个节点是GAT的邻域。
  2. 使用注意力机制计算节点之间的关联度。比如5号节点和1号节点的关联度如下:在这里插入图片描述
  3. softmax归一化
    在这里插入图片描述
  4. 利用注意力系数对邻域节点进行有区别的信息聚合,完成图卷积操作。在这里插入图片描述
    注意,4个邻域节点的W是通用的。

2.3.5 实验结果

论文:GRAPH ATTENTION NETWORKS ICLR 2018。
在这里插入图片描述

2.3.6 与其他图卷积的比较

  1. 在邻域节点构建上,不同于GNN(随机游走)、GraphSAGE(采样),GAT直接选用一阶相邻节点作为邻域节点(和GCN类似)。
  2. 在节点排序上,GAT中的邻域的所有节点无需排序并且共享卷积核参数(和GraphSAGE类似)。
  3. 由于GAT引入了Attention机制,可以构建相邻节点的关系,是对邻域节点的有区别的聚合。若将 αij 和 W 结合起来看做一个系数,实际上GAT对邻域的每个节点隐式地(implicitly)分配了不同的卷积核参数。

2.3.7 对GAT的再思考

  1. GAT可以认为是对局部图结构的一种学习。现有的图卷积方法常常更关注节点特征(feature) 而忽视了图结构 (structure)。
    在这里插入图片描述
  2. Attention机制可认为是一个中带有可学习参数的可学习函数。利用Attention机制,GAT通过构建一个可学习的函数来得到相邻节点之间的关系,即局部图结构。

2.4 PGC

2.4.1 问题:什么是卷积?

论文:Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action. AAAI. 2018.

回答4: 卷积可认为是特定的取样函数(sample function)与特定的权重函数(weight function)相乘后求和。

从经典卷积出发,K x K 的卷积核可以写成下式:
在这里插入图片描述
K是卷积核大小(常见为3) 。P ( )为一个取样函数. 即在邻域内依次取出节点,来参与卷积计算。w()为权重函数,对取出来的来的节点分配卷积核参数。 这整个式子实际上就是节点特征与卷积核参数 的内积。

2.4.2 核心思想

将卷积从规则数据扩展到图结构数据的过程中,选择合适的取样函数和权重函数
在这里插入图片描述

取样函数

  • 取样函数即在邻域内依次取出节点。重点在于如何构建节点的邻域,也就是说取样函数在哪里取样。
  • 在图结构数据上,PGC可以定义取样函数在D阶近邻的节点上 。即 在这里插入图片描述
    其中 d(vj, vi) 表示从i节点到j节点的最短距离。
  • 在实验中取D=1,且在1阶邻域中挨个取样。但是也可以设置成其他的邻域。

权重函数

  • 首先将邻域内的点分为K个不同的类。
    在这里插入图片描述
    由于分类操作,因此本方法被称之为Partition Graph Convolution (PGC)。
  • 每一类共享一个卷积核参数。不同类之间卷积核参数不同。
    在这里插入图片描述

权重函数的分类策略

  • Uni-labeling (图b)。邻域里的所有节点一视同仁。只有一个类别。所以全部划分为一个颜色。
  • Distance partitioning(图c)。根据阶数不同来确定不同类别。零阶就是自己,是一个类,一阶是另一个类,全部是蓝色。
  • Spatial configuration partitioning (图d)、根据与人体骨架中心的距离来分类。有三个类别。距中心距离小于中心结点的为一个类(蓝色),大于的是一类(黄色)。
    在这里插入图片描述

PGC定义在图上的卷积公式最终如下:在这里插入图片描述
Zi (vj) 的意义为(在i节点的邻域中的)j 节点所处类的节点数量。归一化系数是为了平衡邻域中每一类节点的贡献。

2.4.3 PGC卷积操作示例

在这里插入图片描述

  • 对于5号节点, 有1号、2号、4号三个一阶相邻的节点。这三个节点是PGC的邻域。取样函数依
    次从1号、2号 、4号、5号节点中取样。顺序无所谓,因为每一个节点对应的参数是通过权重函
    数指派的。

  • 假设权重函数分类时,将5号节点分为 第1类,1号和2号节点分为第二类,4号节点是第三类。 在这里插入图片描述

  • 假设权重函数分类时,将四个节点分为一类。在这里插入图片描述

  • 假设权重函数分类时,四个节点分为不同的四类,每一个类别一个节点。在这里插入图片描述

2.4.4 实验结果

在这里插入图片描述

2.4.5 与其他图卷积的关系

  • 相比于GraphSAGE使用均值采样确定邻域,PGC将邻域构建定义为一个取样函数,更加有泛化性。
  • GNN需要确定邻域顺序,GraphSAGE邻域的点不需要排序。 PGC采用了更加泛化的做法—定义权重函数。GNN/GraphSAGE的对邻域节点做法可以看做PGC的两个极端—各不相同/一视同仁。

3、小结

3.1 空域卷积本质

不同的空域图卷积方法本质上对应着对卷积的不同理解。
在这里插入图片描述

3.2 空域图卷积的特点

  • 绕开了图谱理论,无需将信号在空域和谱域之间转换。
  • 直接在空域上定义卷积操作,更加直观。
  • 没有图谱理论的束缚,定义更加灵活,方法更加多样。
  • 和谱域图卷积相比,缺少数学理论支撑 。

3.3 四种空域图卷积对比

卷积方法对卷积定义邻域节点选择方法邻域节点是否需要排序同一邻域内,卷积核参数是否共享
GNN固定数量邻域节点排序后,与相同数量的卷积核参数相乘求和随机游走需要排序不共享
GraphSAGE采样+信息的聚合均匀采样不需要排序共享
GAT利用注意力机制对邻域节点有区别的聚合直接使用一阶近邻节点不需要排序共享。但通过注意力机制修正后每个节点实际上分配到了不同的卷积核参数
PGC特定的取样函数与特定的权重函数相乘后求和由特定的取样函数决定由特定的权重函数决定由特定的权重函数决定

3.4 对图结构的要求

  • GNN、GraphSAGE和GAT不要求固定的图结构,即训练集和测试集的图结构可以不相同。
  • PGC文中没有讨论这个问题。他们的实验也均作用于固定结构的图数据。
  • 但是作为一个泛化性较强的框架,上述三种卷积都可看做为PGC的特例,可以认为PGC并不要求图结构必须固定。
  • 本质上是由于空域图卷积没有使用图傅里叶变换,不需要考虑拉普拉斯矩阵L变化后基函数(拉普拉斯矩阵的特征向量U)改变的问题。

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

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

相关文章

webpack使用Ammo.js - 在react中使用Ammo.js

真实麻烦啊[我的项目仓库 Next.js项目 仅供参考](https://gitee.com/honbingitee/three-template-next.js/tree/feature%2Fphysics/)本文展示使用ammo.wasm.js 结合ammo.wasm.wasm的wasm版本使用方法1. 配置webpack2. 导出Ammo 修改ammo.wasm.js文件3. 删除语句 通过查找 this.…

【Flink】详解Flink的八种分区

简介 Flink是一个流处理框架,一个Flink-Job由多个Task/算子构成,逻辑层面构成一个链条,同时Flink支持并行操作,每一个并行度可以理解为一个数据管道称之为SubTask。我们画图来看一下: 数据会在多个算子的SubTask之间相…

【奇妙的数据结构世界】用图像和代码对链表的使用进行透彻学习 | C++

第九章 链表 目录 第九章 链表 ●前言 ●一、链表是什么? 1.简要介绍 2.具体情况 ●二、链表操作的关键代码段 1.类型定义 2.常用操作 ●总结 前言 简单来说,数据结构是一种辅助程序设计并且进行优化的方法论,它不仅讨论数据的存储与处…

打工人必知必会(一)——规章制度保险劳动合同变更

目录 参考 1、规章制度的生效要件 2、工资的发放形式 3、社会保险的基本规定 4、基本养老保险 5、医疗保险、失业保险、工伤保险、生育保险 6、劳动合同的变更 第一节 协商变更劳动合同 第二节 单方变更劳动合同 参考 《HR全程法律顾问:企业人力资源管理高…

5-6中央处理器-多处理器系统硬件多线程

文章目录一.多处理器系统(一)计算机体系结构分类1.单指令单数据流SISD2.单指令多数据流SIMD3.多指令单数据流MISD4.多指令多数据流MIMD(1)(共享内存)多处理器系统/多核处理器(2)多计算机系统(二…

逆水寒魔兽老兵服副本攻略及代码分析(英雄武林风云录,后续更新舞阳城、扬州、清明等副本攻略)

文章目录一、武林风云录1)老一:陈斩槐(只有四个机制,dps压力不大,留爆发打影子就行)(1)点名红色扇形区域(2)点名红色长条,注意最后还有一段大劈&a…

MongoDB入门(特点,使用场景,命令行操作,SpringData-MongoDB)

今天我们将通过这一篇博客来了解MongoDB的体系结构,命令行操作和在JAVA 当中使用SpringData-MongoDB 来 操作MongoDB。 如果没有安装的小伙伴 可以看一下 这篇文章 (59条消息) 开源的文档型数据库–MongoDB(安装)_一切总会归于平淡的博客-CS…

LeetCode[128]最长连续序列

难度:中等题目:给定一个未排序的整数数组 nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n)的算法解决此问题。示例 1:输入:nums [100,4,2…

java中new的含义如何理解?

在Java中,new关键字被使用来创建一个新的对象,可以理解为创建的意思。使用关键字new来创建一个对象也叫类的实例化,使用new创建对象时,会调用构造方法初始化对象声明对象Cat cat 在栈内存中实例化对象 new Cat(参数); 在堆内存中每…

C++:类的static成员,友元和构造函数初始化列表

目录 一.类的构造函数的初始化列表 1.类的构造函数初始化列表的引入和介绍 2.初始化列表用于类的类对象成员的拷贝构造函数的调用 3.初始化列表的使用细则 4.使用初始化列表的一个注意事项 二.explicit关键字 三.C类的static成员 1.类中static修饰的成员变量 2.类中st…

Lesson 4.2 逻辑回归参数估计:极大似然估计、相对熵与交叉熵损失函数

文章目录一、逻辑回归参数估计基本思路1. 构建损失函数2. 损失函数求解二、利用极大似然估计进行参数估计三、熵、相对熵与交叉熵1. 熵(entropy)的基本概念与计算公式2. 熵的基本性质3. 相对熵(relative entropy)与交叉熵&#xf…

LeetCode[947]移除最多的同行或同列石头

难度:中等题目:n块石头放置在二维平面中的一些整数坐标点上。每个坐标点上最多只能有一块石头。如果一块石头的 同行或者同列 上有其他石头存在,那么就可以移除这块石头。给你一个长度为 n的数组 stones,其中 stones[i] [xi, yi]…

MATLAB算法实战应用案例精讲-【人工智能】Grover量子搜索算法(补充篇)

前言 因为量子计算的并行性, 搜索问题, 比如说数据库搜索, 最短路径问题, 加密问题, 图形着色问题等, 都被视为可以做到量子加速. Grover 算法,有时也称为量子搜索算法(quantum search algorithm),指一种在量子计算机上运行的非结构化搜索算法,是量子计算的典型算法…

LeetCode[765]情侣牵手

难度:困难题目:n对情侣坐在连续排列的 2n个座位上,想要牵到对方的手。人和座位由一个整数数组 row表示,其中 row[i]是坐在第 i 个座位上的人的 ID。情侣们按顺序编号,第一对是 (0, 1),第二对是 (2, 3)&…

#A. Balanced Lineup排队(rmq模板题)

题目思路建议先看看详解rmq问题很明显这道题意是跟你一段数列,并给出多次询问,询问区间内最大值和最小值的差。如果去暴力枚举显然会超时,所以要用st算法来解决。我们要建立两个RMQ预处理内容,分别处理最大值和最小值。建一个mx[i][j]代表从i开始,长度为…

精品图表Crack:TeeChart ActiveX version 2023.1

TeeChart ActiveX version 2023 数据可视化专家,Visual Studio.Net、Visual Basic、Visual Studio 6和 IIS / ASP的图表组件 概述 TeeChart Pro ActiveX 图表组件库提供数百种 2D 和 3D 图形样式、56 种数学和统计函数供您选择,以及无限数量的轴和 14 个工具箱组件…

DFS(五)最小轮盘锁

752. 打开转盘锁 你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 。每个拨轮可以自由旋转:例如把 9 变为 0,0 变为 9 。每次旋转都只能旋转一个拨轮的一位数字。 锁的初始数字为 0000 ,一…

【2023.01.26】定时执行专家 V6.6 兔年春节版 - 更新日志

目录 ◆ 最新版下载链接 ◆ 软件更新日志 – TimingExecutor Full Change Log ▼ 2023-01-23 V6.6 ▼ 2023-01-20 V6.5 ▼ 2022-12-25 V6.4 ▼ 2022-11-15 V6.3 ▼ 2022-10-01 V6.2 ▼ 2022-07-30 V6.1(Build 769.30072022) ▼ 2022-0…

Linux-Ubuntu入门到精通之远程操作指令

1️⃣shutdown 2️⃣查看或配置网卡信息 3️⃣网卡和IP地址 4️⃣ifconfig 5️⃣ping 6️⃣远程登录和复制文件 7️⃣ ssh 基础(重点) 8️⃣域名 和 端口号 9️⃣SSH 客户端的简单使用 1️⃣0️⃣Windows 下 SSH 客户端的安装 Putty :http:/…

数据结构 | 海量数据处理 | 位图和哈希切分的常见应用 | 布隆过滤器的使用场景

文章目录位图应用question 1question 2question 3位图的作用哈希切分布隆过滤器作为一种数据结构,哈希桶有着不同于其他数据结构的思想——直接映射,这使得在哈希结构中查找数据的效率达到了最快的O(1),比起搜索树的比较数据大小,…