图神经网络基础知识——初识图学习

一、简单的图基础

在上一篇文章中,我整理了数据结构与算法中的图,讲解了与图有关的基本概念。

这里再做一个小小的回顾。

什么是图?

在这里插入图片描述
七桥问题的定义是:一个步行者怎样才能不重复、不遗漏地一次走完七座桥,最后回到出发点。

当年,大数学家欧拉在解答七桥问题的同时,也开创了数学的一个新分支——图论。

可以毫不夸张地说,七桥图是我们真正意义上的第一张图。对七桥图上的各个地点和桥做一个抽象,我们可以将七桥图抽象为一个由点和边构成的图。

生活中的图

事实上,图是一种统一描述复杂事物的语言。在我们的实际生活中,存在着许许多多的复杂事物,而这些事物都可以抽象成图。

在这里插入图片描述

我们生活在一个巨大的社交网络里面,这个社交网络里有着许许多多的人,从而抽象为了图中的点;而人与人之间的各种联系,包括父母关系、朋友关系、以及其他各种复杂的联系,则构成了图中的边。

又比如,我们每天都在网上冲浪,而网页与网页之间存在着超链接关系,这也构成了一张图。

在这里插入图片描述
我们经常会在淘宝等购物APP上买东西,在界面上经常会有各种好物推荐。而其实,这个推荐系统本身也是一张图,在这张图里面,用户和商品都是图中的节点,而用户与商品的点击、浏览、购买等行为则构成了图中的边。

在化学这门学科上,绝大多数化学分子就是由单个或多个原子组成的,原子就是节点,而原子之间的相互作用力,也就是化学键,它构成了图中的边。

图的分类

在这里插入图片描述

  • 根据图的节点间是否有方向,可将图分为无向图与有向图
  • 根据图的边是否有权重,可以将图分为无权图和有权图
  • 根据图的边和点是否具有多种类型,可以将图分为同构图和异构图

同构图、异构图举例

在这里插入图片描述

图的度和邻居

在这里插入图片描述

  • 是图上一节点,其边的条数
  • 邻居指的是图上一节点的相邻节点

对于上面这两张图来说:

  1. 这张无向图有4个节点,每条边都是双向的,所以有8条边;
  • 拿节点4举例,其有3条边,所以度为3;
  • 3个节点与节点4相连,因此它有3个邻居节点。
  1. 这张有向图有4个节点,4条边
  • 拿节点4举例,它有3条边,所以度为3,根据箭头的指向,可以分为出度和入度,其中入度为1,出度为2
  • 有3个节点与节点4相连,其中,指向节点4的节点称为前继节点,反之则称为后继节点

图的表示

邻接矩阵

邻接矩阵是用0和1表示节点间关系的矩阵
在这里插入图片描述
可以看出,无向图的临界矩阵就是对称矩阵

邻接表

邻接表其实就是直接记录着每个节点的邻居信息
在这里插入图片描述

边集

在这里插入图片描述

图的特征

对于一张图来说,每个节点、每条边可能都有各自的特征
在这里插入图片描述

二、图学习初印象

图学习(Graph Learning)是深度学习中的一个子领域,强调处理的数据对象为图。

与一般深度学习的区别是图学习能够方便地处理不规则数据(树、图),同时也可以处理规则数据(如图像)。

在这里插入图片描述

图学习的应用

在这里插入图片描述

在这里插入图片描述
可以将基于图能做的任务进行一个分类。对于一张图:

  • 我们希望预测这个点的类别或者其他的特性,那么这就是一个节点级别的任务;
  • 又比如我们希望预测这条边的权值,或者预测这条边是否存在,等等,那么这就是一个边级别的任务;
  • 再比如,我们想要预测整张图的一个类别,或者想比较两张图之间的相似性等等,这就是一个图级别的任务了。

节点级别任务

金融诈骗检测

在这里插入图片描述
在建图的时候,它的节点是用户和商家,同时还包含了各自共有的信息作为节点。

其中,每个用户或者商家都有着各自的特征,也具备着某些相同的特征,同时也有着与他人的交互。传统方法通常是直接利用用户和商家的特征来训练一个分类网络,而没有利用节点与节点之间的交互,因此使用图学习,我们可以同时学习图结构以及节点特征,更好的进行分类,从而更好地找到金融诈骗分子。

自动驾驶

在这里插入图片描述
在这里插入图片描述
点云是通过激光扫描等来获得的点数据,而3D点云这个结构可以建模为图结构。

在点云中构建好图之后,将图结构和图特征经过这个叫 Point-GNN 的模型,从而预测出点云中每个点所对应的 object,也就是目标对象,同时要预测出对应目标的所在三维边界,也就是 bounding box。

由于预测对象是每个点,因此这是一个节点级别的任务。

边级别任务

推荐系统

在这里插入图片描述
推荐系统可以表示成图

比如,我们想要向用户推荐新闻,以左边这个图为例,我们已经知道了用户 ABC的历史点击行为,那么接下来,想要预测用户B会不会点击某条广告,其实就相当于预测这条边是否存在,因此这就是一个边预测的任务。

具体实现的时候,会把用户行为图关系通过图表示学习后,得到用户、商品或内容的向量表示;得到对应这些节点的 Embeddings 之后, 就可以利用这些 embeddings 来做各种的推荐任务。

图级别任务

气味识别

在这里插入图片描述
气味识别其实是一个非常典型的图识别任务了,而且对于实际生活也很有帮助。

假设这样的一个场景,我们有两种花,蒙住眼睛,只能用鼻子来分辨花。如果我们光靠鼻子搞不定,那么这时候就可以派图学习上场了。

在这里插入图片描述

图学习算法分类

在这里插入图片描述
这里分为了三大类:游走类算法图神经网络算法、以及知识图谱嵌入算法

因为知识图谱也是一种典型的图,因此把它也加入到了这个分类里面。

其中,图神经网络算法还可以进行更加具体的划分,比如分为卷积网络和递归网络,等等。

图游走类算法

在这里插入图片描述

图游走类算法就有点像我们去旅游一样,任意选择一个出发点,然后随机地选择下一个目的地,不断地走,直到我们累了。

通过不断地旅游,我们得到了多个序列,而游走类算法就是在得到这些序列之后,对它们应用图表示学习,再进行接下来的其他操作。

图神经网络算法

在这里插入图片描述
图神经网络算法相对来说则复杂一点,它的一种实现方式是消息传递

消息传递,其实质就是把当前节点的邻居发送到自身,将这些信息聚合后,再利用这些信息更新自身的表示。

三、PGL 图学习库初体验

1. 环境安装

# 安装 PaddlePaddle 框架
!pip install paddlepaddle==1.8.5

# 安装 PGL 学习库
!pip install pgl

2. 使用 PGL 来创建一张图

假设我们有下面的这一张图,其中包含了10个节点以及14条边。

我们的目的是,训练一个图模型,使得该图模型可以区分图上的黄色节点和绿色节点。我们可以使用以下代码来构图。

import pgl
from pgl import graph  # 导入 PGL 中的图模块
import paddle.fluid as fluid # 导入飞桨框架
import numpy as np

def build_graph<
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.郑先生_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值