GNN 简介

news2024/11/17 22:38:24

A Gentle Introduction to Graph Neural Networks

A Gentle Introduction to Graph Neural Networks

GNN简介

图神经网络(GNN)是一种基于图结构数据的深度学习模型,用于处理和分析图数据。图数据由节点(顶点)和边(连接节点的线)组成,它们可以表示为社交网络、推荐系统、生物信息学中的分子结构等。

简介: GNN是一种利用节点和节点之间关系的信息进行学习的模型。与传统的深度学习模型不同,GNN考虑了节点的邻居节点的信息,使得节点可以通过邻居节点的信息进行信息传播和学习。这种模型结构使得GNN在处理图结构数据时非常有效。

重要性: GNN的重要性在于其对非结构化数据(如图数据)进行建模和学习的能力。它扩展了深度学习的范畴,使得能够处理更加复杂的数据结构,并在许多领域取得了重要的成果。GNN能够学习节点间的复杂关系,从而可以用于预测、分类、聚类等任务。

应用领域: GNN在多个领域有着广泛的应用,包括但不限于:

  1. 社交网络分析: 用于发现社交网络中的社区结构、影响力分析、推荐系统等。

  2. 推荐系统: 基于用户行为数据和物品关系图,提高个性化推荐的准确性。

  3. 生物信息学: 分析蛋白质相互作用、药物发现、基因表达等方面,有助于发现模式和相互关系。

  4. 金融领域: 用于风险管理、欺诈检测和市场预测等,分析复杂的金融交易关系。

  5. 物联网(IoT): 处理物联网中设备之间的连接和关系,优化网络管理和资源分配。

  6. 推荐系统: 用于电子商务中的个性化推荐、新闻推荐等领域,结合用户行为和物品关系。

这些仅仅是一些典型的应用领域,随着研究的深入,GNN在更多领域中的应用也在不断扩展。

图的基本组成  

图是由节点(或顶点)和边(或连接)组成的一种抽象数学结构。这两个基本组成部分定义了图的基本元素和它们之间的关系。以下是图的基本组成部分:

  1. 节点(顶点): 节点是图中的基本单元,通常用来表示实体或对象。在图中,节点可以是任何东西,比如一个人的社交网络中的个人、一篇文章、一个城市等。节点用来表示图中的各种实体,有时也带有属性或特征。

  2. 边(连接): 边是节点之间的连接,用来表示节点之间的关系。边可以是有向的(箭头指示连接的方向)或无向的(连接没有指定方向)。边也可以有权重,表示节点之间连接的强度或相关性。在社交网络中,边可以表示两个人之间的关系,比如朋友关系。

  3. 图的属性: 图还可以有一些属性,比如图的类型(有向图、无向图)、规模(节点数量、边的数量)、密度(实际边数和可能边数的比例)、连通性等。

总的来说,图由节点和边组成,它们之间的连接关系描述了实体之间的关联或联系。图可以以各种形式出现,并且在不同领域中有着广泛的应用。

GNN可以做什么

为了进一步描述每个节点、边或整个图,我们可以在图的每个部分中存储信息。
利用图神经网络的目的就是整合特征!

图像作为图表:我们通常将图像视为具有图像通道的矩形网格,将它们表示为数组(例如,244x244x3 浮点数)。另一种将图像视为具有规则结构的图,其中每个像素代表一个节点,并通过边缘连接到相邻像素。每个非边界像素正好有 8 个邻居,每个节点存储的信息是表示该像素的 RGB 值的 3 维向量。

可视化图的连通性的一种方法是通过其邻接矩阵。我们对节点进行排序,在本例中,每个节点是一个简单的 5x5 笑脸图像中的 25 个像素,并填充一个矩阵N*N如果两个节点共享一条边,则有一个条目。请注意,下面这三种表示形式都是同一数据的不同视图。

文本作为图表:我们可以通过将索引与每个字符、单词或标记相关联,并将文本表示为这些索引的序列来数字化文本。这将创建一个简单的有向图,其中每个字符或索引都是一个节点,并通过边连接到其后面的节点。

当然,在实践中,这通常不是文本和图像的编码方式:这些图形表示是多余的,因为所有图像和所有文本都将具有非常规则的结构。例如,图像的邻接矩阵具有带状结构,因为所有节点(像素)都连接在网格中。文本的邻接矩阵只是一条对角线,因为每个单词仅连接到前一个单词和下一个单词。

邻接矩阵A表示邻居之间的关系

GNN的主要任务: Graph级别的任务

在图级任务中,我们的目标是预测整个图的属性。

like:分子结构

GNN的主要任务: Node级别的任务

节点级任务涉及预测图中每个节点的身份或角色。

like:社交网络

构建GNN

1、构建图。第一步是考虑如何表示与神经网络兼容的图。

邻接矩阵的缺点:

1)节点数量可能约为数百万,并且每个节点的边数可能变化很大。通常,这会导致邻接矩阵非常稀疏,空间效率低下。

2)有许多邻接矩阵可以编码相同的连接性,并且不能保证这些不同的矩阵在深度神经网络中会产生相同的结果(也就是说,它们不是排列不变的)。

表示稀疏矩阵的一种优雅且节省内存的方式是邻接表。如下:

GNN 是对图的所有属性(节点、边、全局上下文)的可优化变换,可保留图对称性(排列不变性)。

该GNN 在图的每个组件上使用单独的多层感知器 (MLP);我们称之为 GNN 层。对于每个节点向量,我们应用 MLP 并获取学习到的节点向量。我们对每条边执行相同的操作,学习每条边的嵌入,并且对全局上下文向量执行相同的操作,学习整个图的单个嵌入。

与神经网络模块或层一样,我们可以将这些 GNN 层堆叠在一起。

由于 GNN 不会更新输入图的连通性,因此我们可以使用与输入图相同的邻接表和相同数量的特征向量来描述 GNN 的输出图。但是,输出图已经更新了嵌入,因为 GNN 已经更新了每个节点、边和全局上下文表示。

2、消息传递

消息传递分三个步骤进行:

  1. 1)对于图中的每个节点,收集所有相邻节点的嵌入(或消息)。

  2. 2)通过聚合函数(如 sum)聚合所有消息。

  3. 3)所有汇集的消息都通过更新函数(通常是学习的神经网络)传递。

信息聚合:聚合操作可以当作全连接层。

但是更新的方法有很多,可以自己设置:(与CNN相似)

信息更新:每个点的特征该如何更新呢? 考虑自身信息+邻居信息

结合自身与邻居信息:
汇总:   

更新后 = 激活函数(自己的信息+邻居特征)

ps: GNN也可以有多层,GNN的本质就是更新各部分特征

其中输入是特征,输出也是特征,邻接矩阵也不会变的

3、最后预测

我们已经构建了一个简单的 GNN,但是我们如何在上面描述的任何任务中进行预测呢?

我们将考虑二元分类的情况,但该框架可以轻松扩展到多类或回归情况。如果任务是对节点进行二进制预测,并且图已经包含节点信息,则方法很简单 - 对于每个节点嵌入,应用一个线性分类器。

然而,事情并不总是那么简单。例如,您可能在图中存储了边中的信息,但在节点中没有信息,但仍然需要对节点进行预测。我们需要一种从边缘收集信息并将其提供给节点进行预测的方法。我们可以通过池化来做到这一点。池化分两步进行:

  1. 1)对于要合并的每个项目,收集它们的每个嵌入并将它们连接成一个矩阵。

  2. 2)然后,通常通过求和运算来聚合收集到的嵌入。

  3. 因此,如果我们只有边缘级特征,并且尝试预测二进制节点信息,我们可以使用池化将信息路由(或传递)到需要去的地方。模型看起来像这样。

如果我们只有节点级特征,并尝试预测二进制边缘级信息,则模型如下所示。

如果我们只有节点级特征,并且需要预测二元全局属性,则需要将所有可用的节点信息收集在一起并聚合它们。这类似于CNN 中的全局平均池层。对于边缘也可以进行同样的操作。

请注意,在这个最简单的 GNN 公式中,我们根本没有在 GNN 层内使用图的连接性。每个节点、每条边以及全局上下文都是独立处理的。我们仅在汇集信息进行预测时使用连接性。

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

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

相关文章

在Win11上部署ChatGLM3详细步骤

023年10月27日,智谱AI于2023中国计算机大会(CNCC)上,推出了全自研的第三代基座大模型ChatGLM3及相关系列产品,这也是智谱AI继推出千亿基座的对话模型ChatGLM和ChatGLM2之后的又一次重大突破。此次推出的ChatGLM3采用了…

【计算机网络】浏览器的通信能力

1. 用户代理 浏览器可以代替用户完成http请求,代替用户解析响应结果,所以我们称之为用户代理 user agent。 浏览器两大核心能力: 自动发送请求的能力自动解析响应的能力 1.1 自动发送请求的能力 用户在地址栏输入了一个url地址&#xff0…

Mac 上安装 Emscripten

背景:Web 端需要使用已有的 C 库,需要将 C 项目编译成 WebAssembly(.wasm) 供 js 调用。 Emscripten 可以将 C 编译成 .wasm 一、下载源码 # 下载 emsdk 源码 git clone https://github.com/emscripten-core/emsdk.git# 下载完成后进入到 emsdk 项目根…

voco品牌入华三周年,以“妙趣重生”之姿共绘酒店永续发展新风向

入华三年高速发展,乘酒店存量市场之潮,用艺术诠释绿色环保,趣享可持续旅程 2023年10月30日,西安 – 近日,洲际酒店集团旗下高端酒店品牌voco迎来进入大中华市场三周年,并于西安经开voco酒店举办周年庆典&a…

回收废品抢派单小程序开源版开发

回收废品派单抢派单小程序开源版开发 在这个废品回收抢单派单小程序开源版开发中,我们将构建一个专业且富有趣味性的平台,以深度的模式来重塑废品回收体验。 我们将提供一个会员注册功能,用户可以通过小程序授权注册和手机号注册两种方式快…

chatgpt账号,官方账号获取

有需要帮助可以联系我,我可以帮助获取(有偿)。

vue页面el-tab控件标签栏加入按钮功能

vue页面el-tab控件标签栏加入按钮功能 显示效果为&#xff1a; <el-tabs v-model"activeName" type"border-card" style"margin-right:5px"><el-tab-pane label"模型管理" name"first"><span slot"l…

安装Pytorch的详细步骤

若为安装Anaconda的友友&#xff0c;可以移步到这篇文章&#xff0c;先安装anaconda&#xff1a; https://blog.csdn.net/mariodf/article/details/134119941 一、anaconda创建虚拟环境 1、首先输入&#xff1a; conda env list 可以查看当前的虚拟环境&#xff1a; 2、创…

Linux网络基础2 -- 应用层相关

一、协议 引例&#xff1a;编写一个网络版的计算器 1.1 约定方案&#xff1a;“序列化” 和 “反序列化” 方案一&#xff1a;客户端发送形如“11”的字符串&#xff0c;再去解析其中的数字和计算字符&#xff0c;并且设限&#xff08;如数字和运算符之间没有空格; 运算符只…

jenkins详细安装教程

这里写目录标题 一、Jenkins安装与部署1-1、Jenkins的简介1-2、下载需要的软件1-2-1 jekins.war1-2-2 tomcat安装方式 1-3、使用11版本的jdk1-4、开启jenkins1-5、获取密码1-5 修改镜像(可改可不改) 二、卸载Jenkins 一、Jenkins安装与部署 1-1、Jenkins的简介 Jenkins是一个…

vue封装个日历,样式参考vant

vue封装个日历&#xff0c;样式参考vant 结果展示 <template><div class"report"><Header title"工作日历" :isShowLeft"true" onClickBack"goBack" /><div class"report-content"><van-icon …

Vue 菜单导航栏,轮播图

导航菜单栏结构和样式代码实现 一级导航栏 views/HomeView.vue <template><div><Shortcut></Shortcut><Header></Header><div class"inner"><Navigation></Navigation></div><div>我是主页&l…

多人协作使用git如何解决冲突?

什么情况会产生冲突 git merge XXX(合并分支时的冲突)&#xff1a; 当你尝试将一个分支的更改合并到另一个分支时&#xff0c;如果两个分支都修改了相同的文件的相同部分&#xff0c;Git 将无法自动解决冲突&#xff0c;因此会发生冲突。你需要手动解决这些冲突&#xff0c;然后…

外汇天眼:在2023年Expo上探索金融科技的未来!

从2020年初至2022年年底&#xff0c;全球范围内爆发的新冠疫情蔓延&#xff0c;对各国经济造成了严重冲击&#xff0c;导致贸易活动几近停滞&#xff0c;国际人员流动受限&#xff0c;产业链陷入危机。为应对这一局面&#xff0c;美欧经济体采取了前所未有的扩张性财政和货币政…

【已解决】取消 el-aside 默认宽度|不再用 !important

文章目录 问题原因解决方法 问题原因 element-ui 的 el-aside 组件有 width props&#xff0c;默认为 300px 解决方法 给 el-aside 标签添加 width"" width 为空&#xff08;不正确的css样式/写法&#xff09;样式将会失效。 就可以在 style 中修改 el-aside 宽…

【小尘送书-第十期】《ChatGPT进阶:提示工程入门》

大家好&#xff0c;我是小尘&#xff0c;欢迎你的关注&#xff01;大家可以一起交流学习&#xff01;欢迎大家在CSDN后台私信我&#xff01;一起讨论学习&#xff0c;讨论如何找到满意的工作&#xff01; &#x1f468;‍&#x1f4bb;博主主页&#xff1a;小尘要自信 &#x1…

Windows原生蓝牙编程 第一章 获取本地蓝牙并扫描周围蓝牙信息并输出【C++】

蓝牙系列文章目录 第一章 获取本地蓝牙并扫描周围蓝牙信息并输出 文章目录 前言头文件一、获取本地蓝牙的句柄和信息1.1 wstring转string1.2 获取MAC地址1.3 扫描附近设备并输出1.4 主函数 二、全部代码三、输出结果编译并运行查看结果 MAC地址我就打个码v ![在这里插入图片描述…

拼多多商品数据分析接口|竞品分析接口|支持高并发|拼多多商品价格|拼多多商品优惠券|拼多多已拼人数|API接口申请指南

拼多多提供了一些API接口&#xff0c;可以通过这些接口获取拼多多的商品数据。具体使用方法如下&#xff1a; 获取API接口提供的URL。在API文档中&#xff0c;可以找到获取商品信息的API接口URL。 根据需要获取的信息&#xff0c;选择响应的API。例如&#xff0c;如果想获取商…

AD教程(二)元件库(原理图库)介绍及电阻容模型的创建

AD教程&#xff08;二&#xff09;元件库&#xff08;原理图库&#xff09;介绍及电阻容模型的创建 元件模型组成 主要由元件边框、管脚&#xff08;包括管脚序号和管脚名称&#xff09;、元件名称和元件说明组成&#xff0c;对尺寸大小没有严格要求&#xff0c;注意耦合&…

视频无痕去水印怎么去,这三个神器轻松去除

视频无痕去水印怎么去&#xff1f;各位小伙伴在初学剪视频的时候是不是和我一样经常会碰到一个烦人的问题&#xff1a;在网上找到的视频素材总是带着讨厌的水印&#xff0c;不仅影响美观还挡住了视频的一些部分&#xff0c;让人特别不爽&#xff0c;我想各位遇到这种情况的时候…