零基础多图详解图神经网络(GNN/GCN)【李沐论文精读】

news2024/11/24 12:40:47

A Gentle Introduction to Graph Neural Networks

在这里插入图片描述

在上图中,每一层都是一层网络,每一层的节点都受到下一层中自身节点和邻居节点的影响。如果网络比较深,是可以处理到一幅图中较大范围的节点。

前言

图神经网络在应用上还只是起步阶段,应用领域有药物发现、物理模拟、虚假新闻检测、车流量预测、推荐系统等。这篇文章是探索和解释现代图神经网络,第一部分是什么样的数据能表示成一张图,第二部分是图和别的数据有什么不同,第三部分是构建GNN的模块,第四部分是搭建一个GNN的playground

图是一个序列。图越深,上层的节点链接的下次节点越多

什么是图

把节点信息、边信息和全局信息做embedding,通俗地说就是把这些信息存储为向量的形式。所以图神经的核心就是,怎么样把我们想要的信息表示成向量,以及向量是否能通过数据学习到

在图上使用机器学习的挑战是什么?
需要的是节点、边、全局信息、连接性四种类型的信息来做预测。
连接性是用邻接矩阵来存储,如果图非常大,比如Wikipedia,则存储不下来。由于是邻接矩阵很稀疏,所以用稀疏矩阵来存储会更好,而稀疏矩阵在GPU上训练一直是个技术难题。
邻接矩阵任意交换行列,会导致邻接矩阵改变,他们其实节点关系不变,文章给出了下面这个例子(动态图)表示不同样子的邻接矩阵都形成了连接性相同的图,而他们都是异构的。
在这里插入图片描述
那么想要存储高效且不受排序的影响应该如何存储呢?
在这里插入图片描述
上图中的节点、边和全局信息都可以用向量表示,而不一定只是标量。这个adjacency list能够用节点id把边的连接关系表示出来。

图神经网络

介绍完图的背景后,现在开始介绍图神经网络(GNNs)。
什么是GNNs?是对图上所有属性进行可以优化的变换,变换能保持图的对称信息(节点重新排序后,结果不变)。message passing neural network是一种GNNs的框架,当然GNN是可以用别的方式构建。
GNNs是“graph-in, graph-out”,他会对节点、边的信息进行变换,但是图连接性是不变的。
首先,对节点向量、边向量、全局向量分别构建一个MLP(多层感知机),MLP的输入输出的大小相同
在这里插入图片描述
三个MLP组成GNN的一层,一个图经过MLP后仍然是一个图。对于顶点、边、全局向量 分别 找到对应的MLP,作为其更新函数(update function)。可以看到,输出后图的属性变化了,但是图的结构没有改变,符合我们的需求。MLP对每个向量独自作用,不会影响的连接性

堆叠了多层上述的模型后得到了GNN,现在来到最后一层,对节点进行预测。
在这里插入图片描述
上图可以看到,经过GNN的最后一层,得到的也是一个图,然后在图后面接一个全连接层(分类的话神经元数量则是类别数,再套一个softmax,回归的话神经元数量则是1),所有节点共享一个全连接层。
考虑另一种情况,如果说某个节点是没有自己的属性(向量)的,应该怎么做?这里介绍到pooling
在这里插入图片描述
做法就是把节点相连的边向量拿出来,全局向量拿出来,然后将这些向量相加求和,最后经过一个节点共享的输出层得到节点预测结果。
在这里插入图片描述
假如没有边向量而只有节点的向量,则汇聚相连的节点的向量,如下图所示:
在这里插入图片描述
那如果没有全局向量,只有节点向量呢?就把全部的节点向量汇聚起来,经过最后的输出层得到全局的输出。
在这里插入图片描述
所以,不管缺哪类属性,我们都可以通过汇聚这个操作,得到最终的输出值。下图则是GNN流程的描述。
在这里插入图片描述
如上模型的局限性是很明显的,并没有用到图的结构,仅仅是点、边向量分别做MLP的过程。

解决方法:信息传递

在这里插入图片描述
在更新某个节点的向量时,会将自己的向量和邻居节点的向量进行聚合(相加)操作,然后再传入MLP更新节点的向量。作者说这个过程和标准卷积相似,但其实不完全是。下图则是GCN的架构涉及,通过聚集邻居节点来更新节点的表达
在这里插入图片描述

学习边的表示

下图是信息传递层的原理,从节点到边、边到节点的传递。

边和顶点之间的信息传递,用于预测位置的属性
在这里插入图片描述
下面是两种不同的聚集方式:先从节点到边/先从边到节点。现在对于哪种做法更好还没有定论,作者提出可以交替进行(下图种的weave layer),只是向量会更宽一些。
在这里插入图片描述

添加全局表示

如果说图很大,或者连接不够紧密,那聚合就需要走很远很远的路。这里介绍了一种解决方案:master node or context vector,这是一个虚拟的、抽象的 点,与所有的节点和边相连。

在这里插入图片描述
在这里插入图片描述
作者说这个其实可以认为是featurize-wise attention mechanism(特征级的注意力机制),因为将相近的节点聚集了过来。现在我们就知道了基于消息传递的图神经网络是怎么样工作的。

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

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

相关文章

基于SpringBoot健身房管理系统【附源码】

效果如下: 系统首页界面 系统注册详细页面 健身课程详细页面 后台登录界面 管理员主页面 员工界面 健身教练界面 员工主页面 健身教练主页面 研究背景 随着生活水平的提高和健康意识的增强,现代人越来越注重健身。健身房作为一种专业的健身场所&#x…

日期类的实现(C++)

个人主页:Jason_from_China-CSDN博客 所属栏目:C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目:C知识点的补充_Jason_from_China的博客-CSDN博客 前言 日期类是六个成员函数学习的总结和拓展,是实践的体现 创建文件 构造函…

HCIP--以太网交换安全(二)

端口安全 一、端口安全概述 1.1、端口安全概述:端口安全是一种网络设备防护措施,通过将接口学习的MAC地址设为安全地址防止非法用户通信。 1.2、端口安全原理: 类型 定义 特点 安全动态MAC地址 使能端口而未是能Stichy MAC功能是转换的…

在VMware WorkStation上安装飞牛OS(NAS系统)

对于NAS系统,小白相信很多小伙伴都不陌生,在许多场景下也能看得到,它其实可以算是文件存储服务器,当然,你如果给它加上其他服务的话,它也能变成网页服务器、Office协同办公服务器等等。 有许多小伙伴都拿这…

信息安全工程师(38)防火墙类型与实现技术

一、防火墙类型 按软、硬件形式分类 软件防火墙:通过软件实现防火墙功能,通常安装在个人计算机或服务器上,用于保护单个设备或小型网络。硬件防火墙:采用专门的硬件设备来实现防火墙功能,通常部署在企业网络边界或数据…

基于SpringBoot图书馆预约与占座小程序【附源码】

效果如下: 首页界面 用户登录界面 查看座位界面 管理员登录界面 管理员主界面 座位分布信息界面 预约信息界面 研究背景 随着互联网技术的不断进步和智能手机的广泛普及,图书馆作为知识获取和学习的重要场所,其管理方式也在逐步向信息化和智…

系统架构设计师论文《论企业应用系统的数据持久层架构设计》精选试读

论文真题 数据持久层(Data Persistence Layer)通常位于企业应用系统的业务逻辑层和数据源层之间,为整个项目提供一个高层、统一、安全、并发的数据持久机制,完成对各种数据进行持久化的编程工作,并为系统业务逻辑层提…

【电路基础 · 4】电路的图;KCL、KVL巩固;支路电流法

一、电路的图 1.线性电路的一般的分析方法 2.计算方法 掌握计算方法。 3.支路 branch 和 节点 node 对于支路,经常取电压、电流为同向。 4.KCL 巩固 巩固一下之前学习的 KCL。 但是需要注意: 对于一个电路,如果有 n 个节点,那…

浅学React和JSX

用antd做个人博客卡到前端了,迫不得已来学react,也是干上全栈了-- --学自尚硅谷张天禹react React就是js框架,可以理解为对js做了封装,那么封装后的肯定用起来更方便。 相关JS库 react.js:React核心库。react-dom.js&a…

计算机基本组成和工作原理(Basic Components and Working Principles of Computers)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

node配置swagger

安装swagger npm install swagger-jsdoc swagger-ui-express 创建 swagger.js 配置文件 ​ const path require(path); const express require(express); const swaggerUI require(swagger-ui-express); const swaggerJsDoc require(swagger-jsdoc); // 修改 swaggerDoc…

DAY26||669.修建二叉树 |108.将有序数组转换为二叉搜索树|538.把二叉搜索树转换为累加树

669.修剪二叉树 题目:669. 修剪二叉搜索树 - 力扣(LeetCode) 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树…

ArcGIS属性表怎么连接Excel表格?

ArcGIS中,属性表是存储空间要素非几何特征属性的重要工具。有时,我们需要将这些属性与外部数据,如Excel表格中的数据进行连接。以下是如何在ArcGIS中实现这一过程的步骤。 要把Excel表里的数据导入到ArcGIS里的地图数据里面,对数…

[单master节点k8s部署]34.ingress 反向代理(一)

ingress是k8s中的标准API资源,作用是定义外部流量如何进入集群,并根据核心路由规则将流量转发到集群内的服务。 ingress和Istio工作栈中的virtual service都是基于service之上,更细致准确的一种流量规则。每一个pod对应的service是四层代理&…

City Builder Urban 城市都市街道建筑场景模型

目前拥有178项优质资产。 城市建设者:Urban一个高质量的资产包,专为快速的纽约式城市建设而设计,与所有渲染管道兼容。 资产 56个带LOD的街道和屋顶道具 13个可堆叠的建筑部件与LOD混合搭配 10个不同尺寸的建筑装饰/分离器,总共40个装饰 请参阅秋季列表的技术细节 1个带有C…

【redis-07】redis实现主从复制架构和底层原理

redis系列整体栏目 内容链接地址【一】redis基本数据类型和使用场景https://zhenghuisheng.blog.csdn.net/article/details/142406325【二】redis的持久化机制和原理https://zhenghuisheng.blog.csdn.net/article/details/142441756【三】redis缓存穿透、缓存击穿、缓存雪崩htt…

UE管理内容 —— FBX Static Mesh Pipeline

目录 General Setup Export Mesh Static Mesh LODs FBX导入流程中加入 静态网格体 支持后,将网格体从3D软件加入虚幻引擎的操作便极为简便;网格体导入后,网格体的材质纹理(仅限漫反射和法线贴图)也将被导入&#xf…

Bianchi模型、python计算及ns3验证

由于项目与学习需要,最近学习了bianchi模型,并在python中进行了公式->代码的转化,仿真结果与ns3结果对比。 本文更多的是理解模型各个部分的含义、把各个简单的推导过程转化为python、ns3对比: 1 理论吞吐与传输概率、传输成功概率、包长、速率、排队时间、成功传输时…

基于双PI控制器和SVPWM的定转子双永磁同步电机simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 永磁同步电机的基本结构和工作原理 4.2 双PI控制器的设计方法 4.3 SVPWM 的实现原理 5.完整工程文件 1.课题概述 为了实现定转子双永磁同步电机的高性能控制,通常采用双 PI 控制器和 S…

Linux系统创建新分区并挂载的方法

一、引言 本文以CentOS为例讲述Linux系统创建新分区并挂载的方法。如下图所示,用fdisk -l命令可以看到该CentOS系统下有一个磁盘/dev/vda,其容量为2199G,即2T。该磁盘有两个分区:vda1和vda2: 用lsblk命令可以查看到磁…