图神经网络简介

news2024/11/25 18:44:26

本篇文章是我在2022年阅读完distill上一篇文章"A Gentle Introduction to Graph Neural Networks"后自己的一些心得。

目录

一、不同类型的数据如何以图的形式保存

二、图结构可以处理的问题

三、图机器学习的挑战

四、图神经网络

一、不同类型的数据如何以图的形式保存

1. 用图来表示图像

​ 图像是具有色彩通道的矩形网格,它通常由长、宽以及色彩通道数三部分组成。图像也可以看作是一个规则的图,其中每个像素点(pixel)表示为一个节点,每个节点有一个3维的向量来表示该像素点的RGB像素值。另外,如下图所示,每个节点与它相邻的节点之间有一条边相连,每个非边界的节点都有8个节点来与其相连。

2.用图来表示文本

​ 我们可以将文本以每个字符、每个单词的形式划分为多个切片,然后用多个切片作为一个序列来表示文本。因此可以用有向图来表示这个文本,每一个切片作为一个节点,并且在它与它后面的一个节点连接一条有向边。下图所示为一段文本以图表示的邻接矩阵。

当然,以这种方式来表示图和文本具有很大的冗余性,比如图的邻接矩阵是一个对称矩阵,而文本的矩阵每个节点至多只有一条有向边连接到它和一条边由它连出。而且我认为图神经网络目前最大的用处还是用来处理图数据,对于cv和nlp领域只能说是可以处理,但是处理效果还不是很好

3.用图来表示分子和社交网络

图很适合用来表示分子和社交网络,因为分子以及社交网络,他们都具有大小不固定,邻居数量不固定等特点。借助图来表示分子和社交网络,我们可以利用处理这些图来进行一些分子的毒性预测、人物社交关系预测等任务。下图是分子和社交网络用图表示的两个例子。

二、图结构可以处理的问题

1. 图水平的任务(Graph-level task)

​ 在图水平的任务中,我们的目标是预测一张完整的图。在上文已经提到过,一个分子可以用一张图来表示,我们可以通过分子的图结构来预测分子的气味,或者是否能与疾病中的受体相结合。

2.节点水平的任务(Node-level task)

​ 在节点水平的任务中,我们的任务是预测图中的某些节点。一个经典的节点预测问题是扎克的空手道俱乐部。这个数据集是一个单一的社交网络,其中每个节点表示单个的空手道练习者,边表示他们之间相互认识并且有互动。在某一天Hi教练和John管理员发生了分歧,所有的空手道练习者需要选择支持的一方。这个预测问题就是分类每一个节点,也就是空手道练习者会支持教练或者管理员的哪一方,这个就与节点到教练和管理员之间的边联系程度高度相关。

3.边水平的任务(Edge-level task)

​ 在边水平的任务中,我们的任务是预测边的属性。其中一个例子就是图像场景预测。在图像中,节点用来表示图像中的每一个对象,例如不同的人或动物等。我们希望预测这些节点对中边的值为多少来表示对象与对象之间的关系,如下图所示。

三、图机器学习的挑战

1.很难表示图的连通性

​ 图中的连通性很难表示,一个直观的想法是用邻接矩阵来表示图的连通性,但是这应用到机器学习中是不现实的,因为在数据集中,每一个图的节点数量不是固定的,也就是说每个数据的邻接矩阵大小不定。除此之外,在大型的图网络中,节点数量可能有几百万甚至几千万,这就导致图的邻接矩阵非常大,根本无法直接扔到网络中去进行运算。

2.节点的置换不变性

​ 对于图像来说,每一个像素的位置是确定的。而图中的节点并没有顺序一说,因此许多不同的邻接矩阵具有相同的连通性他们可以表示为同一张图,这些邻接矩阵进入图神经网络后应该有相同的表示,其中一个例子如下所示,下面的邻接矩阵都表示上面同一个图。

四、图神经网络(GNN)

​ 图的描述是一种以排列不变的矩阵格式,因此GNN要保留图的对称性(排列不变性)来对图的所有属性(节点、边、全局上下文)来进行可优化变换。GNN采用了图输入、图输出的方式,将信息存储在节点、边或全局上下文中,通过改变这些信息的嵌入来进行一些相关的操作。

1.简单的GNN

最简单的图神经网络首先是将节点、边和全局表示为一个向量(图嵌入),然后在每一个维度都使用单独的多层感知器(MLP)来进行训练,从而更新每一个属性的嵌入,如下图所示。

2.利用简单的GNN进行预测

二分类情况

​ 如果只是对节点进行二分类任务,并且图中每一个节点都有对应的信息,那很容易可以对于每一个节点的嵌入应用线性分类器进行分类,如下图所示。

​ 但是有时候信息可能存储在边中,但仍要对节点进行划分,这时候就需要将边的信息收集提供给节点,一个简单的方法是用一个求和运算来聚集边的信息,对于每一个节点,将其连接的边的信息以及本身的信息进行求和,从而作为节点的表示。

​ 如果我们只有节点特征,但是需要对全局属性进行分类,那么我们可以将所有节点的属性收集在一起并进行聚合,这一步类似于CNN的全局平均池化层。

​ 在这个简单的GNN中,我们对于每一个属性都是独立处理的,并没有利用图的连通性,只有在汇集信息进行预测的时候才使用了连通性

3.添加全局表达

​ 到目前为止所描述的网络有一个缺陷,即使我们有多次应用消息传递,图中彼此远离的节点可能永远都无法互相传递信息,对于一个节点,如果有k层,那么消息最多传递K步。这种问题的一个解决方法是使用图的全局表示(U),它是由一个图嵌入向量组成,它连接到网络中的所有其他节点和边,可以充当他们之间传递信息的桥梁,每次更新节点属性时,将全局信息也聚集到节点属性中进行更新,就可以获得更好的效果,如下图所示。

4.图神经网络参数的影响

​ 上图横坐标表示参数个数,纵坐标表示测试精度,可以看到,随着参数的增多,测试精度也在整体增高。但与此同时也可以看到,即使拥有少量的参数,也可以找到一个具有高性能的模型,这取决于不同图属性进行图嵌入时的图维度选择。

​ 我们可以注意到,具有较高维度的模型往往具有更好的平均值和下限性能,但对于最大值没有发现相同的趋势。一些性能最好的模型可以用于较小的尺寸。由于更高的维度也将涉及更多的参数,因此这些观察结果与前面的数字一致。

5.图采样

​ 训练神经网络常用的一种方法就是将训练数据划分为多个小批量,进行批量梯度更新。由于彼此相邻的节点和边的数量变化,这一实践对图形提出了挑战,这意味着我们不能拥有恒定的批量大小。

​ 如何对图表进行采样是一个开放的研究问题。如果我们关心在邻域级别上保留结构,一种方法是随机抽取统一数量的节点,即我们的节点集。然后添加与节点集相邻的距离为k的相邻节点,包括它们的边。每个邻域可以被认为是一个单独的图,GNN可以在这些子图的批次上训练。由于所有相邻节点都有不完整的邻域,因此可以屏蔽损失以仅考虑节点集。一种更有效的策略可能是首先随机采样单个节点,将其邻域扩展到距离k,然后在扩展集中选择另一个节点。一旦构建了一定数量的节点、边或子图,这些操作就可以终止。如果上下文允许,我们可以通过选择一个初始节点集,然后对恒定数量的节点进行子采样(例如,随机或通过随机漫游或Metropolis算法)来构建恒定大小的邻域。

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

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

相关文章

【智能优化算法-算术算法】基于算术优化算法 (MAOA)求解多目标优化问题附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

Java并发编程—java中守护线程和用户线程

一、概念: ​ 守护线程:是一种特殊的线程,在后台默默地完成一些系统性的服务,比如垃圾回收线程 ​ 用户线程:是系统的工作线程,它会完成这个程序需要完成的业务操作;我们使用 Thread类创建的线…

求先序遍历序列中第(1<=k<=二叉树中结点个数)个结点的值

本题本质上就是一个遍历算法的实现,只不过用一个全局变量的来记录访问的序号,求其他遍历序列的第k个结点也采用相似的方法。二叉树的遍历算法可以引申出大量的算法题,因此考生务必熟练掌握二叉树的遍历算法。 C语言代码: //本题本…

mapbox地图动画一键飞行

最近,Mapbox GL JS 从 v2.9 开始支持将地图显示为 3D 地球。 话不多说,马上看看效果怎么样: mapbox地图动画我们通过设置投影属性projection:globe,即可将地图更改为地球 const map new mapboxgl.Map({container: m…

mybatis实战:二、mybatis xml 方式的基本用法

注释都在代码里,最好复制了再看! 1.创建表 CREATE TABLE sys_user( id BIGINT NOT NULL AUTO_INCREMENT COMMENT 用户 ID, user_name VARCHAR(50) COMMENT 用户名, user_password VARCHAR(50) COMMENT 密码, user_email VARCHAR(50) COMMENT 邮箱, user…

manjaro 记录 1 安装流程

manjaro 记录 1 安装流程 初manjaro 记录 1 安装流程下载好镜像镜像写入U盘重启电脑,进入U盘安装进入界面:找到 launch installer 进行安装安装流程设置语言设置位置与时区设置键盘磁盘分区设置用户与管理员密码安装初 希望能写一些简单的教程和案例分享…

Flink JobManager 内存占用大 问题

Flink JobManager 内存占用大问题 问题描述 当在 本地启动一个 flink 简单的 job 时候,发现出现了 heap outMemeory 问题, 然后就不假思索的 调整了 jvm 的 heap -Xms1000m -Xmx16000m 参数,就可以正常的启动了。 通过 jvisualvm 连接上 这…

实验七 循环神经网络(3)LSTM的记忆能力实验

目录6.3 LSTM的记忆能力实验6.3.1 模型构建6.3.1.1 LSTM层6.3.1.2 模型汇总6.3.2 模型训练6.3.2.1 训练指定长度的数字预测模型6.3.2.2 多组训练6.3.2.3 损失曲线展示6.3.3 模型评价6.3.3.1 在测试集上进行模型评价6.3.3.2 模型在不同长度的数据集上的准确率变化图6.3.3.3 LSTM…

robfig/cron-go cron定时任务库架构剖析

Cron深度解析 思想 对于cron 这个三方库来说,他可以说是做两件事,其一是:解析cron string,生成一个定时器,达到循环时间发送信号。其二是核心(引擎):用以执行,判断&…

Spring基础篇:Spring简介

第一章:Spring简介 SpringIOC工厂是Spring所有特性的基础,Spring所有的特性都是基于IOC控制反转特性而来的。 当今微服务已经成为主流,微服务依赖于SpringBoot和SpringCloud,而SpringBoot和SpringCloud是衍生于Spring&#xff0c…

贺利坚汇编课程笔记2 访问寄存器和内存

贺利坚汇编课程笔记2 访问寄存器和内存 文章目录贺利坚汇编课程笔记2 访问寄存器和内存0201 寄存器及数据存储CPU的组成寄存器是CPU内部的信息存储单元通用寄存器--以AX为例“字”在寄存器中的存储0202 mov 和 add指令0203 确定物理地址的方法物理地址8086CPU给出物理地址的方法…

pytorch模型网页部署——Flask

一、Flask用法 Flask是python的轻量级web框架,可用来做简单的模型部署。Flask的基本用法如下: step1:定义Flask类的对象,即创建一个基于Flask的服务器 step2:定义公开的路由及路由对应的调用函数 step3&#xff1a…

分享新零售系统商城小程序开发制作功能介绍_商城小程序开发好处

小编主要专注于新零售系统开发商城的领域,新零售系统开发商业模式有哪些: ① 多种销售模式:邀请有奖、销售业绩奖、团队业绩奖、区域分红,分销模式等。 ② 团队协作功能:立即邀约分销模式,清楚搜索直属代…

大型ERP生产制造管理系统源码

🍓🍓【淘源码】:一个专业提供高品质源码免费下载的资源共享平台🍓🍓 👇👇👇以下是博主整理的淘源码网站内大家都比较感兴趣的一些源码,需要源码学习的朋友可以私信博主哦…

Exception | ShardingSphere | ShardingSphere引发的IndexOutOfBoundsException

ShardingSphere引发的IndexOutOfBoundsException一、异常二、 原因三、解决方法四、总结一、异常 ### Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 ### The error may exist in file [D:\JetBrains\Idea\workspace\zohe\bjxz\ru…

N-gram和NNLM语言模型

背景: one-hot:缺点:1.高维稀疏,2.不能体现句子中词的重要性,3.不能体现词与词之间的关系。 embedding:1.解决了高维稀疏 tf-idf:2.解决了one-hot中不能体现句子中词的重要性这一特点。 语言模型:3.解决不能…

【20221201】【每日一题】划分字母区间

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 思路&…

协程Part1-boost.Coroutine.md

首先,在计算机科学中 routine 被定义为一系列的操作,多个 routine 的执行形成一个父子关系,并且子 routine 一定会在父 routine 结束前结束,也就是一个个的函数执行和嵌套执行形成了父子关系。 coroutine 也是广义上的 routine&a…

网页JS自动化脚本(五)修改文字元素的内容和大小

今天的网页打开全是灰色的,顺便缅怀一下伟人,那么我我们今天定位换成按钮文字 window.onloadfunction(){var theElementdocument.querySelector("input[typesubmit]");theElement.value"爱我中华";theElement.style"font-size:25px"; }这一次的…

提分必练!中创教育PMP全真模拟题分享来喽

湖南中创教育每日五题分享来啦,“日日行,不怕千万里;常常做,不怕千万事。”,每日五题我们练起来! 1、一个项目正在实行敏捷方法,在迭代过程中,团队成员互相合作,解决了一…