图神经网络入门基础

什么是图

要想解释图的概念,就要从著名的七桥问题开始:一个人如何不重复,不遗漏地走完七座桥,并最终回到起点。大数学家欧拉在回答七桥问题时,开创了图论。

 

b7780c039e88500aa91580a027c1a831.png

由上图可见,图(Graph)是由节点(Vertices/Nodes)和边(Edges)构成的。

G=(V,E)

图的分类:

 

ae80e8c2d8be4cf1ee015ea2f3fa4913.png

同构图与异构图的举例:

 

6c4943f2ff0c57fca14c0f6214c583ae.png

左侧的同构图中,只有一种节点类型,右侧的异构图中则有多种节点类型,且节点之间存在多种边关系。

图的度和邻居:

 

e5352fa4da3cfb781caf983fcc7a0002.png

对于无向图而言,度就是与之相连的节点个数,邻居就是与之相连的节点集合;对于有向图而言,因为有了方向的限制,度分为出度和入度,邻居分为前继邻居和后继邻居。

图的表示:

邻接矩阵

 

0fc507e6de51d5bc84c193bc09619287.png

邻接表

 

c7461c0077c9afc8ee0aba79a124edb8.png

结构特征,边特征,节点特征:

深度学习是基于特征的,同样,图学习也是基于特征的,一张图除了具有结构特征,还具有边特征,和点特征。图学习的本质就是挖掘这些特征。

 

4f83013a0d1d8abca439f5556b909771.png

例如,对于下面这张图而言,图的节点是用户和文章,用户节点可以有性别,年龄,职业等特征;文章节点可以有类别,词向量等特征。边可以有点击频率和阅读时长等特征,图学习可以充分利用这些特征信息。

 

132930c7c133b84f0e3ceb325cc2033c.png

图的应用

图是一种描述复杂事物的语言,那图有什么实际的应用呢?在我们的实际生活中存在很多复杂的事物,这些事物都可以通过图来表示。

 

5a6d901ee82d1dee5ffa17c6157db45c.png

例如通过各种社交App所形成的各种社交网络,社交网络中的人就可以抽象成图的节点,人与人之间的关系可以抽象成节点之间的边。

 

2ed9aea8343e81ddfafc13607158d983.png

我们每天都会冲浪的互联网也是一个图,每个网页就是图的节点,网页与网页之间的超链接关系就构成了图的边。

 

7626d6b7b112fa735249877901707782.png

我们目前使用的各种购物App都有推荐功能,这种推荐系统背后其实也是一张图。

节点:用户和商品,

边:用户与商品之间的购买,点击等关系。

 

4dd20dbf427155fe6b228928096716ac.png

学过化学的人都知道,化学分子是由单个或者多个原子构成的,所以,每个化学分子也可以抽象成一张图,

节点:原子,

边:原子之间的相互作用力,也称为化学键。

什么是图学习

前面已经讲了什么是图,以及图在实际生活中的应用,接下来看一下什么是图学习。

在以往的深度学习中,使用的训练数据有语音,文本,和图像,他们一般都是结构性数据,有整齐规则的数据结构,例如,文本是一维的文字排列,语音是一维音频信号排列,图像是二维像素排列。

然而,在现实生活中还存在大量不规则的数据,很难直接进行建模。

 

7af98d0d3905dca10aa9930b818c1799.png

 

ace69ce1fb647511b6e22802b94ee0aa.png

针对上面这些错综复杂的数据,传统的深度学习模型很难处理,因此出现了图学习,图学习也属于深度学习的范畴,但他们专门针对这种复杂的图数据结构。

一般的深度学习:善于发现有规则数据中潜在的模式,但很难处理不规则数据。

 

5feae608b06b4f41250915bc575c751e.png

图学习:可以很方便地处理不规则数据(图),充分利用图结构信息。

 

7d4d392508f02ac148db6d904a0f161f.png

图学习的应用

深度学习可以用来对一张图片进行分类,对图像中的目标进行识别和分割,对语音进行翻译,对商品进行有效推荐,对于给定下面这张图,图学习可以用来做什么?

 

6f3d8cb75c03197dd34fc46b2203c8ba.png

先说结论,图学习对于上述图结构可以进行三类任务。

 

e10f7f62064d04f88bbdc88043bfe08f.png

第一类就是节点级别的任务,图学习模型可以给出某一个节点的属性或者类别。

 

12b483f083a314a1b0241fe02e99e82f.png

第二类就是边级别的任务,图学习模型可以预测边的权值或者边是否存在。

 

3055103afe4956e7a37c9de75b215f0b.png

第三类就是图级别的任务,可以通过图学习模型预测整张图的类别,或者比较两张图的相似性。

下面我们分别举一些实际应用的例子:

节点级别任务-金融诈骗检测:

 

3dc7ccd69847fda97770aa8f59df66f3.png

图中的节点是用户和商家,用户和商家都有各自的特征,除了特征还有与他人的交互,也就是边关系,传统的方法是通过用户和商家的特征来训练一个分类网络,通过图学习,我们不仅可以学习到节点的特征,还可以学习到节点之间的交互关系,以及图结构的关系,以此来进行分类,从而找到金融诈骗分子。

 

604f72f5635d2b1a61920802ccd19dff.png

节点级别任务-目标检测:

目标检测是自动驾驶领域中一个非常重要的任务,以往基于视觉模型的图像分割以及基于点云的分割占主导地位,除了传统深度学习模型,图模型也可以从3D点云中进行目标检测。

 

6ba51a552a9af2cb9e2d4ba40d14771e.png

首先需要把点云构造成图结构,点云中的点可以构造成图节点,那如何构造边呢?我们可以计算点与点之间的距离,设定一个距离阈值,如果点与点之间的距离小于这个阈值就假设点与点之间存在边,否则就不存在边。

图构建完成后就可以把图输入到图学习模型中,模型预测每个点所属的目标对象,以及3D边界框。

 

31db5f13aae11da474796d2845463892.png

边级别的任务-推荐系统:

前面已经说过,推荐系统可以表示成图,那么,推荐过程本质上就是边预测的过程。

 

d379b9ec3f927754a45bb7c0e1f72362.png

推荐系统除了可以使用图模型外,还可以通过线性代数,概率与统计,深度神经网络来完成,感兴趣的同学可以看一下我之前的文章。

线性代数本质(续七):线性代数在推荐系统中的应用

在新闻推荐中,假设已经有了用户历史点击数据,要预测用户B的点击行为,这就是一个边预测的任务。

 

fdb015bc9f8824c1547032bb5432d25f.png

通过用户历史点击数据构造图,将图输入到图学习模型中,得到用户/内容的向量空间,利用向量空间进行后续任务。

图级别的任务-气味识别:

假设我们现在有两种花,需要通过鼻子闻气味的方式进行种类的识别,如果鼻子搞不定,那我们就可以通过图学习来完成。

 

620b6ba7726b681ebaa536eca6371a09.png

这是如何做到的?花可以在空气中释放分子,根据化学知识,不同分子就代表不同的气味,可以将分子建模成图数据结构,就可以将问题转换成对图的分类问题。

 

0a6f2f2fd55b68e068a71304857f1ade.png

 

fefe96542b3cc86bf163ba5284d3f1ca.png

上面只列出了图学习应用的一部分,实际应用可不止这些。

 

c66bdc050fb9afa0abb0744eda864b06.png

图学习是如何做的

在以往的视觉任务中,首先通过卷积神经网络提取特征,然后将特征输入到全连接层进行分类,或者全卷积网络实现目标i检测和图像分割,那么,图学习模型是如何实现图节点,边,以及整个图的分类任务的呢?

图游走算法:

 

e62ca84a08219f6d987fd71b9c3a37a1.png

首先设定游走的最大长度,然后随机选择一点,沿着边随机游走,这样就会生成多个节点序列,接下来针对这些序列进行图表示学习,然后进行接下来的操作。

图神经网络:

图神经网络算法一般通过消息传递进行实现,消息传递就是把邻居节点的信息发送到自身,将这些信息聚合起来,然后根据聚合信息来更新自身的表示。

 

c3502b465204c63a64d1a6453539d867.png

除了上述两种方法,还有其他图学习算法,后续文章我们会详细介绍,这里先给大家列出一个知识脑图。

 

cb0e181ed7f053649575d545a8479aae.png

相比其他深度学习模型,图学习还是比较难的,为了简化学习难度,给大家介绍一个强大的图学习框架:PGL(Paddle Graph Learning)

 

1d575afec5bf5f6247886ec717782d3e.png

 

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

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

相关文章

3.读取字符串【2023.11.25】

1.问题描述 请使用 input 函数读取一串字符串,然后将其输出。 2.解决思路 输入一行字符串。 将读入的变量输出。 3.代码实现 strinput("请输入一个字符串") print(str)4.运行结果

计数问题+约瑟夫问题(map)

目录 一、计数问题 二、约瑟夫问题 一、计数问题 #include<iostream> #include<map> using namespace std; int main() {int n,x;cin>>n>>x;map<int,int>m;for(int i1;i<n;i){if(i>1 && i<10){m[i];}else{int temp i;while (…

Spring Security 6.1.x 系列(5)—— Servlet 认证体系结构介绍

一、前言 本章主要学习Spring Security中基于Servlet 的认证体系结构&#xff0c;为后续认证执行流程源码分析打好基础。 二、身份认证机制 Spring Security提供个多种认证方式登录系统&#xff0c;包括&#xff1a; Username and Password&#xff1a;使用用户名/密码 方式…

openpnp - 丝杠安装调整的总结

文章目录 openpnp - 丝杠安装调整的总结概述笔记发现的问题 - X轴有回差发现的问题 - 丝杠两边的轴承座中心有高差(不同轴)备注END openpnp - 丝杠安装调整的总结 概述 设备定制回来后, 丝杠没敢动(开始是小白, 也没发现丝杠的相关问题. 因为看到同学自己安装丝杠那么痛苦, 最…

【Docker】Docker 仓库管理和Docker Dockerfile

作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

实验题【网关设置+VRRP+静态路由+OSPF】(H3C模拟器)

嘿&#xff0c;这里是目录&#xff01; ⭐ H3C模拟器资源链接1. 实验示意图2. 要求和考核目标3. 当前配置3.1 PC1、PC2、PC3、PC4和PC5配置3.2 SW配置3.2.1 SW2配置3.2.2 SW3配置3.2.3 SW4配置3.2.4 SW1配置 3.2. R配置3.2.1 R1配置3.2.2 R2配置 ⭐ H3C模拟器资源链接 H3C网络…

YOLOv8改进 | 2023 | MPDIoU、InnerMPDIoU助力细节涨点

论文地址&#xff1a;官方论文地址点击即可跳转 代码地址&#xff1a;官方并没有开源的该损失的函数的代码&#xff0c;我根据文章内容进行了复现代码块在第三章 一、本文介绍 本文为读者详细介绍了YOLOv8模型的最新改进&#xff0c;带来的改进机制是最新的损失函数MPDIoU和融…

二十一、数组(6)

本章概要 数组排序Arrays.sort的使用并行排序binarySearch二分查找parallelPrefix并行前缀 数组排序 根据对象的实际类型执行比较排序。一种方法是为不同的类型编写对应的排序方法&#xff0c;但是这样的代码不能复用。 编程设计的一个主要目标是“将易变的元素与稳定的元素…

Maven项目下详细的SSM整合流程

文章目录 &#x1f389;SSM整合流程一、两个容器整合✨ 1、先准备好数据库config.properties连接、mybatis-config.xml&#x1f38a; 2、容器一&#xff1a;优先配置spring.xml文件&#x1f38a; 3、容器二&#xff1a;配置springMVC.xml文件&#x1f38a; 4、Tomcat整合spring…

张弛语言课,战争电影配音声音细致声音来复原战场

为战争片进行声音配音是一项挑战性的工作&#xff0c;它要求精确再现战场的紧张感和复杂情绪。配音人员和声音设计团队必须创造出真实的战争声景&#xff0c;从战斗的轰鸣声到士兵的呐喊&#xff0c;这些声音元素都需细致打造&#xff0c;以传递战争的惨烈、英勇和人性的复杂。…

RESTful

RestFul API 何为 API&#xff1f; API&#xff08;Application Programming Interface&#xff09; 翻译过来是应用程序编程接口的意思。 我们在进行后端开发的时候&#xff0c;主要的工作就是为前端或者其他后端服务提供 API 比如查询用户数据的 API 。 但是&#xff0c; …