[神经网络]图神经网络(GNN)

news2025/1/15 12:45:47

一、概述

        1.图

                图用来表示一些实体(entities)之间的关系(实体表示为(node),关系表示为(edge))。

                关系分为有方向无方向

         2.数据的图表示

                以图像文件为例,我们可以用邻接矩阵来表示一张图像。每个点表示一个像素点,若一个像素点有x个相邻像素,则可以用x条边来表示这个点的关系。

                 以文字序列为例,同样可以使用邻接矩阵来表示这句话。相邻的两个词之间有一条有向边相连接。

                 其次,原子序列/社交网络/知识图等都能表示为一个邻接矩阵

        3.任务类型

                图层面的任务、顶点层面的任务、边层面的任务。分类的依据是任务需要对这一层面(如图、点、边)的属性进行学习和预测。

二、图和神经网络

        1.图的数据结构

                一张图包含:顶点的属性、边的属性、全局信息、连接性。其中顶点的属性、边的属性、全局信息均可表示为向量。而连接性不能以一般矩阵表示(需要做到属性与顺序无关)

                以下图为例,可以如此表述

Nodes
[0,1,1,0,0,1,0,0]

                表示每个顶点的属性(标量/向量) 

Edges
[2,1,1,1,2,1,1]

                表示每条边的属性(标量/向量) 

Adjacency List    #邻接列表
[[1,0],[2,0],[4,3],[6,2],[7,3],[7,4],[7,5]]

                 长度=边数;第 i 个向量表示第 i 条边连接的哪些结点。

Global
0

                全局信息(标量/向量)

        2.图神经网络(GNN)

                GNN:对图上所有的属性(顶点、边、全局)进行的一个可以优化的变化(此变换能保持图的对称信息<即将顶点以另一种方法排序后结果不变>)。经过一个信息传递神经网络输入输出都是一张图(会改变顶点和边的属性,但不会改变连接性)。

                在输出图后,根据任务不同,分别顶点向量、边向量和全局向量构造一个MLP(多层感知机)

                在MLP后添加全连接层激活函数即可得到预测值(所有的属性共用一个全连接层)

                 Pooling(汇聚):若需要预测顶点但没有顶点的向量,则可使用与该顶点连接的所有边的向量和全局向量进行叠加来代表该点的向量。

                        同理,缺少边向量或全局向量均可采用汇聚其他向量的方式来代替。

                 最简GNN结构如下:

                         将图输入GNN单元,分别对顶点向量、边向量、全局向量进行分别变换,得到一张图,在经过全连接层和激活函数得到预测结果;若缺失部分属性可以用其他属性的汇聚来代替。

        3.汇聚在GNN中的作用

                在最简GNN中,GNN模块不会对图的连接性进行改变,为了充分利用图的连接性。我们可以利用信息传递对GNN进行改进。

                具体做法是将某个顶点和他的两个邻居顶点的向量加在一起形成一个汇聚向量,再将此汇聚向量送入MLP,最后再将其更新到下一层。

                汇聚操作类似于在图片上进行卷积,与卷积最大的区别是,卷积核感受野内的元素是进行加权求和(卷积核权重x像素值),而汇聚的求和是不加权求和

                汇聚同样可以取最大值平均值,类似于CNN中的MaxPooling和MeanPooking。

                 汇聚操作并不是单向的,在实际堆叠中我们可以将信息从顶点传递给边也可以再将其传递回去,全部完成后在进入MLP。传递顺序不同会影响最终结果(可以交替进行)。

                 若图像结合不够紧密导致一个结点的信息需要传递很远才能达到目标结点。我们可以设置一个Master Node(虚拟结点,设定其与图上所有点相连,标记为U_n),当需要把顶点的信息汇聚给边的时候,可以将U_n的信息进行汇聚。

                 !!!经过上述处理,GNN可以使用顶点本身的向量进行预测,也可以使用和顶点相关的全部信息进行预测。称为“基于消息传递的图神经网络

三、图的采样和batch

        当网络层数较大时,前向传递梯度时必须将图进行采样(否则会占用过多内存)

        常见的采样方式如下:

                ①随机采样:随机选取一些点,并获取其最近的邻居;可以规定采样点的数量 

                ②随机游走:从某个顶点开始,沿着图随机游走;可以规定游走的步数

                ③随机采样+随机游走

                ④宽度遍历:取一个点,将其1、2、3近邻进行一个k步的宽度遍历

 四、假设问题

        对于CNN而言,假设的是空间变换的不变性;对于RNN而言,假设的是时间的延续性;而对于GNN而言,假设是图的对称性(交换图的顺序不改变图的性质)

无、GNN相关技术

        ①GCN网络

                GCN(graph convolutional networks)-->图卷积神经网络,即带有汇聚操作的图神经网络

                假设GCN有k层,且每层使用宽度遍历检索目标点的3个邻居,其可以近似为k层3x3的卷积神经网络,子图可以近似为特征图。

                 GCN在图上进行卷积等价于将邻接矩阵取出进行矩阵乘法

        ②GAN网络

                GAN(graph attention networks)--图注意力网络,GNN的汇聚操作是不带权重的求和,某些时候为了满足计算需要我们也可以对求和进行加权。不同于CNN的加权求和(CNN的权重与位置有关),因为要满足连接不变特性,GNN的加权求和必须保证与位置不敏感;一般而言可以采用注意力机制的做法--权重取决于两个顶点之间向量的关系。在Attenion后,我们将得到的权重与顶点进行点乘再求和即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/379250.html

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

相关文章

重生之我是SVG(1)-入门

概述 引用一句来自MDN的一句话&#xff1a; SVG 图像是使用各种元素创建的&#xff0c;这些元素分别应用于矢量图像的结构、绘制与布局。在这里&#xff0c;您可以找到每个 SVG 元素的参考文档。 SVG 文件可以直接插入网页&#xff0c;成为 DOM 的一部分&#xff0c;然后用 Ja…

华三OSPF多区域互访实验

OSPF 实验 实验拓扑 实验需求 按照图示配置 IP 地址按照图示分区域配置 OSPF &#xff0c;实现全网互通为了路由结构稳定&#xff0c;要求路由器使用环回口作为 Router-id&#xff0c;ABR 的环回口宣告进骨干区域 实验解法 1.配置 IP 地址部分 2.按照图示分区域配置 OS…

Zeppelin-0.10.0的安装

目录 1.解压到指定目录 2.修改文件名 3.拷贝配置文件 4.修改IP和端口号&#xff0c;也可以改为8090等端口号 5.修改zeppelin-env.sh文件 6.复制hive-site.xml文件到当前目录下 7.切换目录 8.拷贝hadoop和hive的各种jar包到/opt/soft/zeppelin/interpreter/jdbc目录下 …

SDYY大学普通话考试报名系统说明文档

系列文章目录 健康云平台开发说明文档SD申报系统迭代说明文档漏刻有时物联网传感器API接口对接说明文档Echarts数据分析系统Data Analysis Platform使用说明文档漏刻有时云守护数据可视化v2.0迭代升级说明文档百度地图POI多信息点标注开发说明文档漏刻有时云守护数据可视化画质…

Docker之路(7.DockerFile文件编写、DockerFile 指令解释、CMD与ENTRYPOINT的区别)

1.DockerFile介绍 dockerfile 是用来构建docker镜像的文件&#xff01;命令参数脚本&#xff01; 构建步骤&#xff1a; 编写一个dockerfile文件docker build构建成为一个镜像docker run 运行镜像docker push发布镜像&#xff08;DockerHub、阿里云镜像仓库&#xff09; 2.Dock…

如何使用ADFSRelay分析和研究针对ADFS的NTLM中继攻击

关于ADFSRelay ADFSRelay是一款功能强大的概念验证工具&#xff0c;可以帮助广大研究人员分析和研究针对ADFS的NTLM中继攻击。 ADFSRelay这款工具由NTLMParse和ADFSRelay这两个实用程序组成。其中&#xff0c;NTLMParse用于解码base64编码的NTLM消息&#xff0c;并打印有关消…

SAP 在建工程转固定资产

由固定资产归口采购部门或业务部门提交购置固定资产/在建工程的申请&#xff0c;经审批后&#xff0c;若是需要安装调试&#xff0c;则由财务部固定资产会计建立内部订单收集成本&#xff0c;月末结转在建工程。项目完工后&#xff0c;相关部门&#xff08;公司装备部、分公司装…

Python虚拟环境迁移

使用python开发脚本使用的时候难免会遇到需要更换电脑来运行的问题&#xff0c;但是python不同版本的兼容性较差&#xff0c;在其他电脑使原python脚本运行时经常会发生一些问题&#xff0c;因此就需要python虚拟环境的迁移了。但是&#xff0c;直接将虚拟环境复制到另一台电脑…

Git学习(1)pro git阅读尚硅谷视频

目录 目录&#xff1a; 1. 起步 2. Git 基础 3. Git 分支 4. 服务器上的 Git 5. 分布式 Git 第一章 1.3 Git是什么 1.6运行git前的配置 该开源图书网站 Git - Book (git-scm.com) 目录&#xff1a; 1. 起步 1.1 关于版本控制1.2 Git 简史1.3 Git 是什么&#xff1f;1…

《图机器学习》-GNN Augmentation and Training

GNN Augmentation and Training一、Graph Augmentation for GNNs1、Feature Augmentation2、Structure augmentation3、Node Neighborhood Sampling一、Graph Augmentation for GNNs 之前的假设&#xff1a; Raw input graph computational graph&#xff0c;即原始图等于计算…

产品需求文档需要注意10件事

01什么是完美的产品需求文档&#xff08;PRD&#xff09;&#xff1f;就像产品经理一样&#xff0c;产品需求文档需要同时有效地执行许多不同的角色。该文档将由设计师&#xff0c;营销人员和工程团队使用&#xff0c;并且需要传达他们所需的所有必要信息。参考上面的漫画&…

html,

目录1. html新建1.1 html基本结构1.2 html细节2. 标签2.1 font标签2.2 字符实体2.3 标题标签2.4 超链接标签2.5 列表标签2.6 图片标签2.7 表格标签2.8 表单标签2.8.1基本使用2.8.2表单综合练习2.8.3表单格式化2.8.4表单使用细节2.8.5get请求2.8.6post请求2.9 其它标签2.9.1div标…

【JavaScript】第一章JavaScript入门

第一章 JavaScript入门JavaScript介绍JavaScript的起源JavaScript的应用JavaScript的特点JavaScript是脚本语言支持面向对象编程&#xff0c;面向过程编程/函数式编程支持跨平台执行JavaScript和ECMAScript的关系开发工具编辑器sublime textVisual Studio CodewebstormDreamwea…

安装VMWare虚拟机之后,发现网络贼卡,打开网页很慢

事情描述&#xff1a; 最近忙一个项目&#xff0c;需要到虚拟机中部署环境&#xff0c;安装完之后&#xff0c;就开整自己的项目了。 可以过几天&#xff0c;发现本地网络贼卡&#xff0c;打开各网页慢的一批&#xff0c;一开始还以为是路由器的问题&#xff0c;反复折腾之后排…

HBuilder X启动微信开发工具报错的问题

今天通过HBuilder X启动微信开发工具&#xff0c;报了如下的错&#xff1a; [微信小程序开发者工具] [error] IDE service port disabled. To use CLI Call, please enter y to confirm enabling CLI capability, or manually open IDE -> Settings -> Security Settings…

Android Studio相关记录

目录Android Studio 便捷插件Android LogcatJava文件的类头模板Android Studio 使用遇到的问题解决方案org.jetbrains.annotations.NullableBuild 控制台编译输出中文乱码Terminal 使用 git 命令窗口git 命令窗口中文乱码Android Studio 便捷插件 Android Logcat 配置路径 Fi…

【VUE】六 路由和传值

目录 一、 路由和传值 二、案例 三、案例存在无法刷新问题 一、 路由和传值 当某个组件可以根据某些参数值的不同&#xff0c;展示不同效果时&#xff0c;需要用到动态路由。 例如&#xff1a;访问网站看到课程列表&#xff0c;点击某个课程&#xff0c;就可以跳转到课程详…

【c#】学习DATATABLE排序

c#实现Datatable排序Datatable排序结果图代码展示总结Datatable排序 结果图 原数据 倒序 去重 筛选行 代码展示 1、使用datatable视图对table进行排序 //倒序排序 dt.DefaultView.Sort “CreateTime desc”; dt dt.DefaultView.ToTable(); 如果想升序排序&#xff0c…

kafka入个门

名词 topic 表 partation 水平扩展 leader 主 follow备 produce生产 offset偏移量 消息队列的流派 什么是 MQ Message Queue&#xff08;MQ&#xff09;&#xff0c;消息队列中间件。很多人都说&#xff1a;MQ 通过将消息的发送和接收分离来实现应用程序的异步和解偶&#xf…

DASCTF X GFCTF 2022十月挑战赛 Web

from DASCTF X GFCTF 2022十月挑战赛 Web EasyPOP 就简单的php反序列化 源码 <?php highlight_file(__FILE__); error_reporting(0);class fine {private $cmd;private $content;public function __construct($cmd, $content){$this->cmd $cmd;$this->content …