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

news/2024/10/7 16:34:54 标签: 神经网络, 人工智能, 深度学习

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.niftyadmin.cn/n/5693062.html

相关文章

SpringBoot 集成 Ehcache 实现本地缓存

目录 1、Ehcache 简介2、Ehcache 集群方式3、工作原理3.1、缓存写入3.2、缓存查找3.3、缓存过期和驱逐3.4、缓存持久化 4、入门案例 —— Ehcache 2.x 版本4.1、单独使用 Ehcache4.1.1、引入依赖4.1.2、配置 Ehcache4.1.2.1、XML 配置方式4.1.2.1.1、新建 ehcache.xml4.1.2.1.2…

vue2和vue3全面对比

Vue 2 vs Vue 3 全面对比表 特性Vue 2Vue 3主要变化1. API 风格选项式 API (Options API)组合式 API (Composition API) 选项式 APIVue 3 引入更灵活的组合式 API,同时保留选项式 API2. 响应式系统Object.defineProperty()Proxy更高效,可检测数组索引和…

Kubernetes proxy 命令与集群资源交互中起的作用

关于 Kubernetes 中的 kubectl proxy 命令,理解它的作用有助于更深入地掌握 Kubernetes 如何管理集群内的资源,以及开发和调试时如何通过代理来简化交互。kubectl proxy 提供了一种安全且方便的方式来访问 Kubernetes API 服务器,尤其是在调试…

freex源码抄写+ue5视频1个+渲染泛读催眠

分三块: 一,freex系列源码抄写。 工作为主,立足本职,再谈发展。 freex的四个模块共计408741行(含空格和注释),如果周一到周四每天300行,周六日开着和平精英抄1000行,那就…

系统架构设计师教程 第15章 15.3 SOA的参考架构 笔记

15.3 SOA的参考架构 企业集成的架构可划 分为6大类。 (1)业务逻辑服务 (Business Logic Service): 包括用于实现业务逻辑的服务和执行业务 逻辑的能力,其中包括业务应用服务 (Business Application Service)、 业务伙伴服务 (Partner Service) 以及应用和信息资产…

Canvas指纹:它是什么以及如何避免被Canvas指纹识别跟踪

Canvas指纹识别技术已成为追踪在线行为的一种隐蔽手段。尽管这个技术在某些方面有其正当用途,它也可能被用于监视我们的在线活动,不经我们的同意就收集个人信息。 你认为启用Canvas指纹禁用功能就能使你在网络上无迹可寻吗?可能需要重新考虑…

在spring端发送微信登录请求

微信小程序的配置 application-dev.yml sky:wechat:appid: wx7c3cfb677bfc2fcasecret: 26fdab94f4910262d2b3648a947fce03application.yml 配置jwt配置秘钥 sky:jwt:# 设置jwt签名加密时使用的秘钥admin-secret-key: itcast# 设置jwt过期时间admin-ttl: 720000000# 设置前端传递…