图神经网络揭秘:视觉和实用指南

news2024/9/21 23:44:35

目录

一、说明

二、图如何网络化?

三、你需要知道的

3.1 进入图神经网络

3.2 消息传递

3.3 我们如何处理最终的向量表示?

四、图神经网络,总结

4.1 为什么选择图形神经网络?

4.2 简而言之


一、说明

了解图神经网络的世界,使用插图和示例从理论角度学习概念。

Graph Deep Learning (GDL) 是一个新兴的研究领域。在学习和分析图形数据时,它非常有用。在这里,我将介绍一个简单的图神经网络 (GNN) 的基础知识以及其内部工作原理背后的直觉。别担心,有大量彩色图表供您直观地了解正在发生的事情!

二、图如何网络化?

图形是一种数据结构,由节点(顶点)和边连接在一起,以表示没有确定开始或结束的信息。所有节点在空间中占据任意位置,当绘制在 2D(甚至 nD)空间中时,通常根据相似的特征进行聚类。

边缘上的黑色箭头表示节点之间的关系类型。它显示了一种关系是相互的还是单方面的。这两种不同类型的图形是有向的(节点之间的连接方向很重要)和无向的(连接顺序无关紧要)。有向图本质上可以是单向的,也可以是双向的。

图表可以表示很多东西——社交媒体网络、分子等。节点可以被认为是用户/产品/原子,而边缘代表连接(跟随/通常购买/绑定)。社交媒体图可能如下所示,节点为用户,边缘为连接:

节点表示用户,而边缘表示两个实体之间的连接/关系。社交媒体图表通常更加庞大和复杂!

三、你需要知道的

在这里,我将立即提及一些概念。我将讨论递归单元嵌入向量表示前馈神经网络。很高兴了解相当多的图论(例如,图是什么以及它看起来是什么样子)。

可能有些术语您不熟悉。不用担心!对于所有令人困惑的行话,我已经链接了我能找到的最佳解释,涵盖了上述概念的基础知识。这样,您可以进一步阅读这些概念,同时还可以理解它们在图神经网络中扮演的角色。

3.1 进入图神经网络

每个节点都有一组定义它的特征。在社交网络图的情况下,这可能是年龄、性别、居住国家/地区、政治倾向等。每条边都可以将具有相似特征的节点连接在一起。它显示了它们之间的某种互动或关系。

假设我们有一个任意图形 G,其中包含以下顶点和边:

这是上面的同一张图。

为简单起见,我们假设特征向量是当前节点索引的热编码。同样,标签(或类)可以是节点的颜色(如上所示的绿色、红色和黄色)。它看起来像这样:

他们所处的顺序并不重要。

注意:实际上,尽量不要使用一个热编码,因为节点的顺序可能会很混乱。相反,使用唯一标识节点的特征(例如:年龄、性别、政治倾向等用于社交媒体或数值化学性质用于分子研究)。

现在我们已经有了节点的单热编码(或嵌入),让我们通过引入神经网络来改变图形。所有节点都被转换为递归单元(或者实际上,任何神经网络架构;我在这里使用递归单位),所有的边缘都包含简单的前馈神经网络。它看起来像这样:

包络只是每个节点(现在是递归单元)的热编码(嵌入)向量。

3.2 消息传递

一旦节点和边的转换完成,图形就会在节点之间执行消息传递。此过程也称为邻域聚合,因为它涉及通过定向边将来自给定参考节点周围的节点的消息(也称为嵌入)推送。

注意:有时,您可以对不同类型的边使用不同的神经网络;一个用于单向,另一个用于双向。这样,您仍然可以捕获节点之间的空间关系。

就GNNs而言,对于单个参考节点,相邻节点通过边缘神经网络将其消息(嵌入)传递到参考节点上的循环单元中。通过在当前嵌入上应用所述循环函数和相邻节点嵌入的边缘神经网络输出的求和,更新了参考循环单元的新嵌入。让我们放大顶部的红色节点并可视化该过程:

紫色方块是一个简单的前馈 NN,应用于来自相邻节点的嵌入物(白色包络)。应用于当前嵌入(白色包络)的递归函数(红色三角形)和边缘神经网络输出(黑色包络)的求和以获得新的嵌入(白色包络素数)。

此过程在网络中的所有节点上并行执行,因为第 L+1 层中的嵌入依赖于第 L 层中的嵌入。这就是为什么在实践中,我们不需要从一个节点“移动”到另一个节点来执行消息传递。

注意:边缘神经网络输出的总和(图中的黑色包络线)是输出顺序不变的。

3.3 我们如何处理最终的向量表示?

一旦您执行几次邻域聚合/消息传递过程,您就会为每个节点循环单元获得一组全新的嵌入。

通过消息传递的时间步长/轮次,节点对自己的信息(特征)和相邻节点的信息(特征)有了更多的了解。这样可以更准确地表示整个图形。

为了在管道的更高层进行进一步处理,或者只是为了表示图形,您可以获取所有嵌入并将它们相加,以获得表示整个图形的向量 H

使用 比使用邻接矩阵更好,因为尽管有任何图形扭曲,但这些矩阵并不表示图形的特征或独特方面——只是节点之间的边缘连接(根据某些上下文,这并不重要)。

为了总结这一步,我们将所有节点递归单元的最终向量表示(当然是阶数不变)相加,将此结果向量用作其他管道的输入或简单地表示图形。此步骤如下所示:

这是最终的图表,其中完全更新的节点在消息传递 n 次重复后嵌入向量。您可以获取所有节点的表示,并将它们相加得到 H。

四、图神经网络,总结

GNNs使用起来相当简单。事实上,实施它们涉及四个步骤。

  1. 给定一个图形,我们首先将节点转换为循环单元,将边转换为前馈神经网络。
  2. 然后我们对所有节点执行邻里聚合(消息传递,如果听起来更好)n 次。
  3. 然后,我们将所有节点的嵌入向量相加,得到图形表示 H
  4. 随意将 H 传递到更高的层中,或使用它来表示图形的独特属性!

4.1 为什么选择图形神经网络?

既然我们知道了图神经网络是如何工作的,我们为什么要应用/使用它们呢?

在社交媒体图表的情况下,GNNs在内容推荐方面非常出色。例如,当用户关注具有相似政治倾向的其他用户时,GNNs可用于节点分类,以预测网站上的某一内容是否可以发送到该用户的新闻源。

在建议“关注谁”时,系统可以考虑用户的行业并提供潜在的联系——边缘分类。

4.2 简而言之

在这里,我们通过一系列可视化介绍了图神经网络的基础知识。Graph DL 真的很有趣,我敦促你尝试编写自己的实现。有大量的图形构造库,如 Deep Graph Library 或 PyTorch Geometric。

如果您对 Graph NN 的数学分解感兴趣,并带有解释本文中概念的代码片段,请将建议放在评论部分或给我留言(下面列出的配置文件)。

此外,还有一些很棒的资源可用于了解 GDL 算法以及从图形表示中捕获大量顺序和空间方面的不同方法。请在本文之外进行探索,并使用您选择的工具实现它。

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

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

相关文章

C#中投影运算的深入解析与实例应用

文章目录 1、投影运算的基本语法2、投影运算的高级用法3、投影运算在向量空间中的运用4、投影运算在数据库和XML中的实际应用5、投影运算能用于哪些实际场景?6、结论 在C#编程中,投影运算是一种常用的数据操作技术,它可以将一个数据集合转换成…

开放式耳机推荐?时尚潮流品牌:悠律ringbud pro开放式耳机实测测评

作为一位音乐发烧友,什么类型的耳机都体验过,有些几百上千的耳机音质还是差点意思,还是会有听久了感觉不舒服的情况,低音量感不够的问题,直到用了悠律ringbud pro开放式耳机,才算真正打开新世界的大门&…

C语言程序设计-[2] 数据类型、常量和变量

1、数据类型 C语言支持的数据类型如下: 2、常量 常量就是不同数据类型下的值。这里主要讲整型、实型和字符型常量。 (1)整型常量:用十进制、八进制和十六进制三种形式表示。 (1)实型常量:由整…

HCIP实验-MGRE

实验拓扑: 实验要求: 1.R2为ISP,其上只能配置IP地址 2.R1-R2之间为HDLC封装 3.R2-R3之间为PPP封装,pap认证,R2为主认证方 4.R2-R4之间为PPP分装,chap认证,R2为主认证方 5.R1、R3、R4构建MG…

unity拖拽物品遇到的bug及解决思路

记录一下拖拽实现过程中遇到的bug RectTransform 专门用在UI中transform 判断点击是否在UI中 使用这个函数就可以判断点击的是否是UI面板,返回true表明在UI面板中 EventSystem.current.IsPointerOverGameObject()值得一提的是,如果发现了有UI穿透效…

【C语言】分支与循环(分支篇)

前言 C语言是一种结构化的计算机语言,这里指的通常是顺序结构、选择结构、循环结构,掌握这三种结构之后我们就可以解决大多数问题。 分支结构可以使用if、switch来实现,而循环可以使用for、while、do while来实现。 1. if语句 1.1 if if…

【滴水三期】32/64位——PE文件节表打印与解析

【作业内容】 1、手动查&#xff0c;画个PE文件图。 2、编写程序打印节表中的信息。 3、根据节表中的信息&#xff0c;到文件中找到所有的节&#xff0c;观察节的开始位置与大小是否与节表中的描述一致 【PE file_buffer文件图】 【IMAGE_SECTION_HEADER解析】 <winNT.h…

web浏览器播放rtsp视频流,海康监控API

概述 这里记录一下如何让前端播放rtsp协议的视频流 ​ 项目中调用海康API&#xff0c;生成的视频流(hls、ws、rtmp等)通过PotPlayer播放器都无法播放&#xff0c;说明视频流有问题&#xff0c;唯独rtsp视频流可以播放。 但是浏览器本身是无法播放rtsp视频的&#xff0c;即使…

Qt3D给圆环等立体图形添加纹理图片

添加纹理图片&#xff0c;首先需要自己找一个纹理图&#xff0c;当然了&#xff0c;随便什么图片都行。 创建3D图形的主要步骤查看另一篇文章。 这里主要代码如下&#xff1a; 使用QTextureLoader加载图片&#xff0c;图片路径需为qrc:/的路径。 auto *planeTransform1 ne…

PyMongo

什么是PyMongo PyMongo 是一个 Python 库&#xff0c;用于与 MongoDB 数据库进行交互。MongoDB 是一个基于文档的 NoSQL 数据库&#xff0c;提供高性能、可扩展性和灵活的架构。PyMongo 提供了一套工具&#xff0c;使得在 Python 程序中操作 MongoDB 变得简单和高效。 安装PyMo…

【C++程序设计】——利用数组处理批量数据(二)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-削好皮的Pineapple! &#x1f468;‍&#x1f4bb; hello 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 削好皮的Pineapple! 原创 &#x1f468;‍&#x1f4…

17085 工作分配问题(优先做)

这个问题可以通过回溯法来解决。我们可以遍历所有可能的工作分配方案&#xff0c;然后找出总劳务费用最小的方案。 以下是C代码实现&#xff1a; #include <iostream> #include <vector> #include <algorithm> using namespace std;const int INF 1e9; co…

羌活基因组--文献精读-36

The chromosome-scale assembly of the Notopterygium incisum genome provides insight into the structural diversity of coumarins 羌活&#xff08;Notopterygium incisum&#xff09;基因组的染色体级别组装为香豆素的结构多样性提供了新的见解 摘要 香豆素是由苯丙素途…

内网安全:多种横向移动方式

1.MMC20.Application远程执行命令 2.ShellWindows远程执行命令 3.ShellBrowserWindow远程执行命令 4.WinRM远程执行命令横向移动 5.使用系统漏洞ms17010横向移动 DCOM&#xff1a; DCOM&#xff08;分布式组件对象模型&#xff09;是微软的一系列概念和程序接口。它支持不同…

Java中操作文件

认识⽂件 我们先来认识狭义上的⽂件(file)。针对硬盘这种持久化存储的I/O设备&#xff0c;当我们想要进⾏数据保存时&#xff0c; 往往不是保存成⼀个整体&#xff0c;⽽是独⽴成⼀个个的单位进⾏保存&#xff0c;这个独⽴的单位就被抽象成⽂件的概 念&#xff0c;就类似办公桌…

【Linux】深入理解线程

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

基于ssm的图书管理系统/图书借阅管理系统

获取源码联系方式请查看文章结尾&#x1f345; 摘 要 网络技术的快速发展给各行各业带来了很大的突破&#xff0c;也给各行各业提供了一种新的管理模块&#xff0c;对于图书管理将是又一个传统管理到智能化信息管理的改革&#xff0c;对于传统的图书借阅的管理&#xff0c;所包…

最长上升子序列LIS(一般+优化)

1. 题目 题目链接&#xff1a; B3637 最长上升子序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 输入样例&#xff1a; 6 1 2 4 1 3 4 输出样例&#xff1a; 4 说明/提示&#xff1a; 分别取出 1、2、3、4 即可。 2. 具体实现 2.1 一般做法 dp[i]表示第i个位置的…

医院管理系统读取身份证源码- CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、身份证读取 提高效率&#xff1a;快速获取身份信息&#xff0c;避免手动输入的繁琐和耗时&#xff0c;极大地提升业务办理速度。 准确性高&#xff1a;减少人工输入错误&#xff0c;确保身份信息的精准无误。 便捷操作&#xff1a;简化流程&#xff0c;使工作人员操作更轻…

51单片机个人学习笔记14(直流电机驱动及PWM)

前言 本篇文章属于STC89C52单片机&#xff08;以下简称单片机&#xff09;的学习笔记&#xff0c;来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 [1-1] 课程简介_哔哩…