gcn(从空间域理解)

news2024/9/22 15:35:06

一、背景

常见的神经网络,如BP神经网络可以用来处理表格型的数据,卷积神经网络可以用来处理图片数据,循环神经网络则可以用来处理序列数据,这些数据都是结构化的数据,当我们需要处理的数据为图这种非结构化的数据,例如:城市交通的每个路口上的传感器所记录的数据;化学分子结构;人际关系网;推荐系统中每个人构成的图。并不是说以上的神经网络处理不了图这种类型的数据,只是在处理图这种数据上存在欠缺,图数据有一个很明显的特征,相邻或相近的节点存在一定的空间依赖关系,这种关系传统神经网络很难捕获,为此,图神经网络应运而出。

二、什么是图网络?

图网络的核心思想就是依据图结构的空间依赖关系来表征现实世界中真实的特征之间的相互作用关系,通过对节点特征进行聚合生成新的节点特征表示用于后续工作。这句话非常重要,是整个图神经网络的构建的基本原则!!!举个例子,下图为一张交通系统的图结构,在6个位置上分别有一个传感器记录了一段时间的交通流量数据,现在的目标是要预测接下来每个位置上未来一段时间的流量。该怎么去思考?从时间序列本身的角度来思考,未来的数据一定是与过去的数据相关,因此我们可以对6个位置的时间序列单独进行预测生成6个位置未来的预测值,但是这样做有一个缺点,没有考虑到节点之间的空间依赖关系,假设4节点流量非常大,那么他相邻的3/5/6节点大概率流量也是非常大的,既然已经用图结构表示出了这种空间关系,那么我们怎么去应用它?这就是图网络所要解决的问题。

img

现在再来理解下背景中的几种网络,对于BP神经网络其实就是仅仅考虑了历史数据而没有考虑空间关系;卷积网络可以考虑空间中每个像素点之间的关系,但并不适用于图这种非结构化的数据;循环神经网络也是仅考虑了时间上的关系。当然有各种组合网络模型,既考虑了时间依赖关系又考虑了空间依赖关系,能够用来解决该问题,但是图神经网络是专门为了解决图这种数据结构而诞生的一种网络,值得重点学习。

三、图卷积网络——GCN

图卷积网络的本质就是提取图结构的空间特征,基于提取方式的不同可以分为:基于空间域的图网络(GraphSAGE,GAT,MPNN等)、基于谱域的图网络(Spectral CNN、ChebyNet、GCN等)。

①基于空间的方法就是直接从图结构出发,聚合邻居节点的信息作为新的特征,不断的进行消息传递的过程。 ②基于谱域的方法就是将原始数据转换至谱域中,利用图谱理论,引入滤波器进行滤波,在转换回时域的一个过程。

下面分别就这两个角度对GCN进行讲解。

四、从空间域理解

本文假定你已经拥有图结构的相关知识,不再进行赘述。

4.1 邻接矩阵A

首先让我们和BP神经网络对比一下,设输入为X,网络权重为W,则一层的BP网络可以表示为: f=σ(XW) ;图卷积网络可以表示为: f=σ(AXW) ,其中A为图结构的表示矩阵。他们分别是什么含义?

对于BP网络,输入X经过网络的计算后,表示对每个样本的各个特征进行线性组合生成新的特征,再施加激活函数激活的一个过程。 而图神经网络在输入X前多乘了一个图结构矩阵A,假设样本数为n,则A的形状为n*n, nij 表示第 i 个节点与第 j 节点之间的关系,那么AX就表示利用图的结构对各个样本的特征进行重新整合作为新的输入,再输入至BP神经网络中,这样就将空间依赖关系考虑到了。

以上仅是简单的介绍,下面将详细的介绍下具体原理,假设现在有这样一个图结构,有ABCDE五个节点,每个节点之间的相互关系以及每个节点的特征如下图。

img

现在我要重新计算E的特征,根据GCN的基本思想,就是要聚合其邻居节点的信息,也就是ABCD的特征以一定方式进行聚合(平均、求和、拼接等),以求和为例:

img

引入图的邻接矩阵A,则以上聚合可以表示为:

img

设n为节点数,f为每个节点的特征维度,则邻接矩阵A的形状为 (n,n) ,特征矩阵的形状为 (n,f) ,AX相乘后表示考虑到邻居节点信息的新的特征矩阵,形状为 (n,f) ,每一行表示一个节点的特征,可以看出新的E节点,也就是矩阵相乘后的最后一行就是ABCD节点的相加。相比于手动计算,采用邻接矩阵,我们能一次性将所有的节点特征表示出来。

4.2 考虑自身信息的邻接矩阵

上面有一个问题,不知道大家发现没有,两个不同的节点B和C在经过邻接矩阵的运算后,新的特征向量竟然一模一样,这是两个具有不同位置信息、不同特征的不同节点啊,得出来一样的结果明显是不合理的。因此为了防止这种情况,在计算新的节点特征时,不仅要考虑邻居节点的信息,也可以将自身节点的信息考虑进去。在邻接矩阵上面的表现就是加上了一个单位阵:

A~=A+I

则,新的邻接矩阵为:

img

将新的邻接矩阵 A~ 左乘特认矩阵X,得:

img

可以看出,避免的上述的情况,B和C虽然具有相同的邻居,但是由于自身的特征不一样,所以空间变换后的特征也不一样,主要是由于单位矩阵的加入,使得矩阵相乘时,考虑到了自身节点的信息的因素。

4.3 求平均(归一化)

采用以上的方式,相当于我们队所有邻居及自身进行了求和,但是这种聚合方式是有问题的,相当于我们变相的改变了特征的量级,我们每进行一次聚合,就加大了一次量级,随着迭代的增加,量级会越来越大,假设现在我要求小明的收入,那么采用求和的方式就会将小明的邻居朋友们及自己的收入加起来这是不对的。因此更好地方式是求平均,类比到图结构中就是左乘我们的度矩阵。

度矩阵就是与该节点相邻节点的数据,因此就是邻接矩阵A每一行的求和组成的对角阵, D=∑jAij ,如下:

img

同样的这种方式只考虑到了邻居节点的个数,没有考虑到自身的信息,因此在度矩阵D上在加上单位阵 I ,也即 A~ 的每一行的求和, D~=D+I=∑jA~ij ,如下:

img

所以最终的求平均的操作就为 D~−1A~X ,由于矩阵乘法满足结合律,所以 D~−1A~X=D~−1(A~X) ,又由于 D~−1 为初等矩阵,左乘初等矩阵相当于行变换,所以相当于对 A~X 的每一行除以度,这不就是对每一个节点求和后的特征做平均么!,如下

img

这实际上就是邻接矩阵的归一化。

4.4 renormalization

以上求平均的方式仍然有点不合理,想象一下,仍然是要求小明的收入,按照图网络原理,他的收入是与自身及其图上的邻居有关,假设小明收入很低,但他在图上有且只有一个土豪朋友,那么经过土豪的平均,他的收入也会变得很高,所以上面 D~−1A~X 是有问题的,先讲是怎么改进的,后面将为什么这么改进,改进的公式为:

D~−12A~D~−12X

其中, ,D~=D+I,A~=A+I 。公式中 A~ 左乘和右乘一个初等矩阵,相当于分别对 A~ 做初等行列变换, A~ij 表示 A~ 中第 i 行第 j 列的元素,就是 i 节点与 j 节点的关系,那么这个变换就相当于 i 节点与 j 节点的关系系数再除以 i 节点度的平当根与 j 节点系数平方根的积,这样节点之间的关系系数(权重)不再与某一个节点优点,而分别考虑到了两个节点的度,邻居节点的度越大,权重越小,也即一个节点的边越多,由于节点的总的信息是一定的,那么他通过每条边的信息量越少,即通过某条边向外发送的信息越少。

拿上面的例子解释一下,小明的收入很低且只有土豪一个邻居,但是土豪有很多邻居,因此土豪的度很大,在计算小明与土豪之间的关系权重时,小明只是土豪众多邻居中的一个,因此分配到的权重很小,所以土豪并不会对小明的收入产生很大的影响。映射到公式中就是把土豪的度当做分母了,因此计算出来的关系权重比较小。

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

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

相关文章

黑马点评9——附近商户-GEO数据结构

文章目录 GEO数据结构的基本用法导入店铺数据结构到GEO实现附件商户功能 GEO数据结构的基本用法 导入店铺数据结构到GEO 数据库里没法实现按照地理坐标排序等复杂的搜索功能,我们把数据存到redis中,只需要保存id和对应的x以及y的坐标,就可以…

一键部署Phi 3.5 mini+vision!多模态阅读基准数据集MRR-Benchmark上线,含550个问答对

小模型又又又卷起来了!微软开源三连发!一口气发布了 Phi 3.5 针对不同任务的 3 个模型,并在多个基准上超越了其他同类模型。 其中 Phi-3.5-mini-instruct 专为内存或算力受限的设备推出,小参数也能展现出强大的推理能力&#xff…

使用Cskin时候 遇到按钮有默认阴影问题解决

使用Cskin时候 遇到按钮有默认阴影 设置 DrawType 属性就可以了

【应用】浅谈大模型的应用场景

在人工智能(AI)的发展历程中,大模型无疑是一个重要的里程碑。这类模型通过海量数据的训练,其参数量都达到了千亿甚至万亿的规模,具备了强大的语言理解和生成能力,能够完成各种复杂的自然语言处理任务。 大模型在各种领域都有广泛的…

Web day0906

ok了家人们,今天开始学习javaweb,我们一起看看吧 一.WEB开发介绍 1.1 WEB介绍 Web ( World Wide Web )即全球广域网,也称为万维网。简 单说,能够通过浏览器访问的网站。在我们日常的生活中,经…

【JAVA基础】StringUtils.isEmpty、StringUtils.isBlank()、Objects.isNull()三者区别

📝个人主页🌹:个人主页 ⏩收录专栏⏪:日常经验 🌹🌹期待您的关注 🌹🌹,让我们共同进步! 总是区分不清楚这几个的差别:我们来直接验证一下&#…

【机械手控制】基于matlab 4-RPR平面机械手的可操作性、工作空间分析和路径跟踪【含Matlab源码 7422期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信或扫描文章底部QQ二维码。 🍎个人主页:Matlab凤凰涅槃 🏆代码获取方式:扫描文章底部QQ二维码 ⛳️座右铭&…

U盘数据危机应对:详解文件或目录损坏无法读取的恢复之道

在数字化信息日益重要的今天,U盘作为便携存储设备,几乎成为了每个人工作和生活中的必需品。然而,当U盘突然遭遇文件或目录损坏且无法读取的困境时,我们往往面临数据丢失的风险,这不仅影响工作效率,还可能造…

【开学季】智慧城市入门教程福利放送,零基础入门三维WebGIS

步入九月,不知道有多少同学还没享受够假期 就要开始返校“直面天命” 各种大朋友、小朋友;大一萌新、学长学姐们也 都陆陆续续返校 小编整理了新中地公开课教程 帮助大家丝滑入门大学学习 这份开学礼包,请注意查收! WebGIS三…

Xinstall如何用一个包打通多个推广路径?

在移动互联网时代,App的推广和运营对于开发者而言是一项至关重要的任务。然而,面对繁多的推广渠道,如何高效地管理和评估各个渠道的效果,成为了摆在开发者面前的一大难题。今天,我们就来科普一下,如何通过X…

13条自动化测试框架设计原则

1、代码规范 测试框架随着业务推进,必然会涉及代码的二次开发,所以代码编写应符合通用规范,代码命名符合业界标准,并且代码层次清晰。特别在大型项目、多人协作型项目中,如果代码没有良好的规范,那么整个框…

计算机毕业设计选题推荐-博物馆管理系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Helm Deploy Online Rancher v2.9.1

文章目录 准备安装查看下载 准备 $ kubectl get node NAME STATUS ROLES AGE VERSION kube-master01 Ready control-plane 19d v1.29.5 kube-node01 Ready <none> 19d v1.29.5 kube-node02 Ready <none&…

嵌入式学习(链式栈和链式队列)

栈&#xff08;stack&#xff09;是一种只能在一端插入或删除操作的线性表。 栈只能在表尾插入或删除元素&#xff0c;表尾就是栈的栈顶&#xff0c;表头就是栈底 栈的主要特点&#xff1a;LIFO(last in first out) "后进先出" 栈可以采用顺序存储结构(顺序栈) 和…

备战秋招60天算法挑战,Day33

题目链接&#xff1a; https://leetcode.cn/problems/longest-increasing-subsequence/ 视频题解&#xff1a; https://www.bilibili.com/video/BV1RRvheFEog/ LeetCode 300. 最长递增子序列 题目描述 给你一个整数数组nums &#xff0c;找到其中最长严格递增子序列的长度。 …

Vue——day10之指令

目录 内置指令 v-text指令 v-html指令 v-cloak指令 v-once指令 v-pre指令 整体代码示例 自定义指令 整体代码演示 总结 内置指令 v-text指令 v-text指令是Vue.js中的一种指令&#xff0c;它用于将元素的textContent设置为指定的值。它的使用方式是在元素上添加v-tex…

JavaScript( 简介)

目录 含义 实例 js代码位置 1 外部引入js文件 2 在 HTML 中&#xff0c;JavaScript 代码必须位于 标签之间。 小结 含义 js是一门脚本语言&#xff0c;能够改变HTML内容 实例 getElementById() 是多个 JavaScript HTML 方法之一。 本例使用该方法来“查找” id"d…

大数据 - 行式存储与列式存储

为什么要区分&#xff1f; 大多数数据库系统存储一组数据记录&#xff0c;这些记录由表中的列和行组成。表可以水平分区&#xff08;将属于同一行的值存储在一起&#xff09;&#xff0c;也可以垂直分区&#xff08;将属于同一列的值存储在一起&#xff09;。 数据库用于存储、…

zdppy+vue3+onlyoffice文档管理系统实战 20240906 上课笔记 整合权限校验中间件

基于角色方法的中间件基本用法 import zdppy_api as api import zdppy_apimidauthasync def index(request):return api.resp.success()async def login(request):token zdppy_apimidauth.get_role_token(role"admin")return api.resp.success(token)auth_dict {&…

单例模式的总结

常规模式:有属性/构造方法/普通方法,也可以在类中执行主方法,也可以在test类中执行主方法 单例模式是什么? 单例模式:类只有1个对象;保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式是在内存中 仅会创建一次对象 的设计模式特点: 成员是 私有的静态的 构…