图神经网络GNN介绍
目录标题
- 图神经网络基础
- 图基本模块定义
- 图的邻接矩阵
- 点特征的更新(重构)
- 多层GNN
- 图卷积GCN模型
- GCN基本思想
- 网络层数:
- 基本计算
- 图注意力机制graph attention network
- T-GCN序列图神经网络
- 图相似度
图神经网络基础
图基本模块定义
三个特征:
- 点–特征向量表示
- 边–表示关系(分有向/无向)
- 图—图向量(全局)
无论事整的多么复杂,我们利用图神经网络的目的就是整合特征,重构特征
目的:做好点特征,边特征,最后做好整体的图特征。借助图结构把这些特征做好(点、边、全局的)embedding
输出结果:对点/边/图 做分类、回归
图的邻接矩阵
邻接矩阵:告诉计算机每个点的邻居都有谁
有连接关系的标1,无关系的标0.
双向边的邻接矩阵对称的
GNN(A,X)传入模型中,邻接矩阵,点的特征
文本数据也可以表示图的形式,邻接矩阵表示的连接关系
蓝色表示1,白色表示0,比较稀疏的矩阵。
注:在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵
邻接矩阵在代码中传入的一般不是N * N的,而是2 * N
[source,target]:从。。到。。
点特征的更新(重构)
点的更新,不仅考虑自身信息,也考虑邻居的信息
结合邻居与自身信息:
sigam激活函数,w权重,可学习的权重参数
聚合操作可以当作全连接层,更新的方法有很多,可以自己设置(求和,求均值,最大,最小)
多层GNN
GNN也可以有多层:
- GNN的本质就是更新各部分特征
- 其中输入是特征,输出也是特征,邻接矩阵也不会变的
原始输入–第一次结果–第二次结果
图结构与邻接矩阵不变,在变的是点特征
感受野:随着卷积的进行,每个点能感受到的区域越来越大
图卷积GCN模型
图中常见任务:
- 节点分类,对每个节点进行预测,不同点是否有连接预测
- 整个图分类,部分图分类等,不同子图是否相似,异常检测等
- GCN归根到底还是要完成特征提取操作,只不过输入对象不需要是固定格式
通常交给GCN两个东西就行:1.各节点输入特征;2.网络结构图
交给图神经网络,用损失函数去迭代去更新
GCN并不是纯的有监督学习,这个也是GCN优势:不需要全部标签,用少量标签也能训练。
计算损失时只用有标签的(交通预测中,偏远地区没有人工标签数据)
要让某一个点的损失小,那么它的邻居也要损失小,所以适合做半监督问题。
GCN基本思想
针对橙色节点,计算它的特征:平均其邻居特征(包括自身)后传入神经网络:
如何重构/更新黄色点:先聚合综合(平均)— 经过神经网络,即加上可训练参数—得到两维向量
网络层数:
这个跟卷积类似,GCN也可以做多层,每一层输入的还是节点特征
然后将当前特征与网络结构图继续传入下层就可以不断算下去了
原邻接矩阵–每个点更新–激活函数RELU— 第二次更新–激活函数RELU—经过图卷积的洗,最后得到每个点对应的向量。
但一般不用做太多层(通过6个人可以认识任何一个人),上图栗子中,做两次就能看到其余所有点。
基本计算
图中基本组成:
G就是咱们的图
A是邻接矩阵
D是各个节点的度
F是每个节点的特征
特征计算方法:其实就是邻接矩阵与特征矩阵进行乘法操作,表示聚合邻居信息
问题1:光想着别人,没考虑自己呢。
问题2:只考虑了加法,没考虑平均
其实就是对度矩阵乘以度矩阵D的逆矩阵,这样就相当于平均的感觉了
这里1/2相当于是对第一行做归一化操作,列也应该做归一化:
这样相当于归一化了两次,数导致更小了,应该开一个根号:
为什么这样做:
下面的小红和小绿,A和B两个人的度都要考虑进来,
因为小绿的度大会把其关系的权重变的很小,造成对小红的影响没有那么大。
最终公式:
例如完成一个十分类任务的,F就为10表示输出层
第一层:邻接矩阵,重新组合特征X,做一组预设乘上权重参数,套上激活函数relu
第二层:一样的
其中邻居矩阵是更新过的,
GCN的层数:
理论上来说肯定越大越好
但是实际的图中可能不需要那么多
在社交网络中,只需6个人你可以认识全世界
所以一般的GCN层数不会特别多
经过实验:在多个图数据集中,都发现两三层的比较合适,多了反而变差
图注意力机制graph attention network
哪个节点影响大,哪个节点影响小,需要权重来区分
栗子:5个点,每个点是四维数据。
通过权重来区分影响大小,2,3点对1的影响是否应该一样?
邻接矩阵[5×5] :N×N
特征矩阵[5×4] :5个点,每个点是四维数据。
可训练权重参数w[4×8]
聚合更新:[5,8]
这是前面的内容,这一节主要是引入一个权重项
公式:
hi,hj:点i与点j的特征
w:可训练的权重参数,先进行维度映射
拿到两个特征后,做内积—来体现权重值
a:指attention
softmax:归一化,2对1的权重和3对1的权重,之和要为1
exp(eij):指对eij做ex 的幂次映射,让结果差异大一些
残留问题:a的计算
1×5维特征向量,称上一个5×8的向量,变成8维向量。并拼接
加入一个可训练可学习的权重参数矩阵
再称一个16×1的矩阵,得到一个值,作为我们的权重.
因为权重要为正值,加上relu激活函数,
最后归一化一下
attention其实就是对邻接矩阵进行了加权,多加了一次处理
1对2的权重e12,其实改的就是邻接矩阵中a12处的数值。
T-GCN序列图神经网络
有些图随时间变化而变化
1,随着时间变化,点的特征在变
2,随着时间变化,点的特征在变,图结构也在变
套进RNN中
应用:疫情蔓延图,交通流量随时间变化
图相似度
论文链接
输入:两个/多个图结构
输入到图神经网络
输出:进行匹配相似度,输出得分
相关文章:

图神经网络GNN介绍
目录标题图神经网络基础图基本模块定义图的邻接矩阵点特征的更新(重构)多层GNN图卷积GCN模型GCN基本思想网络层数:基本计算图注意力机制graph attention networkT-GCN序列图神经网络图相似度图神经网络基础 图基本模块定义 三个特征&#x…...

【面试】TCP、UDP、Socket、HTTP网络编程面试题
文章目录什么是网络编程网络编程中两个主要的问题网络协议是什么为什么要对网络协议分层计算机网络体系结构1 TCP / UDP1.1 什么是TCP/IP和UDP1.2 TCP与UDP区别:1.3 TCP和UDP的应用场景:1.4 形容一下TCP和UDP1.5 运行在TCP 或UDP的应用层协议分析。什么是…...

Python语言的文件读写
🥑高级语言有很多共同之处,在文件读写这一部分我们就可以类比着之前我们过的C语言的文件读写的操作进行处理。 🥑还记得我们C语言当中的文件进行操作时所需要的哪些步骤吗?文件打开,文件读/写操作,文件关闭。我们的Py…...

面向对象 ( 上 )
Java面向对象 ( 上 ) 观看b站尚硅谷视频做的笔记 1、 面向过程 (POP) 与面向对象 (OOP) 2、类和对象 2.1、Java 类及类的成员 属性:对应类中的成员变量 行为:对应类中的成员方法。 2.2、类与对象的创建及使用 一、设计类,就是设计类的…...

Node.js学习笔记——会话控制
一、介绍 所谓会话控制就是对会话进行控制 HTTP 是一种无状态的协议,它没有办法区分多次的请求是否来自于同一个客户端, 无法区分用户 而产品中又大量存在的这样的需求,所以我们需要通过 会话控制 来解决该问题 常见的会话控制技术有三种&a…...

tsconfig.json参数详解
tsconfig.json是ts编译器的配置文件,ts编译器可以根据他的信息来对代码进行编译。 想要学习这篇文章小伙伴,可以先去看看下面文章,可以明白tsconfig.json的由来以及如何编译: 在vscode中使用Typescript并运行_typescript vscode…...

Pyecharts Geo绘制可视化地图并展示坐标位置
文章目录 Pyecharts Geo绘制可视化地图安装需要的模块绘制出地图生成空白地图修改参数,调整地图输出格式地图上展示坐标位置输入坐标点将坐标点添加入系列并配置系列完整代码参考文献Pyecharts Geo绘制可视化地图 安装需要的模块 pip install pyecharts绘制出地图 生成空白…...

什么是Hbuilder?--前端工具IDE
一,简介HBuilder 1.1HBuilder HBuilder是DCloud(数字天堂)推出的一款支持HTML5的Web开发IDE。HBuilder的编写用到了Java、C、Web和Ruby。HBuilder本身主体是由Java编写。它基于Eclipse,所以顺其自然地兼容了Eclipse的插件从Fron…...

07-centos-更改数据源、打补丁、查看内核
本文主要是介绍linux-centos的常用操作 更改数据源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 查看内核 [rootcentos02 ~]# uname -a Linux centos02 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 …...

flac格式如何转mp3,3种简单方法值得收藏
flac格式如何转mp3?mp3是小伙伴们所熟知的音频格式,相信flac格式也一定有小伙伴知道,它是一种无损音频压缩格式,是目前流行的数字音乐文件格式之一。那么为什么要将flac格式转换成mp3格式呢,这里小编就给大家讲一讲fla…...

停车位 蓝桥杯模拟
【问题描述】 小蓝要在路边划分停车位。 他将路边可停车的区域划分为L个整数小块,编号1至L。一个车位需要连续的K 个小块,停车位不能重 叠。有的小块属于井盖、消防通道等区域,不能停车。 请问小蓝最多划分出多少个停车位? 【输入…...

ftrace使用实战
诉求:遇到一个问题 echo blocked > /sys/class/block/sdb/device/state 报非法参数,想要知道根因,但是对这块内核代码不熟悉,不知道从哪里下手,那就先用ftrace看看内核调用栈,如下所示。 rootrlk:/home…...

【C#进阶】C# 不安全代码
序号系列文章20【C#进阶】C# 泛型21【C#进阶】C# 匿名方法22【C#进阶】C# 多线程文章目录前言1、什么是不安全代码?2、如何编译不安全代码?3、指针类型4、指针执行的运算符和语句5、固定大小的缓冲区6、函数指针7、不安全代码的总结结语前言 Ὅ…...

Docker安装部署ElasticSearch
1.部署单点ElasticSearch 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让ElasticSearch和kibana容器互联。这里先创建一个网络: docker network create es-net1.2.拉取镜像 考虑到ElasticSearch的兼容性,这里ElasticSearch、kiba…...

【新2023Q2模拟题JAVA】华为OD机试 - 快递业务站
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:快递业务站 题目 快递业务范…...

OpenCV入门(二十四)快速学会OpenCV 23 傅里叶变换
OpenCV入门(二十四)快速学会OpenCV 23 傅里叶变换1.傅里叶变换理论概述2.Numpy实现傅里叶变换2.1 傅里叶变换2.2 傅里叶逆变换2.3 高通滤波3.OpenCV实现傅里叶变换3.1 实现傅里叶变换3.2 实现傅里叶逆变换3.3 低通滤波作者:Xiou 1.傅里叶变换…...

线段树合并
前置知识:权值线段树,动态开点。 引入 我们先来看一道题: 永无乡包含 nnn 座岛,给出每座岛的重要度的排名,名次用 111 到 nnn 来表示。一开始有 mmm 条边连接,接下来有 qqq 次操作。操作分两种ÿ…...

研发效能 | DevOps如何改变游戏公司工作方式?
如果你是游戏开发者,那么在过去几年里,你可能会觉得有人给了你一把双刃剑。 整个行业不断蓬勃发展,但玩家的预期值也越来越高。玩家们总是希望游戏体验能够更快、更真实、更具创造性。此外,他们还希望能够定期推出新的游戏和更新…...

Mongo聚合和Springboot整合Mongo聚合
聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组、过滤等功能,然后经过一系列的处理,输出相应的结果。 语法格式:db.集合名称.aggregate({管道:{表达式}}) 常用管道如下: $group: 将集合中的⽂…...

第06章_索引的数据结构
第06章_索引的数据结构 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生,目…...

不确定的市场,确定的增长,海尔智家2022全球再逆增
文|螳螂观察 作者| 余一 上市公司2022年年报逐渐进入密集披露期,在当前的年报季窗口,各家公司的业绩情况被高度关注。 3月30日晚,海尔智家发布了2022年财报。财报显示,2022年海尔智家实现收入2435.14亿元,同比增长7…...

测试老鸟手把手教你python接口自动化测试项目实战演示
目录 前言 一、项目准备 二、项目流程 三、完整代码 四、总结 前言 在进行接口自动化测试项目实战之前,我们需要先了解什么是接口自动化测试。接口自动化测试是通过自动化脚本模拟用户请求和服务器响应的过程,以检测接口是否符合预期,确…...

一起来学5G终端射频标准(Coherent UL-MIMO测试要求)
01 — Coherent UL-MIMO测试要求 首先什么是Coherent?它的英文释义是:(of ideas, thoughts, argument, theory, or policy) logical and consistent,翻译过来就是:(看法、思想、论证、理论或政策等&…...

计算广告(五)
Nobid Nobid(在某手有时也叫MCB,在Facebook叫Lowest Cost)是指广告主不用(也不能)对转化成本进行出价,而是出一个预算(大多数是日预算),然后投放平台的目标是在时间范围…...

排序输入的高效霍夫曼编码 | 贪心算法 3
前面我们讲到了 贪心算法的哈夫曼编码规则,原理图如下: 如果我们知道给定的数组已排序(按频率的非递减顺序),我们可以在 O(n) 时间内生成霍夫曼代码。以下是用于排序输入的 O(n) 算法。1.创建两个空队列。2.为每个唯一…...

奇异值分解(SVD)和图像压缩
在本文中,我将尝试解释 SVD 背后的数学及其几何意义,还有它在数据科学中的最常见的用法,图像压缩。 奇异值分解是一种常见的线性代数技术,可以将任意形状的矩阵分解成三个部分的乘积:U、S、V。原矩阵A可以表示为&#…...

Java如何从yml文件获取对象
目录一、背景二、application.yml三、ChinaPersonFactory.java四、使用示例一、背景 在 SpringBoot 中,我们可以使用 Value 注解从属性文件(例如 application.yml 或 application.properties)中获取配置信息,但是只能获取简单的字…...

vue使用tinymce实现富文本编辑器
安装两个插件tinymce和 tinymce/tinymce-vue npm install tinymce5.10.3 tinymce/tinymce-vue5.0.0 -S 注意: tinymce/tinymce-vue 是对tinymce进行vue的包装,主要作用当作vue组件使用-S保存到package.json文件 2. 把node_modules/tinymce下的目录&a…...

yolov4实战训练数据
1、克隆项目文件 项目Github地址:https://github.com/AlexeyAB/darknet 打开终端,克隆项目 git clone https://github.com/AlexeyAB/darknet.git无法克隆的话,把https修改为git git clone git://github.com/AlexeyAB/darknet.git修改Makef…...

第十四章 DOM的Diff算法与key
React使用Diff算法来比较虚拟DOM树和真实DOM树之间的差异,并仅更新必要的部分,以提高性能。key的作用是在Diff算法中帮助React确定哪些节点已更改,哪些节点已添加或删除。 我们以案例来说明。 使用索引值和唯一ID作为key的效果 1、使用索引…...