论文精度系列之详解图神经网络

论文地址:A Gentle Introduction to Graph Neural Networks

翻译:图表就在我们身边;现实世界的对象通常根据它们与其他事物的连接来定义。一组对象以及它们之间的连接自然地表示为图形。十多年来,研究人员已经开发了对图数据进行操作的神经网络(称为图神经网络或GNN)。最近的发展提高了他们的能力和表现力。我们开始在抗菌发现、物理模拟、假新闻检测、交通预测和推荐系统等领域看到实际应用。

本段介绍了文章的架构主要分为:

  • 1、什么数据可以表示为一张图
  • 2、图与其他数据的不同之处
  • 3、构建一个GNN
  • 4、提供一个GNNplayground

用来了解GNN模型每个组件如何对其做出的预测做出贡献

作者将图像视为带有图像通道的矩形网格,将它们视为数组。 另一种将图像视为具有规则结构的图形,其中每个像素代表一个节点,并通过边缘连接到相邻像素。每个无边界像素正好有8个邻居,存储在每个节点上的信息是一个三维向量,表示像素的RGB值。

后面还有文本作为图形、分子作为图形、社交网络作为图表

 这里作者说明在图上有三种常规类型的预测任务:图级、节点级与边级

图形级任务:主要目标是预测整个图的属性。

节点级任务:主要是预测图形中每个节点的身份或角色

边缘级任务:主要是对于图像场景的理解

 这段说明利用神经网络来解决不同的图任务时,首要问题是如何表示与神经网络兼容的图

这里说明图表中最多有四类信息:节点、边、全局上下文与连通性

其中图形的连通性是最难的最复杂的,因为使用邻接矩阵,很容易发生张量而且会导致邻接矩阵非常稀疏,空间效率低下。另外就是,并不能保证这些不同的矩阵会在深度神经网络中产生相同的结果。

规范化存储图的不同信息:

这段主要解释了GNN(Graph Neural Networks)是是对图的所有属性(节点、边、全局上下文)的  可优化转换,它保持了图对称性(排列不变性)。同时GNN的输入是一个图,输出也是一个图。

GNN会对节点、边等进行变换,但不会改变图形的连接性

一个简单的GNN模型:

 输入一个图进入一系列的GNN层,输出一个保持了整个图结构的输出但是里面所有的属性已经发生的变换,最后根据你要对哪个属性做预测添加合适的输出层但如果确缺失信息的话加入合适的汇聚层。

 这段说明我们通过GNN层中使用汇聚(池化)来做出更复杂的预测,可以使用信息传递来做到.

信息传递的三个步骤:

  • 1、对于图中的每个节点,收集所有相邻节点嵌入(或消息),即g功能如上所述。
  • 2、通过聚合函数(如 sum)聚合所有消息。
  • 3、所有汇集的消息都通过更新函数传递,通常是学习的神经网络

 这里作者说我们描述的网络存在一个缺陷:图中彼此相距很远的节点可能永远无法有效地相互传递信息,即使我们应用了多次消息传递。

为了解决上述问题,这里加入了一个主节点(这个点可以跟所有的点、边相连),是一个虚拟的点。

对于一个节点,我们可以考虑来自相邻节点、连接边缘和全局信息的信息。为了在所有这些可能的信息源上设置新节点嵌入的条件,我们可以简单地将它们连接起来。此外,我们还可以通过线性映射将它们映射到同一空间并添加它们或应用特征调制层,这可以被认为是一种特征化注意力机制。

GNN 中的采样图和批处理

训练神经网络的常见做法是使用根据训练数据(小批次)的随机常量大小(批量大小)子集计算的梯度来更新网络参数。由于相邻的节点和边的数量存在可变性,这种做法对图提出了挑战,这意味着我们不能有一个恒定的批量大小。使用图进行批处理的主要思想是创建保留较大图的基本属性的子图。此图形采样操作高度依赖于上下文,并涉及从图形中子选择节点和边。这些操作在某些上下文(引文网络)中可能有意义,而在另一些上下文中,这些操作可能太强(分子,其中子图只是表示一个新的,更小的分子)。如何对图表进行采样是一个悬而未决的研究问题。如果我们关心在邻域级别保留结构,一种方法是随机抽取统一数量的节点,即我们的节点集然后将距离 k 的相邻节点添加到节点集附近,包括它们的边。每个邻域都可以被视为一个单独的图,并且可以在这些子图的批次上训练GNN。可以屏蔽损失以仅考虑节点集,因为所有相邻节点都具有不完整的邻域。 更有效的策略可能是首先随机抽样单个节点,将其邻域扩展到距离 k,然后在扩展集中选择另一个节点。一旦构造了一定数量的节点、边或子图,这些操作就可以终止。 如果上下文允许,我们可以通过选择一个初始节点集,然后对恒定数量的节点进行子采样(例如随机,或通过随机游走或 Metropolis 算法)来构建恒定大小的邻域。

图注意力网络

在图形属性之间传递信息的另一种方式是通过注意力(权重取决于两个顶点向量的关系,不再是顶点的位置)。例如,当我们考虑节点及其 1 度相邻节点的总和聚合时,我们也可以考虑使用加权和。那么的挑战是以排列不变的方式关联权重。

结论:

先介绍了一下什么是图,图的属性应该用向量来表示,现实中的数据怎么表示为图,怎么样对图(点、边、全局)上做预测。简单说明了GNN的定义,假设属性有缺失做聚合操作,把边的属性或者点的属性拿过来。然后说明了真正意义上的GNN 。就是在每一层里面通过汇聚把整个图的信息传递过来。接下来就是对实验的可视化,进行漂亮的可视化。

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

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

相关文章

CentOS 7.9 安装 mydumper(RPM方式)

链接:https://pan.baidu.com/s/1sGhtiKPOmJw1xj0zv-djkA?pwdtaoz 码:taoz 开始正文啦: rpm -ivh mydumper-0.14.5-3-zstd.el7.x86_64.rpm 问题如下: 解决: yum -y install epel-release yum install -y libzstd …

python 小案例

要使用Django开发一个抽奖活动的后台,需要进行以下步骤: 安装Django:首先确保已经安装了Python和pip,然后使用pip安装Django库: pip install django 创建Django项目:在命令行中执行以下命令创建一个新的Dja…

zabbix安装Grafana

一、web访问 https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.1-1.x86_64.rpm [rootserver ~] yum localinstall -y grafana-4.6.1-1.x86_64.rpm //yum方式安装本地rpm并自动解决依赖关系 [rootserver ~] grafana-cli plugins install alexanderzob…

elementUI 表格滚动分页加载请求数据

需求:elementui Table表格滚动分页(不使用分页组件),请求数据。 1、自定义加载更多数据的指令,在utils文件夹中创建 loadMore.js /*** 加载更多数据的指令*/ export default {install(Vue) {Vue.mixin({directives: …

利用 trait 实现多态

我在书上看到基于 std::io::Write 的示例,它是一个 trait 类型,内部声明了一些方法。和 go 语言不同,rust 中类型必须明确实现 trait 类型,而 go 语言属于 duck 模式。 std::io::Write下面的例子中调用 write_all 方式来演示&…

【SpringBoot】SpringBoot JPA 基础操作(CURD)

SpringData JPA 基本介绍 Spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。 同时提供了很多除了CRUD之外的功能,如分页…

国标GB28181视频监控平台EasyGBS无法播放,抓包返回ICMP的排查过程

国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台,可实现的视频功能包括:实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。国标GB28181视频监控平台部署简单、可拓展性强,支持将…

ZQC的游戏 题解

前言 这题题意描述不是很清楚啊,所以我找了个有权限的人把题面改了改,应该还是比较清楚了。 感觉这道题挺妙的,就来写一篇题解。 思路 首先,根据贪心思想,我们会将 1 1 1 号点半径以内能吃的都吃了,假…

【JavaScript】正则表达式常用元字符使用方法(实例)

目录 一、基本元字符1.\d2.\D3.\s4.\S5.\w6.\W7..8.\ 二、边界符1.^2.$3.用 ^ 和 $ 限制开头和结尾 三、限定符1.*2.3.?4.{n}5.{n,}6.{n,m} 四、特殊符号1.()2.|3.[] 五、exec()函数实例 一、基本元字符 1.\d //表示至少包含一位数字(0-9)var reg /\d/;console.lo…

1 请使用js、css、html技术实现以下页面,表格内容根据查询条件动态变化。

1.1 创建css文件,用于编辑style 注意: 1.背景颜色用ppt的取色器来获取: 先点击ppt的形状轮廓,然后点击取色器,吸颜色,然后再点击形状轮廓的其他轮廓颜色,即可获取到对应颜色。 2.表格间的灰色线…

【Spring Boot】Web开发 — 数据验证

Web开发 — 数据验证 对于应用系统而言,任何客户端传入的数据都不是绝对安全有效的,这就要求我们在服务端接收到数据时也对数据的有效性进行验证,以确保传入的数据安全正确。接下来介绍Spring Boot是如何实现数据验证的。 1.Hibernate Vali…

生态合作丨MemFireDB通过麒麟软件NeoCertify认证

近日,敏博科技“MemFireDB分布式关系数据库系统V2.8”与麒麟软件“银河麒麟高级服务器操作系统V10” 完成兼容性测试,获得麒麟软件 NeoCertify 认证证书。测试结果显示,MemFireDB数据库在国产操作系统上运行稳定,产品已经达到通用…

RocketMQ集成Springboot --Chapter4

RocketMQ实现延时消费 rocketMQTemplate.syncSend(“helloTopicBoot”,msg,3000,3); 3000为等待消息回传时间,如果3000毫秒还没有回传即发送错误信息, 3为延时消费的时间 /***生产者*发送延时消息*/Testpublic void sendDelayMsg(){Message msg Message…

Mysql-DQL查询

目录 1.DQL 基本语法 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 1.DQL 数据查询语言,用来查询数据库中表的记录。 查询关键字:select 基本语法 SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字…

android studio(火烈鸟版本)使用protobuf

一、简介 Protobuf 全称:Protocol Buffers,是 Google 推出的一种与平台无关、语言无关、可扩展的轻便高效的序列化数据存储格式,类似于我们常用的 xml 和 json。 二、特点 Protobuf 用两个字总结:小,快。用 Protobu…

十大排序算法详解

目录 1. 冒泡排序 a. 思路 b. code 2. 插入排序 a. 思路 b. code 3. 希尔排序【插入排序plus】 a. 思路 b. code 4. 选择排序 a. 思路 b. code 5. 基数排序 a. 前置知识 b. 思路 c. code 6. 计数排序 a. 思路 b. code 7. 桶排序(计数排序plus &…

Could not resolve placeholder

本质原因:项目启动未扫描到该配置,一般来说是配置不对 检查方向 1、检查编译后的target包里是否有该配置所在的文件 如果不在就clear,重新编译启动再去检查 2、检查启动的环境是否匹配 编译后的target包下的配置文件名称是否跟启动类的环境…

【如何训练一个中译英翻译器】LSTM机器翻译模型部署之ncnn(python)(四)

ncnn:https://github.com/Tencent/ncnn 1、.h5模型保存为TFSaveModel格式 import tensorflow as tf from keras.models import load_model# 加载Keras模型 model load_model(encoder_model.h5)# 转换为SavedModel类型 tf.saved_model.save(model, TFSaveModel)2、…

Linux--assert函数在debug和release下的区别

在debug模式下断言才有效,而在release版本下,断言就无效了 在debug模式下,assert函数用于检查条件是否为真,如果条件为假,则会输出相应的错误信息,并停止程序执行。而在release模式下,assert函数…

redis的常用命令和数据结构

目录 redis的基本特征 Redis操作命令行 redis的数据结构 Redis的基本特征 键值型,value支持多种不同的数据结构,功能丰富 单线程,每个命令具备原子性 低延迟,速快(基于内存,IO多路复用,良好…