【Graph Neural Network 图神经网络】3.Spatial-based Graph Convolutional Networks 基于空间的图卷积网络

前言

类似于图像上传统的卷积运算,基于空间的方法根据节点的空间关系定义图卷积。图像可以看作是一种特殊的图形式,每个像素代表一个节点。每个像素都直接连接到它附近的像素,如下图左所示。对3*3的区域应用一个过滤器,通过对每个通道的中心节点及其相邻节点的像素值进行加权平均。类似的,基于空间的图卷积将中心节点的表示与其邻居的表示进行卷积,得到中心节点的更新表示,如下图右。从另一个角度来看,基于空间的ConvGNNs与RecGNNs共享相同的信息传播/消息传递思想。空间图卷积运算实质上是沿着边传播节点信息。
imag vs graph
本篇主要涉及三个有代表性的空间图卷积工作: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网格)。 邻域图用作从像素节点读取特征值的接受域。但是,对于许多图,缺少特定于问题的排序(空间,时间或其他),并且图的节点也不对应。 在这些情况下,必须解决两个问题:

  1. 确定要为其创建的邻域图的节点序列
  2. 计算邻域图的范数,即从图表示到向量空间表示的唯一映射。
    该工作所提出的方法称为PATCHY-SAN,解决了任意图的这两个问题。对于每个输入图,它首先确定创建邻域图的节点(及其顺序)。 对于每个节点,提取并归一化由k个节点组成的邻域,也就是说,它以固定的线性顺序唯一地映射到空间。最后,归一化的邻域图作为接收域与CNN组件相结合。
    CNN
    上述文字描述的就是该工作方法的主要流程,按步骤划分为节点序列选取(node sequence selection)邻域集合(neighborhood assembly)邻域归一化(nneighborhood normalization),最后送入**卷积结构(convolutional architecture)**进行特征提取。下图描述了前三步的过程,下文将按照每一步的算法逐一介绍。

主要流程

1. Node Sequence Selection

(节点序列选取:在每个输入图中选取 w w w个将为其创建接收域的节点。)其中 w w w是接受域的个数,也是卷积操作的个数,在示例中 w = 6 w=6 w=6
在算法1中:

  1. 将输入图的节点按照graph labeling算法给定的顺序进行排序。
  2. 使用给定的步幅 s s s遍历所得的节点序列,选取出前 w w w个被访问的节点。
  3. 对于每个访问的节点,执行算法3构造一个接收域,直到创建了 w w w个接收域。如果节点数少于 w w w,则该算法将创建全零接受域以用于填充。
    SELNODSEQ

2. Neighborhood Assembly

(邻域集合:为 w w w中的每个节点构建数量为 k k k的邻域区域。)
对于节点序列选取中的第3步——为标识的每个节点构造一个接受域, 算法3首先调用算法2来为节点组合一个本地邻域,邻域的节点是接受域的候选。
算法2列出了邻域集合步骤:对于 w w w中每个节点 v v v进行广度优先搜索BFS,探索节点 v v v的一阶邻域,并将这些节点添加到集合N中。如果收集到的节点数少于 k k k,则继续探索二阶邻域,以此类推直到N中有至少 k k k个节点,或者直到没有更多的邻域可供添加。注意,此时 k k k N N N的大小可能不同。在示例中 k = 4 k=4 k=4,即保留每个节点的4个邻域节点作为邻域区域。
NEIGHASSEMB
RECEPTIVEFIELD

3. Neighborhood Normalization

(邻域归一化:从邻域区域中选择接受域的节点,并确定接受域中节点的顺序。)
节点的接受域是通过规范化上一步中的邻域区域而构建的,归一化在邻域图的节点上施加了一个顺序,以便从无序图空间映射到具有线性顺序的向量空间。基本的思想是利用图标记程序,对于两个不同的图, 来自这两个图的子结构 g 1 g1 g1 g 2 g2 g2,它们在各自的图中有相似的结构,那么他们的标签应该相似。为了使这个直观形式化,定义了最优图正规化问题,其目的是寻找相对于给定图集的最优标记。
在具体的算法4中:根据到节点 v v v的距离来计算每个邻域节点的排序,而为了使每个节点的标签唯一,采用NAUTY(McKay&Piperno, 2014)算法分别对 w w w个邻域区域进行标记。若节点数大于 k k k则按排序截取前 k k k个,不足 k k k则用虚拟节点(dummy nodes)补充。
NORMALIZEGRAPH

4. Convolutional Architecture

PATCHY-SAN能够处理节点和边属性(离散和连续)。设节点特征的个数为 a v a_v av,边特征的个数为 a e a_e ae。 对于每个输入图G,它将节点和边的归一化接受域分别表达为张量 ( w , k , a v ) (w, k, a_v) (w,k,av)和张量 ( w , k , k , a e ) (w, k, k, a_e) (w,k,k,ae) a v a_v av

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于-长短期记忆神经网络Graph Convolutional Long Short-Term Memory, GC-LSTM)的情感识别代码可以分为以下几个步骤: 1. 数据预处理:首先,需要对情感识别的数据进行预处理,包括文本分词、去除停用词、构建词向量等。 2. 构建结构:将文本数据转化为结构,其中每个词语作为一个节点,词语之间的关系可以通过共现矩阵、依存关系等方式来表示。 3. 层:使用神经网络Graph Convolutional Network, GCN)对结构进行特征提取。GCN可以通过邻居节点的信息来更新当前节点的表示。 4. 长短期记忆网络:将GCN提取的特征输入到长短期记忆网络(Long Short-Term Memory, LSTM)中进行序列建模。LSTM可以捕捉文本中的时序信息。 5. 情感分类:将LSTM输出的特征进行分类,可以使用全连接层或者其他分类器来进行情感分类。 以下是一个简单的伪代码示例: ```python # 数据预处理 preprocessed_data = preprocess(data) # 构建结构 graph = build_graph(preprocessed_data) # 层 gcn_output = graph_convolution(graph) # 长短期记忆网络 lstm_output = lstm(gcn_output) # 情感分类 sentiment = classify(lstm_output) # 相关问题 related_questions = [ "什么是神经网络(GCN)?", "长短期记忆网络(LSTM)是如何工作的?", "还有哪些常用的情感识别方法?" ] ``` 请注意,以上只是一个简单的示例,实际的代码实现可能会更加复杂,具体的实现方式可以根据具体的需求和数据进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值