【Graph Neural Network 图神经网络】3.Spatial-based Graph Convolutional Networks 基于空间的图卷积网络
前言
类似于图像上传统的卷积运算,基于空间的方法根据节点的空间关系定义图卷积。图像可以看作是一种特殊的图形式,每个像素代表一个节点。每个像素都直接连接到它附近的像素,如下图左所示。对3*3的区域应用一个过滤器,通过对每个通道的中心节点及其相邻节点的像素值进行加权平均。类似的,基于空间的图卷积将中心节点的表示与其邻居的表示进行卷积,得到中心节点的更新表示,如下图右。从另一个角度来看,基于空间的ConvGNNs与RecGNNs共享相同的信息传播/消息传递思想。空间图卷积运算实质上是沿着边传播节点信息。
本篇主要涉及三个有代表性的空间图卷积工作:PATCHY-SAN、graphSAGE、GAT。
PATCHY-SAN (Learning Convolutional Neural Networks for Graphs, ICML2016)
**该工作提出了一个框架PATCHY-SAN (Select-Assemble-Normalize),可以从任意图中学习卷积神经网络。**这些图可能是无向的、有向的,可以同时有离散和连续的节点和边属性。
0. From CNN
该方法基于卷积神经网络(CNNs)的概念,并将其扩展到任意图。下图说明了图像的CNN局部连接的接受域(receptive field)。 图像可以表示为正方形网格图,其节点表示像素。 现在,可以将CNN视为遍历节点序列(节点1-4)并为每个节点生成固定大小的邻域图(3x3网格)。 邻域图用作从像素节点读取特征值的接受域。但是,对于许多图,缺少特定于问题的排序(空间,时间或其他),并且图的节点也不对应。 在这些情况下,必须解决两个问题:
- 确定要为其创建的邻域图的节点序列
- 计算邻域图的范数,即从图表示到向量空间表示的唯一映射。
该工作所提出的方法称为PATCHY-SAN,解决了任意图的这两个问题。对于每个输入图,它首先确定创建邻域图的节点(及其顺序)。 对于每个节点,提取并归一化由k个节点组成的邻域,也就是说,它以固定的线性顺序唯一地映射到空间。最后,归一化的邻域图作为接收域与CNN组件相结合。
上述文字描述的就是该工作方法的主要流程,按步骤划分为节点序列选取(node sequence selection)、邻域集合(neighborhood assembly)、邻域归一化(nneighborhood normalization),最后送入**卷积结构(convolutional architecture)**进行特征提取。下图描述了前三步的过程,下文将按照每一步的算法逐一介绍。
1. Node Sequence Selection
(节点序列选取:在每个输入图中选取www个将为其创建接收域的节点。)其中www是接受域的个数,也是卷积操作的个数,在示例中w=6w=6w=6。
在算法1中:
- 将输入图的节点按照graph labeling算法给定的顺序进行排序。
- 使用给定的步幅sss遍历所得的节点序列,选取出前www个被访问的节点。
- 对于每个访问的节点,执行算法3构造一个接收域,直到创建了www个接收域。如果节点数少于www,则该算法将创建全零接受域以用于填充。
2. Neighborhood Assembly
(邻域集合:为www中的每个节点构建数量为kkk的邻域区域。)
对于节点序列选取中的第3步——为标识的每个节点构造一个接受域, 算法3首先调用算法2来为节点组合一个本地邻域,邻域的节点是接受域的候选。
算法2列出了邻域集合步骤:对于www中每个节点vvv进行广度优先搜索BFS,探索节点vvv的一阶邻域,并将这些节点添加到集合N中。如果收集到的节点数少于kkk,则继续探索二阶邻域,以此类推直到N中有至少kkk个节点,或者直到没有更多的邻域可供添加。注意,此时kkk和NNN的大小可能不同。在示例中k=4k=4k=4,即保留每个节点的4个邻域节点作为邻域区域。
3. Neighborhood Normalization
(邻域归一化:从邻域区域中选择接受域的节点,并确定接受域中节点的顺序。)
节点的接受域是通过规范化上一步中的邻域区域而构建的,归一化在邻域图的节点上施加了一个顺序,以便从无序图空间映射到具有线性顺序的向量空间。基本的思想是利用图标记程序,对于两个不同的图, 来自这两个图的子结构g1g1g1和g2g2g2,它们在各自的图中有相似的结构,那么他们的标签应该相似。为了使这个直观形式化,定义了最优图正规化问题,其目的是寻找相对于给定图集的最优标记。
在具体的算法4中:根据到节点vvv的距离来计算每个邻域节点的排序,而为了使每个节点的标签唯一,采用NAUTY(McKay&Piperno, 2014)算法分别对www个邻域区域进行标记。若节点数大于kkk则按排序截取前kkk个,不足kkk则用虚拟节点(dummy nodes)补充。
4. Convolutional Architecture
PATCHY-SAN能够处理节点和边属性(离散和连续)。设节点特征的个数为ava_vav,边特征的个数为aea_eae。 对于每个输入图G,它将节点和边的归一化接受域分别表达为张量(w,k,av)(w, k, a_v)(w,k,av)和张量(w,k,k,ae)(w, k, k, a_e)(w,k,k,ae),ava_vav和aea_eae相当于输入通道的个数(代表不同特征)。 该架构的其余部分和传统CNN相同,可以任意选择。
文中举例的一个完整网络结构如下,共有两层卷积+一层池化:
总结
该工作基于图结构实现了卷及操作,原理是通过节点选取、邻域构造和归一化将图结构逐步转化为接受域(receptive field)序列,然后采用CNN进行特征提取。
GraphSAGE (Inductive Representation Learning on Large Graphs, NIPS2017)
ICLR2017的论文——Semi-Supervised Classification with Graph Convolutional Networks从谱域的角度定义了GCN,也成为图卷积网络入门必读的paper。
但是,其所代表的GCN有一个关键的局限——直推式学习(Transductive Learning):要求在一个确定的图中学习顶点的嵌入,即把所有节点都参与到训练,而无法直接泛化到在训练过程没有出现过的节点。如果要适应新的节点则需要重新训练所有节点,非常麻烦。
GraphSAGE则提出一种新思路:我们不必一定要得到每个节点的一个固定的表示,我们可以直接学习一种节点的表示方法,不管图怎么改变,都可以很容易地得到新的表示。这里运用到的思想类似元学习(Meta Learning),“授人以鱼不如授人以渔”。
GraphSAGE是一种能够利用节点的属性信息高效产生未知节点嵌入的一种归纳式学习(Inductive Learning)的框架,其核心思想是通过学习一个对邻域节点进行聚合表示的函数来生成目标节点的嵌入。
1. Embedding generation
GraphSAGE = Graph SAmple and aggreGatE,即图的采样和聚合,具体过程如下图所示:
- 对节点的邻居进行采样
- 聚合所采样邻居的特征信息
- 根据聚合的信息生成嵌入,预测图内容或标签
将该过程表述成算法如下:
外层循环的K代表着网络层数,也就是中心节点所能聚合到的邻居阶数,同时也代表着聚合次数,也是聚合函数个数。
文中通过实验测试出:当K=2K=2K=2时(中心节点最多可以将其二阶邻域的节点信息聚合到自己的嵌入表示中),当一阶邻域数与二阶邻域数的乘积S1∗S2<500S1*S2<500S1∗S2<500时,模型就可以达到很好的效果。
在内层循环中,对每个节点vvv,首先使用vvv的邻居节点的k−1k-1k−1层的嵌入表示huk−1h_u^{k-1}huk−1来通过聚合函数生成vvv的邻居节点的kkk层表示hN(v)kh_{N(v)}^khN(v)k 。之后将hN(v)kh_{N(v)}^khN(v)k和节点vvv的第k−1k-1k−1层的嵌入表示hvk−1h_v^{k-1}hvk−1进行拼接,经过一个非线性变换WkW^kWk产生节点vvv的第kkk层的嵌入表示hvkh_v^khvk。
2. Aggregator Architectures
由于在图中节点的邻居是天然无序的,所以希望构造出的聚合函数是对称的(inherently symmetric),即改变输入的顺序,函数的输出结果不变。
Mean aggregator
Mean aggregator类似于GCN框架中使用的卷积传播规则。将嵌入生成算法的4、5行替换为下式来得出该方法的归纳变量,直接产生目标节点的向量表示,而不是邻居节点的向量表示。Mean aggregator将目标节点和邻居节点的第k−1k-1k−1层嵌入拼接起来,然后对其每个维度进行求均值,再将得到的结果做一次非线性变换WWW,生成目标节点的第kkk层嵌入表示。
LSTM aggregator
引入循环神经网络LSTM来encode邻居的特征,有更强的表示能力。由于LSTM不是对称(inherently symmetric)的,所以在使用时需要对目标节点的邻居进行随机打乱,再输入到LSTM中。
Pooling aggregator
先对目标节点的每个邻居节点的嵌入表示独立进行非线性变换(MLP)WpoolW_{pool}Wpool得到向量,之后把所有邻居节点的向量做一次池化操作(max pooling / mean pooling)进行聚合,该工作中采用了max pooling。
3. Learning the parameters
以上是GraphSAGE的前向传播过程,下面简单介绍训练过程。
为了在完全无监督的情况下学习有用的预测表示,该工作基于图的输出表示zuz_uzu的损失函数进行参数学习——权重矩阵WkW_kWk和聚合函数的参数。 基于图的损失函数,希望相近的节点具有相似的表示,分离节点有不同的表示:
其中vvv是在定长随机游走中出现在uuu附近的节点,σ\sigmaσ是sigmoid函数,PnP_nPn是负采样分布,QQQ是负样本数量。
不同于以前的嵌入方法,zuz_uzu是由一个节点的局部邻域所包含的特征生成的,而不是为每个节点训练唯一的嵌入。
4. 实验
最终的实验结果表明,在GraphSAGE中LSTM和pooling聚合的方法效果最好。
5. 思考
GraphSAGE有必要和GCN相比较进行思考:
- 本质上来说,GCN(归一化邻接矩阵后乘以特征矩阵)也是一种均值聚合的过程。而两者的区别在于,GCN中的邻接矩阵是固定的,并且只支持整张图一起训练,这就导致了它对于新节点/新边的动态适应力不足。
- 本质上来说,GraphSAGE的归纳式学习在于聚合函数中包含了对于邻居节点的聚合,即多了采样的过程,该过程中邻接矩阵是不断变化的,相当于从GCN中的固定参数变成了输入变量。
- 训练过程中的minibatch方法同理,每次提取的子图中同一个节点的邻接矩阵也很可能不同。
所以,相比于GCN,GraphSAGE的改进在于可以灵活地动态进行分批训练和采样。
GAT (Graph Attention Networks, ICLR2018)
该工作提出了图注意力网络(GAT)——在图结构化数据上运行的新型神经网络体系结构,利用masked self-attention层来解决基于图卷积或其类似的方法的缺点。 通过堆叠节点能够参与其邻域特征的层,为邻域中的不同节点指定了不同的权重,而无需进行任何昂贵的矩阵运算(如求逆)或依赖于已知的图。通过这种方式,可以同时解决基于频谱的图神经网络的几个关键挑战,并使该模型在归纳学习(inductive learning)上和传导学习(transductive learning)上一样易用。
(除了原文,以下内容主要参考了两篇知乎文章:向往的GAT、Graph Attention Networks阅读笔记)
0. 概念
传导学习(Transductive Learning):即前文提到的直推式学习,先观察特定的训练样本,然后对特定的测试样本做出预测。训练阶段与测试阶段都基于同样的图结构。
归纳学习(Inductive Learning):先从训练样本中学习到一定的模式,然后利用其对测试样本进行预测。训练阶段与测试阶段需要处理的图不同,通常是训练阶段只是在子图(subgraph)上进行,测试阶段需要处理未知的节点。
全局图注意力(global graph attention):顾名思义,就是每一个节点都对于图上任意顶点都进行attention运算。这样的优点是完全不依赖于图的结构,对于inductive任务无压力;缺点是丢掉了图结构的特征、运算面临着高昂的成本。
局部图注意力(masked graph attention):注意力机制的运算只在一阶邻居节点上进行,该工作中采用了这种方式。
1. 计算图注意力系数(attention coefficient)
graph attention layer对于节点iii,逐个计算它的邻居们和它自己之间的相似系数:
eij=a([Whi∥Whj]),j∈Nie_{ij}=a([Wh_i{\parallel}Wh_j]),j{\in}N_ieij=a([Whi∥Whj]),j∈Ni其中,首先一个共享参数WWW的线性映射对于节点的特征进行了增维,这是一种常见的特征增强(feature augment)方法;[⋅∥⋅][\cdot{\parallel}\cdot][⋅∥⋅]对于节点i,ji,ji,j的变换后的特征进行了拼接(concatenate);最后a(⋅)a(\cdot)a(⋅)把拼接后的高维特征映射到一个实数上,作者是通过 single-layer feedforward neural network实现的。
接下来基于相关系数进行归一化:
αij=exp(LeakyReLU(eij))∑k∈Niexp(LeakyReLU(eij))\alpha_{ij}=\frac{\exp(LeakyReLU(e_{ij}))}{\sum_{k{\in}N_i}\exp(LeakyReLU(e_{ij}))}αij=∑k∈Niexp(LeakyReLU(eij))exp(LeakyReLU(eij))至此注意力系数αij\alpha_{ij}αij求解完毕,过程如下图(左)所示:
2. 聚合(aggregate)
如同GraphSAGE一样,基于空间的图卷积网络绕不开聚合。在这里,聚合就是根据计算好的注意力系数αij\alpha_{ij}αij,把特征hjh_jhj加权求和:
hi′=σ(∑j∈NiαijWhj)h_i'=\sigma(\sum_{\mathclap{j{\in}N_i}}\alpha_{ij}Wh_j)hi′=σ(j∈Ni∑αijWhj)其中,hi′h_i'hi′就是GAT输出的对于每个节点iii的新特征(融合了邻域信息),σ(⋅)\sigma(\cdot)σ(⋅)是激活函数。
为了提高模型的拟合能力,在本文中还引入了multi-head attention,即同时使用多个WkW^kWk计算注意力,然后将各个WkW^kWk计算得到的结果合并(连接):
hi′(K)=∥k=1Kσ(∑j∈NiαijkWkhj)h_i'(K)={\parallel}_{k=1}^{K}\sigma(\sum_{\mathclap{j{\in}N_i}}\alpha_{ij}^kW^kh_j)hi′(K)=∥k=1Kσ(j∈Ni∑αijkWkhj)其中,∥\parallel∥表示连接,αijk\alpha_{ij}^kαijk和WkW^kWk表示第kkk个multi-head得到的计算结果。类似的,也可以用求和的方式进行合并:
hi′(K)=σ(1K∑k=1K∑j∈NiαijkWkhj)h_i'(K)=\sigma(\frac{1}{K}\sum_{k=1}^{K}\sum_{\mathclap{j{\in}N_i}}\alpha_{ij}^kW^kh_j)hi′(K)=σ(K1k=1∑Kj∈Ni∑αijkWkhj)聚合过程如上图(右)所示。
3. 理解
- GCN与GAT都是将邻居顶点的特征聚合到中心节点上(一种aggregate运算),利用graph上的local stationary学习新的节点特征表达。不同的是GCN利用了拉普拉斯矩阵,GAT利用attention系数。GAT会更强,因为节点特征之间的相关性被更好地融入到模型中。
- GAT的运算方式是逐节点的运算(node-wise),每一次运算都需要循环遍历图上的所有顶点来完成。逐节点运算意味着,摆脱了拉普利矩阵的束缚,使得有向图问题迎刃而解。
- 为什么GAT适用于归纳学习?GAT中重要的学习参数是WWW与a(⋅)a(\cdot)a(⋅),因为上述的逐节点运算方式,这两个参数仅与节点特征相关,与图的结构毫无关系。所以测试任务中改变图的结构,对于GAT影响并不大,只需要改变邻居NiN_iNi,重新计算即可。与此相反的是,GCN是一种全图的计算方式,一次计算就更新全图的节点特征。学习的参数很大程度与图结构相关,这使得GCN在inductive任务上遇到困境。
- 一句话概括:GAT就是将注意力机制attention应用在了基于空间的图卷积网络上。
【Graph Neural Network 图神经网络】3.Spatial-based Graph Convolutional Networks 基于空间的图卷积网络相关推荐
- 2021_AAAI_Knowledge-aware Coupled Graph Neural Network for Social Recommendation
[论文阅读笔记]2021_AAAI_Knowledge-aware Coupled Graph Neural Network for Social Recommendation 论文下载地址: htt ...
- 图神经网络综述 Survey on Graph Neural Network
图神经网络综述 Survey on Graph Neural Network 摘要:近几年来,将深度学习应用到处理和图结构数据相关的任务中越来越受到人们的关注.图神经网络的出现使其在上述任务中取得了重 ...
- 图神经网络方法总结(Graph Neural Network)
图神经网络方法(Graph Neural Network) 概要 近年来图神经网络受到大家越来越多的关注,在文本分类(Text classification),序列标注(Sequence labeli ...
- Heterogeneous Graph Neural Network(异质图神经网络)
Heterogeneous Information Network 传统的同构图(Homogeneous Graph)中只存在一种类型的节点和边,当图中的节点和边存在多种类型和各种复杂的关系时,再采用 ...
- Introduction to Graph Neural Network(图神经网络概论)翻译:目录总览
前言:最近对图神经网络部分比较感兴趣,偶尔看到清华大学刘知远老师在今年3月份发表的一本书:Introduction to Graph Neural Network,于是将该书内容进行翻译,记录阅读中自 ...
- Graph Decipher: A transparent dual-attention graph neural network 图解密器:一种透明的双注意图神经网络,用于理解节点分类的消息传递机制
引用 Pang Y, Liu C. Graph Decipher: A transparent dual-attention graph neural network to understand th ...
- 【论文分享】异构图神经网络域名检测方法GAMD:Attributed Heterogeneous Graph Neural Network for Malicious Domain Detection
题目:Attributed Heterogeneous Graph Neural Network for Malicious Domain Detection 链接:https://ieeexplor ...
- 图神经网络 Graph Neural Network(GNN)
图神经网络和单纯神经网络一个很大的区别就是,图神经网络有节点和边的这种结构. 具体应用上,图神经网络可以识别具有图片,文字等结构信息. 比如识别一个人物的身份的任务就需要首先识别人,然后识别与之相关的 ...
- 异构神经网络(3)MAGNN: Metapath Aggregated Graph Neural Network for Heterogeneous Graph Embedding
MAGNN: Metapath Aggregated Graph Neural Network for Heterogeneous Graph Embedding这篇文章发表于WWW 2020. Mo ...
最新文章
- BOM—浏览器对象模型(Browser Object Model)
- 如果边横向移动边扔球,球会怎么运动?
- Python(14)-模块
- Red Hat Enterprise Linux Server release 7.0双系统安装
- Spring Boot(十三)RabbitMQ安装与集成
- python乘法表运算_Python入门教程(三):史上最全的Numpy计算函数总结,建议收藏!...
- 【数字逻辑设计】毛刺
- Lotus,协作领域的常青树
- 腾讯游戏规范直播:以后将严禁这些行为!
- UITableView自定义Section
- 苹果7闪存速度测试软件,iphone6 plus闪存检测教程 iphone6检测tlc闪存图文步骤
- 如何向下属布置工作任务,5个步骤,布置工作任务更清晰
- 基于树莓派的视频会议系统
- 最新win10重装系统官方纯净版——2022家庭版多图详细
- 浙江工业大学计算机专业考研心得
- Linux 中复制问题,错误显示 cp:omitting directory
- 隐私泄露距离你我有多远?APP扩大个人隐私收集,增大隐私保护难度
- 飞塔防火墙虚拟服务器,飞塔防火墙模拟(1):模拟器使用方法 | 网络之路博客(公众号同名)(其他平台网络之路Blog)...
- HMM(三)维特比算法推测隐藏状态序列
- OpenCV中的GUI特性 —— 图片与视频的读写和显示
热门文章
- 2021牛客多校#4 E-Tree Xor
- 07、人人都会设计模式:建造者模式--Builder
- VtigerCRM收件箱邮件打开失败JSLBL_Failed_To_Open_Email
- 小米门卡协议加载失败_小米手机门禁卡空白卡开通步骤及写入激活方法
- python最终价格_python分析北京租房现状,最后的价格分布地图亮了
- 【计算机网络】大作业-实现两台pc间交流的简单的聊天软件
- css3立体样式下载按钮
- 如何下载台湾的硕博论文--大陆的论文不给力呀
- 顺丰官网代码(自编)
- Hibernate-初学小结