图神经网络(GNN)入门学习笔记(直观且简单)

文章目录

    • 图的定义和表示
    • 可以使用图数据结构的问题
    • 将图结构用于机器学习的挑战
    • 最基本的图神经网络概述
    • 汇聚操作
    • 基于信息传递的改进图神经网络
    • 全局向量信息的利用

本篇文章参考发表于Distill上的图神经网络入门博客: A Gentle Introduction to Graph Neural Networks。同时,所有的图片也都来源于该博客。本文主要是记录本人自己的学习体会与心得,帮助其他初学者能够更快入门图神经网络而无需看冗长的英文原文。

图的定义和表示

在这里插入图片描述
图可以用三个符号进行表示:

  • 顶点集(V):图中的所有顶点构成一个顶点集;
  • 边集(E):图中的所有边构成一个边集;
  • 图整体(U):完整考虑一个图的所有顶点和边以及对应的拓扑结构,图的整体被称为U。

在计算机中,无论是顶点集、边集或者图整体都可以使用向量进行表示。顶点向量中的各个值表示顶点的属性;边向量中的各个值表示边的属性;图向量同理。

另外,一张图也可以使用离散数学中的邻接矩阵进行表示,具体内容可以参见离散数学课程教材。

很多现实中的问题,都可以把问题中的实体转化为图的顶点,把实体之间的关系转换为图中的边,从而使用图来表示该现实问题。

可以使用图数据结构的问题

可以使用图数据结构的问题可以分为三个类型,分别是图层面的问题、顶点层面的问题和边层面的问题。

  • 图层面的问题:找出含有两个环的图;
    在这里插入图片描述

  • 顶点层面的问题:将图中的所有顶点划分为两类;
    在这里插入图片描述

  • 边层面的问题:给图中的所有边判定类型。
    在这里插入图片描述

将图结构用于机器学习的挑战

将图结构应用于机器学习领域的最大挑战是如何表示图结构,使得其能够与搭建的神经网络兼容,并被计算机计算和处理。

图结构中包含有四类信息:顶点集信息、边集信息、图整体信息和连接性信息。前面三种类型的信息都可以通过向量或矩阵的方式进行表示,但是连接性信息的表示会更加麻烦。

表示连接性的最直观方法就是使用邻接矩阵,但是很多情况下邻接矩阵都是稀疏的,因此会无意义地占用非常大的存储空间。即使通过稀疏化的方式表示邻接矩阵也会有计算机难以处理的问题。

为此,可以通过邻接表的形式表示邻接矩阵。邻接表的大小与边的数量成正比,其中的每一个元素记录了哪两个顶点之间存在一条边。

在这里插入图片描述
下面将正式开始介绍图神经网络。

最基本的图神经网络概述

图神经网络本质上就是一个特用于图模型的神经网络。

图神经网络的基本思路如下:由于上面我们已经提到,图中除了连通性信息外,其他的三个属性(顶点集、边集和整体)都可以用能够代入神经网络进行计算的向量来进行表示,因此,我们对于三类属性,分别构造一个神经网络。

也就是说,一个神经网络以顶点集向量作为输入,一个神经网络以边集向量作为输入,另一个神经网络以整体向量作为输入。这样的三个网络组合在一起,就构成了图神经网络的一个层。多个图神经网络层叠加在一起,就构成了完整的图神经网络。

需要注意的有两点:首先,是每一个图神经网络层中的神经网络的输出形状都与输入形状相同,也就是说,输入的向量长度和输出的向量长度相同;其次,对于图的连通性,图神经网络不会对其进行修改,也就是说,一张图经过了图神经网络,其连通性不会发生改变:原来相连的两个顶点仍然相互连接。

面对分类任务,只需要在最后一层输出加上全连接层和softmax分类即可。基本原理也如下图所示:

在这里插入图片描述

汇聚操作

有时在实际问题中会遇到一些特殊的情况,使得无法同时获得顶点集的向量、边集的向量和整体的向量,这个时候,就可以使用汇聚的思想来补充生成当前没有的向量。下面将以缺失顶点集为例进行说明,其他情况可以类比推理。

当顶点集缺失时,每一个顶点连接了多条边,因此可以把每个顶点连接的多条边的向量进行叠加,最后再加上整体的向量,即可替代该顶点的向量。

在这里插入图片描述

基于信息传递的改进图神经网络

上面所提到的基本图神经网络存在一个问题,那就是没有利用图的连通性,从而损失了图中的一部分信息。

为了能够利用连通性,下面将给出一种基于信息传递的改进的图神经网络。

以顶点集为例。在改进的网络中,当一个顶点的向量需要准备待入顶点对应的神经网络进行更新时,并不是直接将该点的结果代入,而是将该顶点以及与该顶点直接相连的顶点的向量相加后进行代入,从而利用上之前未被利用的连通性信息。

边集的信息传递改进图神经网络原理类似。

全局向量信息的利用

之前的介绍中,我们只是说了全局向量是需要计算的以及其计算方法,但是并没有介绍其使用过程,下面将进行介绍。

全局向量可以抽象为一个虚拟的顶点(被称为master node),该顶点与图中的所有顶点相连,同时与图中的所有边相连(点如何与边相连?这是因为这个顶点是抽象的,也可以把这个虚拟顶点想象为一个又是顶点又是边的东西)。

基于上面介绍的信息传递的原理,每次该虚拟顶点在经过全局神经网络更新之前,需要叠加图中当前状态其他所有顶点和边的向量信息。通过这样的方式,就成功利用了图的全局信息。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为云hcip核心知识笔记(存储服务规划)

云上存储 : 云硬盘:基于分布式架构,可弹性扩展的虚拟块存储服务 注意事项 挂载云硬盘实例和云硬盘必须在同一区域,否则挂载失败文件存储服务:完全托管的共享文件存储 可以为多个实例实现共享访问,不同vpc中可以进行对…

python_PyQt5开发验证K线视觉想法工具V1.1 _增加标记类型_线段

目录 运行情况: 代码: 承接 【python_PyQt5开发验证K线视觉想法工具V1.0】 博文 https://blog.csdn.net/m0_37967652/article/details/131966298 运行情况: 添加线段数据在K线图中用线段绘制出来 代码: 1 线段标记的数据格式…

svn还原本地代码

svn代码还原 问题描述:在vscode中修改了代码,没有提交,而且不小心点击了svn更新,导致本地修改的最新代码被覆盖,因为没有提交,所以远程仓库中也没有刚才修改的代码记录 解决: 通过vscode的时间…

性能优化 - 前端性能监控和性能指标计算方式

性能优化 - 前端性能监控和性能指标计算方式 前言一. 性能指标介绍1.1 单一指标介绍1.2 指标计算① Redirect(重定向耗时)② AppCache(应用程序缓存的DNS解析)③ DNS(DNS解析耗时)④ TCP(TCP连接耗时)⑤ TTFB(请求响应耗时)⑥ Trans(内容传输耗时)⑦ DOM(DOM解析耗时) 1.3 FP(f…

安全测试国家标准解读——并发程序安全

本系列文章主要围绕《GB/T 38674—2020 信息安全技术 应用软件安全编程指南》进行讲解,该标准是2020年4月28日,由国家市场监督管理总局、国家标准化管理委员会发布,2020年11月01日开始实施。我们对该标准中一些常见的漏洞进行了梳理&#xff…

内核链表在用户程序中的移植和使用

基础知识 struct list_head {struct list_head *next, *prev; }; 初始化: #define LIST_HEAD_INIT(name) { (name)->next (name); (name)->prev (name);} 相比于下面这样初始化,前面初始化的好处是,处理链表的时候,不…

iTOP-RK3568开发板Docker 安装 Ubuntu 18.04

Docker 下载安装 Ubuntu18.04,输入以下命令: sudo apt update docker pull ubuntu:18.04 切换 Shell 到 Ubuntu 18.04,输入以下命令: docker container run -p 8000:3000 -it ubuntu:18.04 /bin/bash -p 参数:容器的…

初学HTML:采用CSS绘制一幅夏天的图

下面代码使用了HTML和CSS来绘制一幅炎炎夏日吃西瓜的画面。其中&#xff0c;使用了伪元素和阴影等技巧来实现部分效果。 <!DOCTYPE html> <html> <head><title>炎炎夏日吃西瓜</title><style>body {background-color: #add8e6; /* 背景颜…

[UE4][C++]调整分屏模式下(本地多玩家)视口的显示位置和区域

一、分屏模式设置 在UE4中&#xff0c;多个玩家共用一个显示器就可以启用分屏模式&#xff0c;按玩家人数&#xff08;最大四人&#xff09;将屏幕均匀分割&#xff0c;显示不同玩家的视角&#xff0c;开发者可以在编辑器里设置分割类型&#xff08;水平或者垂直&#xff09;&a…

Redis如何实现排行榜?

今天给大家简单聊聊 Redis Sorted Set 数据类型底层的实现原理和游戏排行榜实战。特别简单&#xff0c;一点也不深入&#xff0c;也就 7 张图&#xff0c;粉丝可放心食用&#xff0c;哈哈哈哈哈~~~~。 1. 是什么 Sorted Sets 与 Sets 类似&#xff0c;是一种集合类型&#xff…

分治法 Divide and Conquer

1.分治法 分治法&#xff08;Divide and Conquer&#xff09;是一种常见的算法设计思想&#xff0c;它将一个大问题分解成若干个子问题&#xff0c;递归地解决每个子问题&#xff0c;最后将子问题的解合并起来得到整个问题的解。分治法通常包含三个步骤&#xff1a; 1. Divid…

2023年7月第4周大模型荟萃

2023年7月第4周大模型荟萃 2023.7.31版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 1、Cerebras推出全球最强AI超算 AI芯片初创公司Cerebras Systems和总部位于阿联酋的技术控股集团G42于7月20日宣布&#xff0c;携手打造一个由互联的超…

Docker 阿里云容器镜像服务

阿里云-容器镜像服务ACR 将本地/服务器docker image&#xff08;镜像&#xff09;推送到 阿里云容器镜像服务仓库 1. 在容器镜像服务ACR中创建个人实例 2. 进入个人实例 > 命名空间 创建命名空间 3. 进入个人实例 > 镜像仓库 创建镜像仓库 4. 进入镜像仓库 > 基本信…

CHI中的error处理

Error Handling Error types 包含两种sub-packet级别的error, 和两种packe级别的error; Packet level error Data Error, DERR □ 访问的地址是正确的&#xff0c;但是访问的数据有错误&#xff1b;通常是在数据崩溃的时候使用&#xff0c;例如ECC&#xf…

汽车销售企业消费税,增值税高怎么合理解决?

《税筹顾问》专注于园区招商、企业税务筹划&#xff0c;合理合规助力企业节税&#xff01; 汽车行业一直处于炙手可热的阶段&#xff0c;这是因为个人或者家庭用车的需求在不断攀升&#xff0c;同时随着新能源的技术进一步应用到汽车领域&#xff0c;一度实现了汽车销量的翻倍。…

Java读取及生成pb文件并转换jsonString

Java读取及生成pb文件并转换jsonString 1. 效果图2. 原理2.1 Protocol Buffers是什么2.2 支持的语言2.3 根据.proto生成.java2.4 初始化及构建pb&#xff0c;读取&#xff0c;转jsonString 3. 源码3.1 address.proto3.2 PbParseUtil.java 参考 读取pb及生成pb文件pb文件转换jso…

【Unity细节】关于NotImplementedException: The method or operation is not implemented

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 收录于专栏&#xff1a;unity细节和bug ⭐关于NotImplementedException: The method or operation is not implemented.⭐…

中药配方煎药-亿发智能中药汤剂煎煮系统,智慧中药房的数字化升级

随着中药的普及&#xff0c;在治病、养生等方面都发挥这积极作用&#xff0c;但中药煎煮过程繁琐&#xff0c;如果有所差错将会影响药品的药性。为了满足当今用户对中药的需求&#xff0c;增强生产效率和业务水平&#xff0c;亿发中药煎配智能管理系统应运而生&#xff0c;为用…

机器学习深度学习——多层感知机的从零开始实现

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——多层感知机 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮助 为…

Linux Day03

一、基础命令(在Linux Day02基础上补充) 1.10 find find 搜索路径 -name 文件名 按文件名字搜索 find 搜索路径 -cmin -n 搜索过去n分钟内修改的文件 find 搜索路径 -ctime -n搜索过去n分钟内修改的文件 1&#xff09;按文件名字 2&#xff09;按时间 1.11 grep 在文件中过…