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

news2024/10/7 8:31:33

注:本文为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/179429.html

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

相关文章

TIA博途中计算多个数据的算术平均值的具体方法示例

TIA博途中计算多个数据的算术平均值的具体方法示例 我们这里采用官方提供的Floating Average功能块来实现多个数据的算术平均值的计算。 此功能块计算最新输入的100个数值的均值(浮动平均值)。采集的数据队列达到100个之后,队列每入栈一个新数值,将去掉一个队列里最早进来的…

高通平台开发系列讲解(GPS篇)gpsONE 系统架构

文章目录 一、系统架构图二、gpsONE系统组成三、gpsONE交互流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢高通的定位系统模块,名称叫gpsONE。 一、系统架构图 二、gpsONE系统组成 GPS系统架构可以分为六个部分: APP层Framework Client端(LocationManager API…

网站被挂马植入webshell导致网站瘫痪案例

一、问题现象 下午两点,刚刚睡醒,就接到了客户打来的电话,说他们的网站挂(这个用词很不准确,但是感觉到问题的严重性)了,询问是怎么发生的,之前做了什么操作,客户的回答…

Bash 脚本实例:获取符号链接的目标位置

我们都熟悉 Linux 中的符号链接,通常称为符号链接或软链接,符号链接是指向任何文件系统中的另一个文件或目录的特定文件。本文将介绍 Linux 中符号链接的基础知识,并创建一个简单的 bash 脚本来获取符号链接的目标位置。符号链接的类型主要有…

【栈和队列】java实现栈和队列以及集合中的栈和队列

前言: 大家好,我是良辰丫🏍🏍🏍,今天我带领大家去学习栈和队列的相关知识,💞💞💞栈和队列在数据结构中是相对简单的,但是应用还是蛮多的&#xff…

分享142个ASP源码,总有一款适合您

ASP源码 分享142个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 142个ASP源码下载链接:https://pan.baidu.com/s/1TxdTrCJpO08rKLCUzIh0hQ?pwdyhka 提取码&#x…

微信小程序+云函数+腾讯云对话机器人API(ChatBot)

文章目录 前言 一、小程序云开发是什么? 二、步骤 1. 在app.js中绑定好云环境id,并且选好当前环境以及选好云文件夹 2. 去到腾讯云API Explorer中选好Region地区和Query这个必填参数,然后进行代码生成 3. 在上面的API Explorer网站点击前往获…

Python局部函数及用法

Python 函数内部可以定义变量,这样就产生了局部变量,有读者可能会问,Python 函数内部能定义函数吗?答案是肯定的。Python 支持在函数内部定义函数,此类函数又称为局部函数。那么,局部函数有哪些特征&#x…

Redis实现好友关注 | 黑马点评

目录 一、关注和取关 二、共同关注 三、关注推送(feed流) 1、Timeline模式的方案 拉模式 推模式 推拉结合模式 总结 2、推模式实现关注推送 需求 feed流分页问题 feed流的滚动分页 实现推送到粉丝的收件箱 …

(学习笔记)opencv和dlib的基础操作

来源:投稿 作者:LSC 编辑:学姐 本篇文章将讲述作者对opencv和dlib基础操作的学习笔记。 首先来看opencv的11种基础操作 (1)imread 读取图片 (2)resize 图片缩放 (3)cvtColor 灰度化 (4)threshold 阈值化 (5)bitwise_not 图像取反 (6)a…

JavaEE-初识网络

目录一、局域网二、广域网三、网络通信基础3.1 IP地址3.2 端口号3.3 协议四、协议分层五、封装和分用一、局域网 局域网,网络种类,覆盖范围一般是方圆几千米之内,其具备的安装便捷、成本节约、扩展方便等特点使其在各类办公室内运用广泛。局…

有序列表标签与无序列表标签

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> </head> <body bgcolor"bisque"> <!-- 在ol有序列表标签和ul无序列表标签…

【初识数据库】进入数据库的大门+数据库基本操作

前言&#xff1a; 大家好&#xff0c;我是良辰丫&#x1f353;&#x1f353;&#x1f353;&#xff0c;这个专栏我将带领大家去探索数据库的汪洋大海&#xff0c;我主要使用的数据库软件是MySQL&#xff0c;数据库软件大同小异&#xff0c;嘿嘿嘿&#xff0c;废话不多说&#x…

分布式事务Seata学习笔记

目录 1.Seata 是什么 2. Seata快速开始 2.1 Seata Server&#xff08;TC&#xff09;环境搭建 db存储模式Nacos(注册&配置中心)部署 3. Seata Client快速开始 4.demo源码:springcloudAlibaba: Alibaba微服务学习demo 1.Seata 是什么 Seata 是一款开源的分布式事务…

神级程序员上网都在看什么?

同样都是上网&#xff0c;为什么大神总能在最短时间内汲取最有效的信息呢&#xff1f; 不怕大神不上网&#xff0c;就怕大神上网比你精&#xff01;其实&#xff0c;你与大神的区别都藏在细节中。 这些神级网站都是我偷看他们电脑抄来的&#xff08;误&#xff09;&#xff0c;…

超链接(还称热连接)标签

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>超链接(还称热连接)</title> </head> <body> <!-- 超链接的特点&#xff1a; 1、有…

Python内置函数

5.6 Python内置函数 Python自带的所有内置函数如下&#xff1a; Python函数 以上为Python3.10中所有的内置函数&#xff0c;其中绝大部分在前面的学习当中都已经接触过了。这里在补充介绍下没有提到或学习到的函数。 5.6.1 callable(object) 描述 如果参数 object 是可调…

Java面试题,mysql相关基础问题(全是自己的总结,如有不对,敬请斧正)

mysql相关基础问题一、mysql中int类型单引号问题二、静态SQL与动态SQL1. 静态SQL2. 动态SQL3. 动态SQL与静态SQL的区别与联系一、mysql中int类型单引号问题 今天写mysql的时候发现了一个问题&#xff0c;在查询的时候不小心把int类型的id加上引号查询了&#xff0c;但是也能查…

Day08 C++STL入门基础知识五——vector容器(下) 插入删除-数据存取-交换容器-预留空间【全面深度剖析+例题代码展示】

More haste, less speed. 欲速则不达 文章目录1. 承接上文2. 插入操作2.1 函数原型(总括)2.2 尾插尾删2.2.1 操作2.2.2 代码展示2.2.3 测试结果2.3 迭代器插入2.3.1 操作2.3.2 代码展示2.3.3 测试结果2.4 think小思考2.4.1 小疑问2.4.2 思路2.4.3 代码展示2.4.4 测试结果3. 删除…

数据结构---堆

堆 定义 基本操作 建堆 堆排序 优先队列 一、堆的定义&#xff1a; 堆必须是一个完全二叉树 还得满足堆序性 什么是完全二叉树呢&#xff1f; 完全二叉树只允许最后一行不为满 且最后一行必须从左到右排序 最后一行元素之间不可有间隔&#xff0c;中间不可有空缺 如下几棵树…