图神经网络学习笔记

文章目录

  • 一、图神经网络应用领域分析
  • 二、图基本模块定义
  • 三、邻接矩阵的定义
  • 四、GNN中常见任务
  • 五、消息传递计算方法
  • 六、多层GCN的作用
  • 七、GCN基本模型概述
  • 八、图卷积的基本计算方法
  • 九、邻接的矩阵的变换
  • 十、GCN变换原理解读


本笔记参考自b站up主小巴只爱学习的图神经网络教程
原教学视频链接

一、图神经网络应用领域分析

在这里插入图片描述
首先是我们的芯片领域,芯片中很多小单元是连通在一起的,如果直接人为设计难度会很大。但由于都是连在一起的,如果放在图神经网络中进行解决,技术水平收益就比较高。

在这里插入图片描述
还有就是推理分析的一些场景,无论我们的数据是图像数据还是文本数据,或者是结构化数据。我们的一些特征之间并不一定是完全独立的,特征之间可能会有关系。

举个例子,我们坐一圈玩剧本杀,我们在考虑特征的时候除了自己的特征肯定还要考虑其他人的特征,考虑其他人的特征能不能和我连上一条边,也就是谁和我有关系,然后根据情况去重构我们所需的特征。

在这里插入图片描述
目前应用最多的就是推荐系统了,我们在玩抖音的时候看到一些自己喜欢的人,那推荐系统就会根据这个人的一些特征,还有这个人他自己的关系网络给我们推荐类似的东西。这个本质还是一个图结构,我们的点和点之间会存在一定的关系。

二、图基本模块定义

在这里插入图片描述
vertex:也就是图中的各个点,比如我们交通网络中可以把十字路口看成一个点

edge:就是图中的边,点和点之间如果有边,就说明这两个点是有关系的。有时边也会有相关的特征,比如一个点到另一个点的距离。

global:全局的图,它其实也可以看成一个向量,因为目前我们的神经网络中,要计算某个东西是什么,那肯定要有各个特征(各个向量)组成来判断。

在这里插入图片描述
我们神经网络最核心的就是要整合特征。比如我们要预测一个人喜欢什么,我们不仅要考虑这个人,还要考虑他的朋友喜欢什么。因为在图上,这些点连在一起,我们的点特征会做一个重构,边特征还有图特征都需要重构。我们把点、边的特征做成最好的,后面整个图的特征自然就会是最好的。

后面要输出一些结果,我们最终的结果其实就是对点做分类回归,对边做分类回归,对图做分类回归。

三、邻接矩阵的定义

在这里插入图片描述
这个邻接矩阵主要是表示某个点和其他点是否具有关系。
在做实际案例的时候,邻接矩阵会作为我们的输入一并传过去。比如GNN模型传一个点特征,还有点和其他点的关系。

在这里插入图片描述

四、GNN中常见任务

图神经网络的输入格式并不一定是固定的,也就是说不同的数据结构也可能是完全不同的。
比如我们输入100个图,每个数据是一个图,尽管这100个图并不一样,但是只要能做成图的结构,就可以进行计算。
在这里插入图片描述
再比如我们生活中的社交网络,由于每个人的社交范围不一样,并且同一个人的社交关系也并不一定是一成不变的,那就可以套用GNN去处理。
在这里插入图片描述
在这里插入图片描述

五、消息传递计算方法

在这里插入图片描述
实际应用中由于邻接矩阵是n*n的,如果数据量比较大,那么矩阵也会非常大。并且由于邻接矩阵很多点到其他点是没有关系的,这种无用数据就可以省略掉。

所以实际存的是2*n的矩阵,我们只存一些有关系的点,比如[1,0]表示1号可以到0号点。

在这里插入图片描述
比如1号点连了3个点,2号点连了1个点,3号点连了1个点。它们连接方式是不同的,如果我们需要重构每个点的特征,由于每个点特征更新不仅需要考虑自己的特征还有其他相邻点特征。

我们假设点1、2、6、4特征分别为x1、x2、x6、x4。如果现在要更新点1特征,那我们新的特征x1可以写成下图形式。(不一定百分百是这个形式,只是举个例子)
在这里插入图片描述
小结:点的更新不仅要考虑自身的信息,还要考虑到相邻节点的信息。

具体做法如下:
在这里插入图片描述
比如我们的6号节点,现在要重构6号节点的特征,那我们可以通过计算x1,x3,x4的各个特征,根据权重进行一个累和。

而这个权重具体是多少,这里是设置了一个可学习的权重参数,我们训练神经网络时就可以得到一个比较好的参数了。

在这里插入图片描述
汇总这一块,蓝色框标志的就是某个点它的其他连接点应该给我啥样的特征。w1*hi就表示字节的特征。然后把这两个结果和进行一个投影。

六、多层GCN的作用

在这里插入图片描述
比如做两层GNN,从左到右,依次是原始输入,处理1层结果,处理2层结果。

可以看出,无论经过多少层处理,图结构都不会发生改变(邻接矩阵也不会变),只会改变各个点的特征。

尽管做多层GNN每次都考虑相邻的节点,但是主要的原因是相邻的节点是可能不断更新的。

在这里插入图片描述
我们通过多层GNN得到点的特征了,然后就要对每个点做分类,最后再把每个点再合成一个图,就可以做图分类。节点、边也都是可以分类的,具体看工业需要。

七、GCN基本模型概述

GCN也就是图卷积
在这里插入图片描述
如下图,是我们的一个卷积,它是把我们输入的一张图像的一个小窗口做成一个特征。
在这里插入图片描述
而图卷积和卷积就不一样了,因为在图卷积中完全就没有窗口,它只有图(只有图中的每个点)。所以这里图卷积也没有啥卷积的计算,主要还是基于那种消息传递的计算。

由于每个点,它的相邻节点的个数是不一定一致的,所以输入也不要求是相同格式。
在这里插入图片描述

在这里插入图片描述
对于每个点怎么获得具体特征?直接把图交给神经网络,用损失函数去迭代更新即可。
然后交给GCN的就是两个:各个节点特征,还有就是邻接矩阵。

在这里插入图片描述
在图任务中,由于各个节点的重要程度不一样,导致有些边缘的点它没有人工打的标签或者记录。当我们在训练模型的时候,我们也不要求每个点都是有标签的,我们可以当作是半监督的任务。

我们计算损失的时候虽然只用有标签的,但是由于那些有标签的节点特征也会受到相邻节点特征影响,所以也要保证那些有标签的节点的相邻节点也要保证它们的最好特征。

八、图卷积的基本计算方法

在这里插入图片描述
上图中每个点都有自己的实际特征。如果现在要更新黄色这个点特征,那么第一步就是消息传递,也可以理解为聚合,即综合它相邻结点的特征。这里具体做法就是把所有点特征拿过来求平均,实际工业中可以根据具体情况调整相邻节点特征所占比例。

而求完平均之后,还需要经过神经网络,相当于加上一组可训练的参数,即下图这样进行一个全连接。
在这里插入图片描述
最后我们是得到一个两维向量,原先三维变现在两维,这个向量维度是可以调整的。

在这里插入图片描述
我们得到一个图之后,第一个图卷积层会对每一个点进行更新,第二个图卷积层会基于第一个图卷积层的结果进行更新。。。

后面经过图卷积的处理,最后输出的结果就是每个点对应的一共向量。

一般来说,图卷积并不需要做特别深层的。因为一般的图中的点数量不会特别庞大,另外,因为做6层之后理论可以覆盖所有的节点和边,同时所有特征都会趋于自身特征,如果继续往下做就可能过拟合。

在这里插入图片描述

GCN中一般会有3个矩阵:邻接矩阵A、度矩阵D、特征矩阵F

A矩阵:就表示某个点和哪些点相连了
D矩阵:表示连上这个点的有几个其他节点
F矩阵:表示某个点的特征值(向量)

在这里插入图片描述
如上图有邻接矩阵A和特征矩阵F,现在要求重构完的点A的向量是多少?只需要进行一个简单的矩阵相乘即可。

比如这里重构后的A向量(1.4,2.5,4.5)
0*(-1.1)+00.4+01.2+01.4+11.4=1.4
03.2+05.1+01.3+0(-1.2)+12.5=2.5
0
4.2+00.4+0(-1.2)+02.5+14.5=4.5

在这里插入图片描述
前文的特征计算方法是只考虑了某个点它的相邻节点的特征,没有考虑到它自己的特征。所以一般情况我们还要加一个单位矩阵得到新的邻接矩阵A~

九、邻接的矩阵的变换

然后还要考虑的一个问题是,有些节点它的度会比较大,如果特征不考虑正负的话,做完矩阵乘法得到新的特征一定会特别大,这和实际情况是不符合的。所以我们还需要把度矩阵考虑进去,进行一个求平均的操作。
在这里插入图片描述
将得新的度矩阵D~进行一个求倒数得到D~-1,也就是求平均,进行一个归一化的操作。

在这里插入图片描述
正常情况我们是邻接矩阵右乘特征矩阵,再左乘一个度矩阵,如下图
在这里插入图片描述
而根据矩阵乘法结合律,我们可以先让度矩阵和邻接矩阵相乘,再右乘特征矩阵
在这里插入图片描述
这样就相当于我们的度矩阵对邻接矩阵进行一个scale变换,也就是类似归一化处理。

但是这里还有一个问题,度矩阵左乘邻接矩阵,相当于是对邻接矩阵的行做归一化。
ps:矩阵A,矩阵B。AB相当于A对B做行变换,BA相当于A对B做列变换

所以,为了考虑周全,我们除了对行做归一化处理,还需要对列做归一化处理。
在这里插入图片描述
综上,我们会形成一个新的邻接矩阵,分别用度矩阵对它的行和列做归一化处理,最后再乘特征矩阵。

这里还有一个问题,因为我们分别做了行和列的归一化,就相当于对邻接矩阵的每一个值都归一化了两次。这就会导致数据被弄小了。

所以对于度矩阵我们还要将它进行开根处理,如下图:
在这里插入图片描述
这里可能会有疑问:为什么GCN中非要左乘右乘还要对度矩阵开根。。。

十、GCN变换原理解读

在这里插入图片描述

举一个通俗的例子:
图中的关系网络中,绿色框连接很多其他节点,也就是该节点度比较大。红色框就是连接了绿色,也就是只有一个度。

那如果我们要预测红色框的属性,如果你只考虑度的话,那就肯定大比例是绿色框的特征。但是绿色框又连接了其他很多的节点。说明绿色框是和大部分节点是有相同特征,难道仅仅因为红色框和绿色框相连,就说明红框有绿框所有特征吗?显然这是考虑不周全的。

所以,一个节点与其他节点相连,并不意味着该节点拥有其他节点的所有特征

我们还需要考虑到其他节点的邻接矩阵的权重。
在这里插入图片描述
考虑到其他节点度权重之后,如果其他相邻节点的度非常大,那么这个相邻节点对我们指定节点的影响权重就会减小。

在这里插入图片描述
整体公式如上图,首先是获得更新过的邻接矩阵(要基于度进行更新)
在这里插入图片描述
然后邻接矩阵和特征矩阵相乘,重新组合特征。然后做一个映射,乘W(0)
在这里插入图片描述
然后乘一个ReLU,第一层就完事了。
在这里插入图片描述
第二层还是用邻接矩阵去做,再乘一个第二层的可学习参数W(1)。如果后续要做多分类,连一个softmax即可。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



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

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

相关文章

【React】极客园--01.项目前置准备

项目搭建 基于CRA创建项目 CRA是一个底层基于webpack快速创建React项目的脚手架工具 # 使用npx创建项目 npx create-react-app react-jike# 进入到项 cd react-jike# 启动项目 npm start调整项目目录结构 -src-apis 项目接口函数-assets 项目资源文件&…

数字孪生流域:定义、组成等

数字孪生流域:定义、组成等 1 数字孪生流域(Digital Twin Basin/Watershed)总则1.1 定义1.2 适用范围1.3 建设目标1.4 建设原则 2 数字孪生流域框架与组成2.1 数字孪生流域框架2.2 数字孪生流域组成2.2.1 数字孪生平台2.2.2 信息化基础设施 3…

ISP图像算法面试准备(1)

ISP图像算法面试准备 ISP图像算法面试准备(1) 文章目录 ISP图像算法面试准备前言一、ISP流程二、重点关注1. AWB必须在Demosaic之后进行。2. Gamma矫正通常在CCM之前进行 三、如何实现ISP参数自动化调试四、AE,即自动曝光(Auto Exposure)总结…

三星SAINT-D技术引领HBM内存堆叠革命

三星电子即将在今年推出一项革命性技术,允许在CPU或GPU上堆叠高带宽内存(HBM),根据韩国经济日报的报道,这一消息在圣何塞举办的三星晶圆代工论坛2024上公布,并得到业内消息人士证实。这项3D封装技术为2025年…

智能制造 v3.13.11 发布,ERP、在线课堂、表白墙更新

智能制造一体化管理系统 [SpringBoot2 - 快速开发平台],适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模…

【启明智显产品分享】Model4 工业级HMI芯片详解(三):高安全、防抄板

Model4 工业级HMI芯片详解系列专题(三)【高安全、防抄板】 随着物联网和智能设备的快速发展,设备安全认证的需求日益迫切。硬件安全认证和保护在确保设备和身份安全中发挥着不可替代的作用,需要与软件安全相结合,共同构…

Google推出开源代码大模型CodeGemma:AI编程新纪元,代码自动完成和生成技术再升级

论文标题: CodeGemma: Open Code Models Based on Gemma机构: Google LLC论文链接: https://arxiv.org/pdf/2406.11409.pdf CodeGemma模型概述 CodeGemma是基于Google DeepMind的Gemma模型系列(Gemma Team et al., 2024)开发的一系列开放代码模型。这些…

6.1触发器的创建、删除和使用

6.1.1 触发器概述 触发器是一个被指定关联到表的数据库对象,与表的关系密切,不需要用户调用,在一个表的特定事件出现时将会被激活,此时某些MySql语句会自动执行。 触发器用于实现数据库的完整性,具有以下特点&#xff…

如何优雅地限制textarea的输入字数?

大家好&#xff0c;我是瑶山&#xff0c;今天聊聊textarea textarea 有基础的同学都知道<textarea>是HTML中的一个标签&#xff0c;用于定义多行的文本输入控件。它允许用户在表单中输入多行文本&#xff0c;相较于单行输入框可以输入更多的内容。 但是&#xff0c;如果…

C++ 72 之 友元和类模版

#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; #include <string>// 写法2&#xff1a; // template<class T1, class T2> // class Students12;// 要提前用到Students12&#xff0c;需要在前面先让编译器见过Students12才可…

算法金 | 一个强大的算法模型:t-SNE !!

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 t-SNE&#xff08;t-Distributed Stochastic Neighbor Embedding&#xff09;是一种用于降维和数据可视化的非线性算法。它被广泛应用于…

26 种 prompt 套路,驯服大模型

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接如…

LLM之RAG实战(四十)| 使用LangChain SQL Agent和MySQL搭建多层RAG ChatBot

在传统的意义上&#xff0c;RAG 主要是从文档中检索用户想要的数据&#xff0c;从而提高大模型的能力&#xff0c;减少幻觉问题。今天&#xff0c;我们从另一个维度介绍RAG&#xff0c;RAG不从文档中获取数据&#xff0c;而是从MySQL数据库检索数据。我们可以使用LangChain SQL…

HTML学习和JAVAScript学习

HTML 标签 <!DOCTYPE html> <!-- 文档类型为html --> <html lang"en"> <head><meta charset"UTF-8"> <!-- 使用字符集UTF-8 --> <!-- 设置浏览器兼容性 --><meta name"viewpo…

H6901B升压恒流调光芯片3.7V 7.4V升压 12V 24V 36V 48V 100V高端调光 太阳能照明 锂电池升压

惠海H6902B升压恒流驱动芯片是一款专为LED照明应用设计的驱动方案。该芯片具有多项产品特征&#xff0c;能够满足多种LED照明需求。 适用于多种电压输入范围&#xff08;2.7V-80V&#xff09;并具备效率&#xff08;达95%以上&#xff09;和工作频率&#xff08;1MHz&#xff…

异步爬虫:aiohttp 异步请求库使用:

使用requests 请求库虽然可以完成爬虫业务&#xff0c;但是对于异步任务来说&#xff0c;它是做不到的&#xff0c; 这时候我们需要借助 aiohttp 异步请求库来完成异步爬虫的编写&#xff1a; 话不多说&#xff0c;直接看示例&#xff1a; 注意&#xff1a;楼主使用的python版…

什么是数字化,什么是数智化?数字化与数智化的区别和联系

什么是数字化&#xff1f;什么是数智化&#xff1f;以及数字化与数智化的区别&#xff0c;下面分为三块跟大家详细讲解。 一、什么是数字化&#xff1f; 1、概念&#xff1a; 数字化&#xff08;Digitalization&#xff09;是将信息转换为数字&#xff08;即计算机可读&#…

[14] CUDA_使用Opencv处理图像

CUDA_使用Opencv处理图像 1. Opencv中的图像表示 Opencv 提供了Mat 类来存储图像&#xff0c;如下&#xff1a; cv::Mat img; imgcv::imread("cameraman.tif);定义图像的示例&#xff1a; //定义单通道图像 cv::Mat img(6,6,CV_8UC1); //32位浮点型 Mat img2(256,256,…

【进阶篇-Day3:JAVA接口新特性、代码块、内部类、Lambda表达式、组件等的介绍】

目录 1、接口新特性1.1 JDK8的新特性1.2 JDK9的新特性 2、代码块2.1 代码块的定义2.2 代码块的分类 3、内部类3.1 内部类的定义3.2 内部类成员访问3.3 学习内部类的原因3.4 内部类的分类3.4.1 成员内部类3.4.2 静态内部类3.4.3 局部内部类3.4.4 匿名内部类&#xff08;1&#x…

分布式技术导论 — 探索分析从起源到现今的巅峰之旅(流式处理到微批处理)

探索分析从起源到现今的巅峰之旅 流式计算回顾流式服务结合分布式特性 流式计算组成部分监控数据处理进度流式分析案例流转数据的衍生存储确认器采取高效策略确认器异常应对策略工作节点故障的处理&#xff08;精确一次处理&#xff09;确认器故障的处理&#xff08;恰好一次处…