图网络分类以及一些通用框架

article/2025/6/20 15:34:25

图网络大体分类

  • 递归图神经网络(Recurrent Graph Neural Networks)
  • 图卷积神经网络(Graph Convolution Networks)
  • 图注意力网络(Graph Attention Networks)
  • 图自编码器(Graph Auto-encoder)
  • 图时空网络(Graph Spatial-Temporal networks)
  • 图生成网络(Graph Generative Networks)
  • 图强化学习(Graph Reinforcement Learning)
  • 图对抗学习(Graph Adversarial Methods)

更通用的框架,更一般的框架分类方式

  • MPNN:图神经网络和图卷积 / Message Passing neural Networks
  • NLNN:统一 Attention / Non-local Neural Networks
  • GN:统一MPNN和NLNN / Graph Networks

图计算任务框架

  • 节点问题
  • 边:将两个节点作为输入,输入边的预测
  • 图:图分类/图匹配/图生成

图上任务类别

  • 半监督任务:节点
  • 有监督:图/节点
  • 无监督:图嵌入

图的类别

  • 异构图 :图中点与点之间的关系,边与边之间的关系是不一样的
    • 引文网络中,用户和论文之间存在关系,论文和期刊之间存在关系,但是点的属性类型是不一样的
  • 二部图:存在两部分节点 ,同一部分节点之间没有边连接,不同部分之间的节点可以有边连接
    • 用户在某个电商网站购买物品,用户与用户之间无法连接,用户和物品之间可以连接
  • 多维图:点和点之间的边存在多种类型的属性
    • 一个用户可以浏览、购买物品 浏览和购买为 用户和商品之间的多种关系
  • 符号图:点和点之间的边存在相反属性的关系
    • 社交网络中,用户和用户之间的关系为朋友或非朋友,属于积极或消极关系中的一种
  • 超图:一条边可能会连接两个以上的点
    • 每个边所包含的定点个数相同且为k个,就可成为k阶超图,常见的图是二阶超图
  • 动态图: 随着新节点被添加到图中,图在不断发展,并且新边也在不断出现。
    • 例如,在诸如Facebook的在线社交网络中,用户可以不断与他人建立友谊,新用户也可以随时加入Facebook。 这些类型的演化图可以表示为动态图,其中每个节点或边都与时间戳关联。

循环神经网络(Recurrent Graph Neural Networks)

利用相同的递归参数,不断地学习节点的高层特征

  • hv表示节点在当前层的特征,hu表示节点的邻居特征,求和表示聚合了节点周围邻居节点的特征
  • 然后通过GRU的函数学习节点的下一层的节点表示
    在这里插入图片描述

RGNN与GCN的不同点在于

  • RGNN中间层所用的参数都一样,GCN每层所用的参数都不一样

图卷积神经网络 (Graph Convolution Networks)

  • GCN,GraphSAGE :利用节点和节点周围的信息,不断聚合,得到节点的高层表示,认为邻居节点具有一个排列物边径

  • PATCH-SAN :

    • 首先得到节点周围的邻居信息
    • 然后得到邻居信息的一个有序的排列
    • 首先选择红色节点,绿色节点表示对红色节点的一节邻居节点,黄色表示二阶节点
    • 每个邻居节点的选择顺序根据节点的度来定义,按照一阶度、二阶度的顺序对节点进行排序,然后形成一个有顺序的序列,
    • 之后采用CNN的方式进行训练
    • 算法流程:
      在这里插入图片描述

图注意力网络 GAT

通过attention系数 加权求和 邻居节点的信息 学习节点的下一层特征表示

在这里插入图片描述
- 使用Attention的方式定义局部更新函数

  • attention:加权平均
  • 如何去聚合相邻节点的信息? 使用当前节点的隐表示作为query,在相邻节点表示上做了Attention
    • 使用某种方式计算出权值 e i j e_{ij} eij
    • 然后利用权值 将相应的key 和 value 加权平均起来
    • 然后使用当前节点的隐表示作为query
    • 然后利用attention里的方法 聚合信息
  • GAT可以让我们自动去学习不同邻居的一个权重

图自编码器(Graph Auto-encoder)

  • GAE(Auto-encoder)

    • 输入一张图,然后通过一层GCN学习到图的一个隐层节点的特征表示

    • 再求隐层节点与其特征的转置 做内积 即可还原出一张图

    • 然后计算输入图和输出图的结构性误差,将其当做损失函数,求损失函数的最小值

    • 然后就可以学习到encoder的GCN的参数

    • 在这里插入图片描述

    • 与深度学习的 Auto-encoder类似,将encoder换成GCN,将decoder换成特征与其转置相乘

  • VGAE(VAE)

    • 输入一张图,经过两层的GCN,第一层GCN共享参数,第二层GCN学习两个参数,然后将两个参数组合在一起,得到一个向量表示
    • 然后通过 节点与其特征的转置 做内积,即可还原出一张图
    • 然后计算输入图和输出图的结构性误差,将其当做损失函数,求损失函数的最小值
    • 然后就可以学习到encoder中的GCN的参数的值
    • 在这里插入图片描述

图时空网络(Graph Spatial-Temporal networks)

  • 同时考虑图的 空间性时间性 的维度
    • 比如在交通领域,速度传感器会随着时间的维度不断变化,不同的传感器之间在空间中也会形成连接空间维度的边
    • 当前的许多方法都应用GCN来捕获图的依赖性,使用一些 RNN 或 CNN 来求取时间的依赖性

图生成网络(Graph Generative Networks)

  • 通过 RNN 或 GAN 的方式生成网络
  • 有前景的应用领域 :化合物合成
    • 在化学图中,原子被视为节点,化学键被视为边
    • 起任务是发现具有某些化学和物理性质的新的可合成分子

图强化学习(Graph Reinforcement Learning)

  • 采用强化学习的方法,应用在图网络

图对抗学习(Graph Adversarial Methods)

  • 将GAN的思想引入到图网络
  • 用生成器生成样本
  • 然后用分类器去判别样本

MPNN:Message Passing Neural Networks 消息传递网络

  • 消息传递阶段

    • 消息传递函数 Mt:聚合 节点和其周围邻居节点以及边的信息

      • 在这里插入图片描述
    • 更新函数 Ut:通过节点的本身向量,以及消息传递函数聚合的特征 更新节点的下一层特征表示

      • 在这里插入图片描述
    • ReadOut阶段

      • 将消息传递阶段得到的每一个节点的特征组合在一起经过一个R函数,得到图的特征表示
      • y ^ = R ( h v T ∣ v ∈ G ) \hat y = R({h^T_v | v ∈ G}) y^=R(hvTvG)
      • ReadOut函数需要满足的条件:保证节点排列的不变性
  • 为何说其统一了图卷积网络?

    • Mt函数聚合了节点本身以及周围邻居节点的信息
    • 如果其是GCN,就相当于做了第一层的本身节点的自连接( h v t h_v^t hvt)以及邻居节点( h w t , e v w h^t_w,e_{vw} hwt,evw)的聚合
    • 如果其是GraphSAGE,Mt函数相当于对周围邻居节点进行采样,然后通过Ut函数将本节点( h v t h_v^t hvt)以及周围邻居节点的信息( m v t + 1 m^{t+1}_v mvt+1)进行聚合得到下一层的节点表示
    • Readout函数相当于将所有的节点特征放在一起,学习图的特征表示

NLNN:Non-local Neural Networks 非局部的神经网络

在这里插入图片描述

  • 聚合所有与i节点相关联的j节点的信息,做一个求和
  • 再用归一化的方式,求得新的特征表示
  • 其中:i、j节点之间的关系可以使用许多变异的关系函数来求得,如
    • 在这里插入图片描述
  • 为何说统一了自注意网络
    • f ( x i , x j ) f(x_i,x_j) f(xi,xj)相当于attention的系数
      • 如果是应用在GAT上,就相当于是i节点与j节点拼接之后,再使用一个α向量去求attention的系数
    • g ( x j ) g(x_j) g(xj)相当于是邻居节点经过一个函数转换,然后与不同的attention系数 进行求和得到下一层节点 的表示

GN:Graph Network

  • GN block

    • 更新函数

      • e k ′ e'_k ek:更新边后的特征, v ‾ i ′ \overline v'_i vi:更新节点后的特征, u’ :更新全局后的特征
      • r k r_k rk表示receiver节点的索引, s k s_k sk表示sender节点的索引, e k e_k ek 表示边的属性,u表示一个全局属性
      • v r k v_{r_k} vrk v s k v_{s_k} vsk
    • 在这里插入图片描述

      • e ‾ i ′ \overline e'_i ei:聚合邻居后的特征, e ‾ ′ \overline e' e:更新所有边后的特征, v ‾ ′ : \overline v': v更新所有点后的特征
    • 算法流程

      • 在这里插入图片描述

      • 遍历所有的边,根据边和点的特征,更新所有的边

      • 遍历所有的点,通过下面三个操作,得到所有更新节点的属性

        1. 将所有更新之后的边特征和点聚合在一起,得到点的邻居的信息
        2. 将点的领域信息聚合在一起,得到点得周围领域聚合之后的特征表示
        3. 将聚合之后的边的特征与节点本身的特征在加上全局属性,得到节点新的特征表示
      • 再使用全局更新函数更新全局边的信息,点信息

      • 然后使用更新完的边和点的属性,加上之前的全局属性 更新一个全局属性u’

  • 示例

    • 执行流程

  • GN网络如何统一MPNN和NLNN?

    • MPNN应用

    • NLNN应用


http://chatgpt.dhexx.cn/article/JjrQMc8n.shtml

相关文章

泛型的使用和作用

概述 泛型的使用 多态与泛型 两者要一致,Animal 和cat要一致 泛型的作用 提高 Java 程序的类型安全 通过前面的学习我们知道, 在集合中可以添加 Object 类型的对象, 如果在不使用泛型的情况下定义了一个 ArrayList 对象, 那 么各…

java泛型(java泛型的作用)

java泛型的基本使用是什么? add("test1"); String test1 (String)strList。get(0); System。out。println("Test 1 : " test1); } public void testGeneric() { List strList new ArrayList(); strList。 Java泛型的规则和限制有哪些呢&…

java泛型的作用及实现原理

一、泛型的介绍 泛型是Java 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java泛型被引入的好处是安全简单。在Java …

泛型(一)--泛型的作用和定义

一、泛型的作用 泛型是.net中十分常见的一种特性。它是在.net 2.0的时候加入。那为什么要在.net 2.0的时候加入泛型这个特性呢?我们首先来看一段代码。 using System;namespace 泛型{class Program{static void Main(string[] args){int iParameter 1;string sPar…

什么叫泛型?有什么作用?

作者:Java3y 链接:https://www.zhihu.com/question/272185241/answer/366129174 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 一、什么是泛型? Java泛型设计原则:…

Java泛型的作用及优点有哪些

Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 作用 第一是泛化。可以用T代表任意类型Java语言中引入泛型是一个较大的功能增强不…

第十章 泛型

10.1 泛型的理解和好处 10.1.1使用传统方法的问题分析 1)不能加入到集合ArrayList中的数据类型进行约束(不安全) 2)遍历的时候,需要进行类型转换,如果集合中的数据量较大,对效率有影响 10.1.2泛型的好处 1)编译时…

简述泛型的基本使用和作用

前言 在上一篇文章中,给大家讲解了泛型的概念、作用、使用场景,以及泛型集合、泛型接口和泛型类的用法,但受限于篇幅,并没有把泛型的内容讲解完毕。所以今天我们会继续学习泛型方法、泛型擦除,以及通配符等的内容&…

军职在线大学计算机基础(自主模式),《军职在线》中国哲学经典著作导读(自主模式)...

《军职在线》中国哲学经典着作导读(自主模式) 1《周易》导读 测试题C A C B D C D B B D D A B C D C D B A B 2《道德经》导读 测试题D C D C C C D A D C D B C C C A B A A B 3《庄子》导读 测试题D C D A A C B A A C A A C A D C B 4《论语》导读 测试题B B C ED B A A A …

台湾国立大学(林轩田)《机器学习技法》(第7讲)blending and bagging

课程地址:https://class.coursera.org/ntumlone-001/class 课件讲义:http://download.csdn.net/download/malele4th/10212756 注明:文中图片来自《机器学习技法》课程和部分博客 建议:建议读者学习林轩田老师原课程&#xff0c…

大学有新民之道,则大学生者负新民工作之实际责任者也。

梅贻琦,(1889-1962),字月涵,为梅曾臣长子。自1914年由美国吴士脱大学学成归国,即到清华担任教学和教务长等多种职务。1931年,梅贻琦出任清华校长,自此后一直到他在台湾去世&#xff…

【转载】中庸与技术书

2019独角兽企业重金招聘Python工程师标准>>> 转自:图灵社区 原文作者:刘祺 原文地址:http://www.ituring.com.cn/article/213657 本次转载已经过原作者同意,二次转载请自行联系原作者 #中庸与技术书 在我写这篇文章之前…

《大学》《中庸》全文及翻译 (转载)

《大学》全文及翻译 原文: 大学之道,在明明德,在亲民,在止于至善。知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。物有本末,事有终始,知所先后…

[C语言]求一个数是否是2的n次方

设a8,a的二进制数为1000,若为16,则是 0001 0000,2的n次方转为二进制则只保留一个 1 , 其余位置全是0,因此只要判断这个数的二进制是否只有一个 1 ,则知道这个数是否是2的n次方。 //求一个数是…

C语言|s1-s0|<=10的-6次方

#include <stdio.h> #include <math.h> double fun(double x) { double s11.0,s00.0; double t1.0; int n1; do { s0s1;//此时s0为s1的上一项 tt*(0.5-n1)*x/n; s1s1t; n; } while(fabs(s1-s0)>1e…

c语言字母能乘10吗,c语言编程中表示a乘以10的n次幂怎么表示

可以参考下面的代码&#xff1a; #include int main() { float a,s,n; sa*mi(10,n); return 0; } float mi(float x,int y) { float a; int i; a1; if(y>0) { for(i1;i<y;i) { aa*x; } } else { for(i-1;i>y;i--) { aa/x; } } return a; } 扩展资料&#xff1a; C语言…

c语言学习-编写函数求x的n次方的值

编写函数求x的n次方的值 程序流程图&#xff1a; 代码&#xff1a; #include<stdio.h> long mul(int j ,int k) { int i; long mu1; for(i0;i<k;i) mumu*j; return mu; } void main() { int x,n; long m; printf("please enter x\tn\t"); scanf("%…

c语言x的n次方怎么写_C语言入门教程(三)进制与操作符

Hello,小伙伴们大家好,今天开始进入C语言第三课时的学习。进入今天正式内容之前呢,先来看一下上次课程中的留下的一道练习题。 练习: 1.编写程序计算半径为任意浮点数的圆周长并把结果打印在屏幕上 1、进制 一个字节分成八段,每段只能记录一个0或者1要想把一个数字记录在一…

c语言n次方怎么输入_C语言中10个经典的算法,学会它,利用它

C语言中有有许多经典的算法,这些算法都是许多人的智慧结晶,也是编程中常用的算法,这里面包含了众多算法思想,掌握这些算法,对于学习更高级的、更难的算法都会有很大的帮助,会为自己的算法学习打下坚实的基础。 接下来我们先来看10道: (1) 输出9*9乘法口诀 运行结果: (2…

c语言编程如何进行n次方运算,c语言n次方怎么输入?_后端开发

python编程如何求2000到2500闰年&#xff1f;_后端开发 python编程求2000到2500闰年的方法&#xff1a;首先定义年份【i2000】&#xff1b;然后用while循环判断是否在2500内&#xff1b;接着若年份可被40整除且不被100整除&#xff0c;则是闰年&#xff0c;若年份可被400整除&a…