一篇读懂图神经网络

news2024/9/23 13:25:45

来源:投稿 作者:张宇
编辑:学姐

近年来,作为一项新兴的图数据学习技术,图神经网络(GNN)受到了非常广泛的关注,在各大顶级学术会议上,图神经网络相关的论文也占了相当可观的份额。

我们知道图结构是最复杂的一种数据结构,其他数据结构都可以看做是图结构的一种推广。图结构在现实世界中也有很多应用,比如城市轨道交通图、社交关系图、生物医学领域等。

GNN辅助医药研制

图神经网络就是将图结构引入深度学习领域产生的一项技术,我们通常指的图神经网络一般就是图卷积神经网络,除此之外也有基于Random Walk的网络。

卷积神经网络CNN

图卷积网络GCN

传统的卷积神经网络是通过移动卷积核的方式进行卷积,形象的说就是使用每个元素附近的元素(包含自身)使用卷积核加权相加的方式来更新自身信息。

图神经网络与其类似,如果图中的每个结点只使用附近的一阶邻居(也就是存在邻接关系的结点)对自身进行更新的话,那这种卷积方式是类似于CNN中的3*3卷积的。

因为图结构每个结点周围邻居的数目是不确定的,所以对于GCN来说对于邻居结点的加权不像CNN中使用可学习的卷积核,而一般是使用加权的方式,并且目前的几种经典图卷积网络就是在加权方式上有所不同。

GCN考虑两结点之间的边的权重以及两结点的度;GAT考虑两结点之间的相似性,使用注意力机制进行加权。

CNN感受野                                                                  GNN感受野

将上述直观的概念转化为GCN具体卷积形式就是下面这个公式:

图神经网络也有类似于CNN里面的感受野(如上图)的概念,随着网络层数的增加,高层网络中的结点会从更高阶的邻居聚合到信息。

比如下面这个例子,对于1结点来说,虽然结点7是结点1的二阶邻居,但是第一次卷积将结点7的信息传递到结点4,第二次卷积就可以借助结点4将结点7的信息传递到结点1。

一些经典的CNN模型都可以堆叠多层,例如加入残差连接的ResNet目前都可以达到上百层网络,但是GNN通常只使用两到三层。

主要原因就是会产生过平滑的问题,以上面的图为例,可以将两层卷积网络的信息传递分解为下面这种树的形式。对于结点1的邻居2,两个结点之间的不断受到对方的影响,随着网络层数的增加,这种影响也会越来越大,当网络层数趋近于无穷时,整个网络的结点都会有相同的特征。

GNN信息传递路径

Shuman等人在Cora数据集上对多层网络卷积的结果进行分析,将原始结点特征进行不同层数的卷积后进行降维到2维进行可视化。可以看出,卷积层数2-3层效果最好,不同种类的结点可以明确区分出来,当层数增加到5层时所有结点就很难区分。

GNN多层聚合结果可视化

最近几年,也有相关研究人员将注意力机制、RNN、Transformer等引入图神经网络。以引入注意力机制的图注意力网络(GAT)为例,与传统网络应用注意力机制的形式类似,如下左图计算结点i、j之间的注意力分数α,根据注意力分数α对邻居结点进行聚合(如下右图)。对于下图其他结点到结点h1的三种边是Multi-head的形式,通过每一个head生成的新向量进行concat或者平均等的方式产生最终结点的向量表示。

图注意力网络(GAT)结构

最早的 Graph Attention Networks 中实现的GAT网络的计算公式如下:

对于注意力分数的计算形式也是经常用到的,不仅在GAT类似的网络中应用,同样在图级任务的Readout函数也是采用这种Soft-attention的形式得到图级表示。

图神经网络是一新兴的网络,表示能力强大,但是目前还有很多没有探索的领域,值得相关学者深入研究。

关注下方《学姐带你玩AI》🚀🚀🚀

AI干货、论文资料、数据集……持续更新中

码字不易,欢迎大家点赞评论收藏!

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

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

相关文章

https://app.diagrams.net/在线画图的一些技巧

最近工作需要,实践了在线画图的case, 下面就把使用心得记录一下: 关于diagrams 的一些小技巧: 登入的网页是:Flowchart Maker & Online Diagram Software 1: 利用group 的选项,这个可以整体移动,不用担心会漏掉一个: 就是选中一个图标,然后,看右边arrange 下面…

20230123使AIO-3568J开发板在Android12下永不休眠

20230123使AIO-3568J开发板在Android12下永不休眠 2023/1/23 13:59 1、 Z:\android12-rk3568-new\device\rockchip\common\device.mk # Bluetooth HAL PRODUCT_PACKAGES \ libbt-vendor \ android.hardware.bluetooth1.0-impl \ android.hardware.bluetooth1.0-se…

Hadoop基础之《(1)—大数据基本概念》

一、Hadoop 1、Hadoop大数据框架,处理分布式环境下数据存储和计算 2、Hadoop的HDFS处理存储 3、Hadoop的MapReduce处理计算 map让任务数据拆分到每一台去执行 reduce处理后的任务合并 4、Hive作用是在Hadoop上能够让用户来写SQL处理数据 Hive的执行引擎,…

深度学习TensorFlow—GPU2.4.0版环境配置,一文简单易懂详细大全,CUDA11.0、cuDNN8.0

深度学习TensorFlow—GPU2.4.0版环境配置,一文简单易懂详细大全,CUDA11.0、cuDNN8.0 前提:电脑拥有英伟达独立显卡!!!,并且安装了anaconda!!! 前提:电脑拥有英伟达独立显卡!!!&…

vue事件车之兄弟组件之间传值

目录前言一,全局事件总线介绍1.1 原理介绍1.2 x需要满足的条件二,知识点的复习2.1 vc是什么2.2 vm管理vc如何体现2.3 原型2.4 上述知识的串联三,实现需求3.1 x的编写及讲解3.2 使用x四,标准写法4.1 写法改动4.2 销毁五 关键代码后…

兔年首文迎新春-Cesium橘子洲烟花礼赞

兔年新春今天是兔年大年初二,神州大地,在经历了疫情的三年后迎来开放的一个春节。大家都沉浸在欢乐幸福的春节气氛中。玉兔迎新春,祝福齐送到:白兔祝你身体安康,黑兔祝你薪水高涨,灰兔送你梦想如意&#xf…

Maven高级

Maven高级 1,分模块开发 1.1 分模块开发设计 (1)按照功能拆分 我们现在的项目都是在一个模块中,比如前面的SSM整合开发。虽然这样做功能也都实现了,但是也存在了一些问题,我们拿银行的项目为例来聊聊这个事。 网络没有那么发…

Java多线程03——等待唤醒机制(and阻塞队列实现)

目录1.等待唤醒机制1.ThreadDemo2.Desk3.Cook4.Foodie2.等待唤醒机制(阻塞队列方式实现)1.ThreadDemo022.Cook023.Foodie023.线程的状态1.等待唤醒机制 生产者和消费者 桌子上有食物,消费者吃,桌子上没有食物,消费者等…

ElasticSearch 索引模板 组件模板 组合模板详细使用介绍

索引模板_template 文章目录索引模板_templateTemplate 介绍索引模板Index Template参数说明创建一个索引模板 Index Template测试不存在的索引直接添加数据创建索引总结组合索引模板 Index Template 7.8版本之后引入创建基于组件模板的索引模板 Index Template创建组件模板模拟…

LeetCode103_ 103. 二叉树的锯齿形层序遍历

LeetCode103_ 103. 二叉树的锯齿形层序遍历 一、描述 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1&…

【头歌】顺序表的基本操作

第1关:顺序表的插入操作任务描述本关任务:编写顺序表的初始化、插入、遍历三个基本操作函数。相关知识顺序表的存储结构顺序表的存储结构可以借助于高级程序设计语言中的数组来表示,一维数组的下标与元素在线性表中的序号相对应。线性表的顺序…

YOLOv5/v7 引入 YOLOv8 的 C2f 模块

YOLOv8 项目地址:https://github.com/ultralytics/ultralytics YOLOv8 Ultralytics YOLOv8 是由 Ultralytics 开发的一个前沿的 SOTA 模型。它在以前成功的 YOLO 版本基础上,引入了新的功能和改进,进一步提升了其性能和灵活性。YOLOv8 基于快…

C 指针变量 取地址符的用法 *指针变量名的用法

文章目录IntroCode图示Intro C语言中有一类特殊的变量:指针变量(pointer variable),用于存储某个变量的内存地址的值。 要打印指针变量一般用%p格式符,会打印出该指针变量的值,即一个内存值。 Code // Created by wuyujin1997 …

【Linux】进程概念一

进程概念一 冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。 截止目前为止, 我们所认识的计算机,都是一个个的硬件组成 输入设备:包括键盘&#x…

如何使用JDBC操作数据库?JDBC API的使用详细解读

文章目录1. DriverManager1.1 注册驱动1.2 获取连接2. Connection2.1 获取执行sql的对象2.2 事务管理3. Statement4. ResultSet5. PreparedStatement5.1 sql注入问题5.2 preparedStatement 原理6. 总结Java编程基础教程系列1. DriverManager DriverManager ,驱动管…

C++模板不支持分离编译的问题

目录前言分离编译模式普通函数的分离编译(正常)模板函数的分离编译(出错)分析解决方式拓展--extern关键字extern"C"extern变量extern模板--控制实例化前言 分离编译模式 一个项目如果有多个源文件.c组成,每个源文件单独编译,形成目标文件。最…

Kubernetes:分享一个可以展示资源视图的 K8s开源 Web/桌面 客户端工具 Octant

写在前面 博文内容主要为 Octant 介绍以及 桌面/Web 端的安装教程涉及 Linux/Windows 的安装。理解不足小伙伴帮忙指正 其实当你什么都经历了,会发现,人生无论你怎么精心策划都抵不过一场命运的安排。 Octant 不是仪表板,Octant 是一个带有仪…

数据结构 最短路径课设(源码+实验报告+视频讲解)(不要钱、用了自取)

XIAN TECHNOLOGICAL UNIVERSITY 课程设计报告 实验课程名称 算法与数据结构 专 业: 班 级: 姓 名: 学 号: 实验学时: 指导…

Linux Debian11安装QT6开发环境

从Qt5.14开始,官方不提供离线安装包,只提供源码包和在线安装器。但是清华为我们提供了快速的在线安装方式。 一.下载清华提供的在线安装器 在线安装器下载链接 二、给在线安装器文件赋予执行权限 三、配置镜像地址运行安装器 清华源: ./…

7.Java判断和循环+面试相关力扣算法题详解

提示: 文章目录前言一、顺序结构二、分支语句(1)if语句(2)switch语句*default的位置和省略:*case穿透*switch新特性*switch和if的第三种格式各自的使用场景三、循环结构1.分类2.for循环3.while循环4.for和while的对比:5.for和while循环的区别:6.练习:四、面试时的两…