图神经网络教程2——循环图神经网络-1

2024-08-20 22:20

本文主要是介绍图神经网络教程2——循环图神经网络-1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍

循环图神经网络(Recurrent Graph Neural Network,RGNN)。在标准神经网络中,连续的学习权重层用于从输入张量中逐步提取更高级别的特征。在用于计算机视觉的神经网络中,低级特征(如短直线和曲线)的存在是由较早的层识别的,而高级特征(如复合形状)的存在是由较晚的层识别的。在被这些顺序层处理之后,所产生的高级特征可以提供给softmax层或单个神经元,以进行分类、回归或一些其他的下游任务(downstream task)。

注:短直线等举例仅仅是为便于读者理解,在计算机的实际操作过程中,其识别的“特征”在人看来是完全无序且杂乱的。

同样地,最早的GNN通过使用一系列的特征提取操作来从图中提取高层次的特征表示,然后将这些高层次的特征路由到输出函数。换句话说:它们将输入处理为有用的嵌入,然后将嵌入处理为有用的输出,使用两个不同的处理阶段。这些早期技术存在局限性:一些算法只能处理有向无环图(DAGs),其他算法要求输入图具有“超源”(即有指向其他图中所有顶点的有向路径)的顶点,还有一些技术需要采用启发式方法来处理某些图的循环性。

通常,这些早期的递归方法依赖于将图的特殊情况“展开”为有限树(递归等价),然后可以通过递归神经网络将其处理为有用的嵌入。递归GNN对此进行了扩展,从而提供了一种可应用于泛型图的解决方案。RGNN不是通过递归的编码网络为整个输入图创建嵌入,而是通过消息传递这一信息传播框架在顶点级别创建嵌入,这将在本节定义。

循环计算嵌入

注:此处所说嵌入,一般指的是对于(节点、边、状态的)信息进行向量化表示,嵌入为取embedding的直译意。

RGNN使用称为转移函数的确定性共享函数计算输入图中每个顶点的嵌入。它被称为过渡函数,因为它可以解释为从邻域的当前表示计算邻域的下一个表示。该转换函数可以对称地应用于任何顶点,即使顶点的邻域大小可能是可变的。这个过程如图2所示,其中过渡函数𝑓为周围的邻域计算每个顶点的嵌入。

这样,对于任意一个所给节点v_i,其第k个嵌入h_i^{k}的值依赖于以下几个量:

  • 中心节点v_i^F的特征
  • 所有存在的邻接边e_{ij}^F的特征
  • 所有相邻顶点v_j^F的特征
  • 所有相邻节点上一次迭代的嵌入h_j^{k-1}

对于一个简单输入图G(V, E),具有|V| = 4, |E| = 4的RGNN正向传递。G经过𝑘层的处理。在每一层中,每个顶点的特征v_i^{F}(绿色),邻域特征N_{v_i}^F(黄色),以及前一个隐藏层(紫色)由状态转移函数𝑓处理并聚合,从而产生g的连续嵌入。注意,邻域特征必须聚合为固定的嵌入大小,否则𝑓将需要处理可变的输入大小。这将重复,直到嵌入收敛(即,连续嵌入之间的变化没有超过某个停止阈值)。在此阶段,嵌入被提供给执行某些下游任务的输出函数𝑔——在这种情况下,任务是顶点分类问题。请注意,𝑓和𝑔可以实现为神经网络,并通过展开的计算图通过监督误差信号的反向传播进行训练。请注意,在第𝑘层处理之后,每个顶点的嵌入包含了来自最大𝑘' hops '的信息。

注:这里我理解的嵌入(embedding)是类似于隐藏状态的一种变量,其表示循环神经网络处理过程中的阶段性变量,如在第一个过程中,输入节点1的信息及其嵌入,节点1的若干连接节点信息及其嵌入,使用𝑓,即使用全连接层FC进行运算,得到新的嵌入,即下一时刻嵌入,在下一时刻计算时,则输入此刻嵌入(新嵌入),而输入的X仍然是开始时的节点信息,边信息不变,可以看作是一个每时刻的输入一致的循环神经网络,通过这种方式汇聚信息,传递信息,最后通过一个g来完成Softmax归类操作。

 为了反复应用这个学习到的转换函数来计算连续的嵌入,𝑓必须具有固定数量的输入和输出变量。那么它怎么依赖于邻近邻域呢?邻近邻域的大小可能会根据我们在图中的位置而变化。有两个简单的解决方案,第一个是设置“最大邻域大小”,并在处理具有不存在邻域的顶点时使用null向量。

注:这里我理解的含义是,假定最大邻接节点数量为5,则处处输入量为5个点和5个边,小于5个连接时,全部采用NULL进行替代,向量化表示可能是一个(1,0,0,...,0)的嵌入。而在无标度图中,节点连接数量变化大,用这种方式可能出现1000个输入只有几个不是NULL的情况。

第二种方法是以某种排列不变的方式聚合所有邻域特征,从而确保图中的任何邻域都由一个固定大小的特征向量表示。虽然这两种方法都是可行的,但第一种方法不能很好地扩展到无标度图,这种图的度分布遵循幂律。由于许多现实世界的图(例如社交网络)是无标度的,我们在这里将使用第二种解决方案。在数学上,这可以表述为方程(1)

我们可以看到,在这个公式方程1下,𝑓是很好的定义。它接受四个特征向量,它们都有定义的长度,无论考虑的是图中的哪个顶点或者是迭代重复计算的问题。这意味着过渡函数可以循环地应用,直到输入图中的所有顶点都达到稳定的嵌入。这个表达式可以被解释为在整个图中传递“消息”或特征;在每次迭代中,嵌入h_i^{k}依赖于其邻居的特征和嵌入。这意味着,通过足够多的循环迭代,信息将在整个图中传播:在第一次迭代之后,任何顶点的嵌入编码了单条边范围内的邻域特征。在折中中,任何顶点的嵌入都是对邻域内两条边的特征进行编码,以此类推。迭代传递“信息”来生成图的编码是这个消息传递框架名字的来源。

注意,显式地将单位矩阵I𝑛添加到邻接矩阵A中是一种典型的行为,从而确保所有顶点都与自己相连(自环),这意味着一个顶点v_i \in N_{v_i}, \forall i \in v。此外,这允许我们通过迭代邻接矩阵的单行直接访问邻域。通常对修改后的邻接矩阵进行归一化,以防止不必要的嵌入缩放。 

这篇关于图神经网络教程2——循环图神经网络-1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091337

相关文章

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

poj3750约瑟夫环,循环队列

Description 有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。 Input 第一行输入小孩的人数N(N<=64) 接下来每行输入一个小孩的名字(人名不超过15个字符) 最后一行输入W,S (W < N),用

校验码:奇偶校验,CRC循环冗余校验,海明校验码

文章目录 奇偶校验码CRC循环冗余校验码海明校验码 奇偶校验码 码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据检验码的码距。 奇偶校验码的编码方法是:由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码。 奇校验:整个校验码中1的个数为奇数 偶校验:整个校验码中1的个数为偶数 奇偶校验,可检测1位(奇数位)的错误,不可纠错。

机器学习之监督学习(三)神经网络

机器学习之监督学习(三)神经网络基础 0. 文章传送1. 深度学习 Deep Learning深度学习的关键特点深度学习VS传统机器学习 2. 生物神经网络 Biological Neural Network3. 神经网络模型基本结构模块一:TensorFlow搭建神经网络 4. 反向传播梯度下降 Back Propagation Gradient Descent模块二:激活函数 activ

react笔记 8-17 属性绑定 class绑定 引入图片 循环遍历

1、绑定属性 constructor(){super()this.state={name:"张三",title:'我是一个title'}}render() {return (<div><div>aaaaaaa{this.state.name}<div title={this.state.title}>我是一个title</div></div></div>)} 绑定属性直接使用花括号{}   注

Spring是如何解决循环依赖?

现象解释: 在Spring框架中,循环依赖(Circular Dependency)是指两个或多个Bean之间相互依赖,形成了一个循环。例如,Bean A依赖于Bean B,而Bean B又依赖于Bean A。Spring通过多种机制解决循环依赖问题,具体来说,主要有以下几种方式: 1.三级缓存机制 Spring容器在实例化Bean时使用了三级缓存来解决循环依赖,主要涉及三个缓存结构: 一级

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

基于深度学习 卷积神经网络resnext50的中医舌苔分类系统

项目概述 本项目旨在通过深度学习技术,特别是利用卷积神经网络(Convolutional Neural Networks, CNNs)中的ResNeXt50架构,实现对中医舌象图像的自动分类。该系统不仅能够识别不同的舌苔类型,还能够在PyQt5框架下提供一个直观的图形用户界面(GUI),使得医生或患者能够方便地上传舌象照片并获取分析结果。 技术栈 深度学习框架:采用PyTorch或其他

FPGA开发:条件语句 × 循环语句

条件语句 if_else语句 if_else语句,用来判断是否满足所给定的条件,根据判断的结果(真或假)决定执行给出的两种操作之一。 if(表达式)语句; 例如: if(a>b) out1=int1; if(表达式)         语句1; else         语句2; 例如: if(a>b)out1=int1;elseout1=int2; if(表达式1) 语句1; els