图神经网络初探

article/2025/9/20 9:06:01

介绍

随着图神经网络(Graph Neural Networks,GNN)热潮的出现,了解、掌握图神经网络相关原理以及应用相关技术越来越成来从事人工智能人员的必要条件。本文主要概述图神经网络的概念、相关模型、经典应用,经过本文的学习,希望能够激发读者对于图神经网络的技术兴趣。

知识点

  • 图神经网络概述

  • 图嵌入

  • 图神经网络类型

  • 图神经网络典型应用


图神经网络概述

近几年来,基于计算资源的快速发展以及大量训练数据的可获得性等原因,引发了神经网络兴起与应用,并成功地推动了图像领域(Computer Vision, CV)与文本领域(Natural Language Processing, NLP)的发展与兴盛。曾经严重依赖于手工提取特征的机器学习模式,如今都已被各种端到端的深度学习范式所取代,如卷积神经网络(CNN)、长短期记忆网络(LSTM)、自注意力机制(self-attention)。

神经网络的不同模型基于不同的数据结构展开,例如,图像的本质为上下左右相连的像素值;而时间序列(语音、文本等)则由元素单向连接而成。对于图像处理,CNN 是目前的基础结构,对于时间序列,self-attention 机制是目前的集大成者。

以上所提到的均是欧氏空间数据,神经网络在其特征表征方面取得了可观效果,但在许多实际应用场景中,数据从非欧式空间生成,元素和元素之间,是一个互相联系的复杂网络,这时候应当用节点和连接它们的边来描述这种数据类型,比如,社交网络(用户为节点,关系为边)、交通网络(地点为节点,交通工具行驶路径为边)、化学分子(原子为节点,化学键为边)等等,这时候一般的神经网络便难以适用了。主要原因在于:

  • 图是不规则的,图中的每个节点都有不同数量的相邻节点,导致一些重要的操作(例如卷积)在规则的图像上很容易计算,但不再适合直接用于图;

  • 大部分神经网络模型的一个核心假设是数据样本之间彼此独立。然而,对于图来说,情况并非如此,图中的每个数据样本(节点)都会经由边与图中其他实数据样本(节点)相关,而这些信息不可或缺,可用于捕获实例之间的相互依赖关系。

如下图所示,为一些常见的图数据场景:

04e972edb6b7670fac49a5048a26ad3b.png


如以上所示的社交图、交通网络图等等,广泛地存在于各种现实应用中,因此,图一直是学界及当前工业界的研究热点。而近年来,人们对神经网络在图数据上的扩展越来越感兴趣。在多方因素的成功推动下,研究人员借鉴了卷积网络、循环网络和深度自动编码器的思想,定义和设计了用于处理图数据的神经网络结构,由此,一个新的研究热点——图神经网络应运而生。

图分析任务可以大致抽象为以下几类:

  • 节点分类:基于其他标记的节点和网络拓扑来确定节点标签,比如,在社交网络图中确定哪些人是“大V”。

  • 链接预测:预测缺失链路或未来可能出现的链路,比如,预测社交网络中某两个人可能存在关联,从而进行“可能认识的人”的推荐。

  • 图分类:任务不依赖于某个节点或某条边的属性,而是需要考虑整个图的信息,从而确定整张图的标签,比如,预测某分子结构是否有变异性。

  • 聚类:发现相似节点的子集,并将它们分组在一起,比如,将社交网络中的人群进行分类,从而进行基于社交的商品推荐。

  • 可视化:为了更深入直观地了解网络结构,如何对图进行表示的相关技术。

图嵌入

有时候查阅图神经网络的资料,最常见的名词是图嵌入(Graph Embedding)、图神经网络(GNN),那么这两者有什么关系吗?事实上,图神经网络是一个很宽泛的概念,可以简单地理解为:图神经网络=图+神经网络。而图嵌入发展较早,在早期是一个相对独立的领域,但在近期,人们开始基于图神经网络进行图嵌入的学习,因此可以说,图嵌入的表示应用了图神经网络。

因此,图神经网络的研究与图嵌入密切相关。在介绍图嵌入之前,我们先介绍什么是嵌入(Embedding)?嵌入在数学上是指,将一个空间的点映射到另一个空间,通常是从高维抽象的空间映射到低维的具象空间。嵌入的意义将高维数据转换到低维利于算法的处理。而图嵌入是指在保留图的网络拓扑结构和节点内容信息的基础上,找到一种映射函数,该函数将网络中的每个节点转换为低维度的潜在表示,如下图所示:

2a289a0e3f8bf3e804fb335388d479fb.png

图嵌入的方法大致可以划分为三大类别:

  • 矩阵分解:较传统的方法,计算量大,包括 Locally Linear Embedding、Laplacian Eigenmaps、Cauchy graph embedding、Structure Preserving Embedding、Graph Factorization 等方法。

  • 随机游走:主要借鉴了 NLP 中 word2vec 的思想,包括 DeepWalk、node2vec、 Hierarchical representation learning for network、Walklets 等方法。

  • 深度学习方法:在这里,图嵌入的深度学习方法也属于图神经网络,比如 Structural deep network embedding、Deep neural networks for learning graph representations 等 。

在这jfd里,我们主要介绍基于随机游走的方法。

对于 NLP 中的 word2vec,其本质是根据语料库中单词的共现关系训练出每个单词的嵌入,常用的 word2vec 模型有 CBOW 和 Skip-gram 两种,CBOW 根据上下文预测中心词,而 Skip-gram 根据中心词预测上下文,如下图所示:

f1a98cf6b66e773580eeb080540fad83.png


既然单词可以通过共现关系进行嵌入表示,那么,将图类比成整个语料库,图中的节点类比成单词,是否也可以通过共现关系对图中的节点进行嵌入表示呢?另一个问题则是,对于图,这种共现关系如何描述呢?随机游走的方法主要解决了此问题。

其中,DeepWalk 和 node2vec 是典型代表。DeepWalk 方法首先选择某一特定点为起始点,做随机游走得到点的序列,然后将这个得到的序列用 word2vec 的损失函数来学习,最终训练得到该点的嵌入表示。

以电商中的商品推荐为例,如下图所示,首先根据用户的购物行为(a)构建出一个图网络(b),随后通过随机游走采样的方式构建出结点序列(例如:一开始在 A 结点,A->B,B 又跳到了它的邻居结点 E,最后到 F,得到 "A->B->E->F" 序列);在产生多个序列(c)后,便可以采用 Skip-gram 的模型(d)的方式来得到最终的节点向量,通过最大化随机游走得到的序列中的节点出现的概率来保持节点之间的高阶邻近性。

027bdf05dddd39df4e2706cd1a57a43b.png


而与 DeepWalk 相似,与 DeepWalk 的最大区别在于,node2vec 采用有偏随机游走,在广度优先搜索(BFS)和深度优先搜索(DFS)之间进行权衡,从而产生比 DeepWalk 更高质量和更多信息量的嵌入。

图神经网络类型

在这里,我们将图神经网络划分为以下五大类别:

  • 图卷积网络(Graph Convolution Networks,GCN):是一种非常基本的图神经网络结构,将卷积运算从传统数据(例如图像)推广到图数据,其中的核心是学习一个函数映射,使得图中的节点可以聚合自身特征以及邻居特征,进而生成节点的新表示。GCN 又分为谱域 GCN(Spectral)和空域 GCN(Spatial),其中谱域 GCN 发展较早,主要思想基于图的信号处理,理论方面较难理解,对数学要求较高,但是现在主流方法以空域 GCN(Spatial)为主,因此对前者的学习可量力而行。

  • 图注意力网络(Graph Attention Networks):在图数据学习过程中使用注意力,放大数据中重要的部分的影响,典型代表有 Graph Attention Network (GAT)、Gated Attention Network (GAAN)、Graph Attention Model (GAM)。其中,GAT 和 GAAN 本质上也属于图卷积网络,特点有于它们能够自适应地学习邻居节点的重要性权重。

  • 图生成网络( Graph Generative Networks):顾名思义,此类网络的目标是在给定一组观察到的图的情况下生成新图。图生成网络的许多方法都是特定于领域的。主要方法有,将生成过程作为节点和边的交替形成因素,或者采用生成对抗训练。

  • 图自编码器( Graph Autoencoders):指图嵌入方法,其目的是利用神经网络结构将图的顶点表示为低维向量。

  • 图时空网络(Graph Spatial-temporal Networks):同时捕捉时空图的时间与空间相关性。例如,在交通网络中,每个传感器作为一个节点连续记录某条道路的交通速度,其中交通网络的边由传感器对之间的距离决定。图形时空网络的目标可以是预测未来的节点值或标签,或者预测时空图标签。一般将 GCN 与 RNN 或 CNN 结合使用,进行特定任务的处理。

图神经网络典型应用

图神经网络可以说是处于风口的一项新兴技术,业界普遍认为,其有望解决当前传统神经网络无法处理的因果推理、可解释性等一系列瓶颈问题,是未来神经网络领域的重点方向。那么,图神经网络有哪些应用呢?这里为大家列举一些典型的应用方向。

  • 自然语言处理(NLP)

GNN 在自然语言处理中的应用包括多跳阅读(Multi-hop Reasoning)、实体识别、关系抽取以及知识图谱中的关系补全或预测等。其中,多跳阅读是指在阅读理解的过程中,需要在多篇文档之间进行多级跳跃式的关联与推理,才能找到正确答案,相较传统单文档问答数据集,更具有开放性与挑战性(如下图所示)。要完成多跳推理任务,离不开对语义实体的识别以及实体之间关系的抽取,而 GNN 能对表征语义关系的网络进行整体建模,学习更加复杂与丰富的语义信息,极大地提高了推理能力。

b0542a13b3475ae76bd9481815e0d37f.png


  • 计算机视觉(CV)

GNN 在计算机视觉中的应用包括场景图生成、点云分类与分割、动作识别、视觉推理等多个方面。例如,点云数据是 3D 视觉中一种十分常见的数据表示方法,其通常由一组坐标点(x,y,z)表示,映射了现实世界中物体的特征(如下图所示为巴黎圣母院的点云图),因此存在一种内在的表征物体语义的流行结构,而这种结构的学习也正是 GNN 所擅长的。又如,在动作识别中,识别视频中包含的人类动作有助于从机器更好地理解视频内容。首先,检测视频剪辑中人体关节的位置,再由骨骼连接的人体关节自然形成图表。如此,给定人类关节位置的时间序列,便可以应用时空神经网络来学习人类行为模式。

6a6ddb01fb6a13a8d73f455900e04f60.png


  • 推荐系统

推荐一直是各大互联网公司十分重要的营收手段,如何在推荐系统中有效地融入额外的信息,如用户端社交网络的信息、商品端商品知识图谱的信息等,一直是学界和工业界的研究热点。由于大部分信息本身为错踪复杂的网络结构,图神经网络能够从多方面赋能推荐。比如,用户的购买行为会受到其社交圈的影响,而社交圈可以基于图神经网络进行建模。

  • 生化领域

在生化领域,研究人员可以应用图神经网络研究分子的图结构。例如,化合物是由原子和化学键构成的,天然就是一种图数据的形式,原子为图中的节点,化学键为图中的边,而节点分类、图形分类和图形生成是分子图的三大主要任务,可应用于包括新药物的发现、化合物筛选、蛋白质相互作用点检测、以及疾病预测等任务。

  • 交通网络

随着现代化的进程,交通拥堵越来越成为现代城市建设的一个热点难题。准确地预测交通网络中的交通速度、交通量或道路密度,在路线规划和流量控制中至关重要。基于图的时空神经网络方法或许可用来解决这些问题。例如,将交通网路建模为时空图,节点为放置在道路上的传感器,边由阈值以上成对节点的距离表示,每个节点都包含一个时间序列作为特征,目标是预测一条道路在时间间隔内的平均速度。

随着神经网络在各方面的重要积淀,GNN 快速发展,除以上领域外,图神经网络还可应用于其他问题,如工业风控、社会影响预测、对抗性攻击预防、电子健康记录建模、脑网络、事件检测等更广领域、更多层面的场景任务。

写在最后:如何上手

上文主要讲述图神经网络的一些基本概念,可能过不了几天你还是忘了什么是图神经网络,因为缺少实践。这里推荐一个开源库 PyTorch Geometric ,这是基于 PyTorch 构建的几何深度学习扩展库,将大多数近期提出的图神经网络层都整合到了此框架,可以通过其快速构建图神经网络,还提供一系列经典图数据的下载接口,是上手图神经网络的良好工具,你可以试一试它。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定要备注信息才能通过)

bb0ab883df75e007c3ff086f121d5a35.png

END -

46959e6f456ff5e08b4b758b7ba6b766.png

8078a82c797dcf9922656f617c54be1f.png

NLP文本分类 落地实战五大利器!

2021-09-10

5837f0078d60c9aec6e26ddfa953aeaf.png

研究生期间如何成为科研大佬?

2021-09-07

4ec80b41b9af3a44a8611968f38d346c.png

三大视角,聊聊我眼中的广告系统

2021-09-06

e0fc5a595dbd3ca9761c88e297b6ebc9.png

谈谈文本匹配和多轮检索

2021-09-05

d280a5aabdb6a87fcf083cf90e9624af.png

777b1987d6ad2b6d5b1250c7ab462930.gif


http://chatgpt.dhexx.cn/article/R4Nt8jiT.shtml

相关文章

图神经网络的介绍

近年来,深度学习领域关于图神经网络(Graph Neural Networks,GNN)的研究热情日益高涨,图神经网络已经成为各大深度学习顶会的研究热点。GNN处理非结构化数据时的出色能力使其在网络数据分析、推荐系统、物理建模、自然语…

机器学习笔记 - 什么是图神经网络?

一、图神经网络GNN概述 机器学习的力量正在被用来解决一系列不同领域中日益复杂的问题。模型需要识别和理解更抽象的概念和对象,并且在许多情况下做出非线性决策。尽管它们本身很强大,但更传统的机器学习模型类型缺乏准确映射和处理一些最复杂问题的能力。 人工神经网络越来越…

【图神经网络实战】深入浅出地学习图神经网络GNN(下)

文章目录 一、Graph Attention Network1.1 图注意力机制作用与方法1.2 Attention计算1.3 Graph Attention 做了什么 二、序列图神经网络TGCN2.1 序列图神经网络TGCN的应用2.2 序列图神经网络细节(实例:交通流量预测)2.2.1 交通场景示意图2.2.…

【图神经网络实战】深入浅出地学习图神经网络GNN(上)

文章目录 一、图神经网络应用领域1.1 芯片设计1.2 场景分析与问题推理1.3 推荐系统1.4 欺诈检测与风控相关1.5 知识图谱1.6 道路交通的流量预测1.7 自动驾驶(无人机等场景)1.8 化学,医疗等场景1.9 物理模型相关 二、图神经网络基本知识2.1 图…

pytorch开发工具

学习目标: 1、pycharm 安装 2、jupter安装 学习内容: 1、pycharm 安装 官网地址: https://www.jetbrains.com/pycharm/download/#sectionwindows 点击安装 选择环境变量: 验证: 2、jupyter安装 进入pytorch 环…

PyTorch 简介

PyTorch 简介 概述PyTorch 是什么Why? PyTorch安装 概述 PyTorch API 文档 PyTorch 是什么 PyTorch 是一个提供两个高级功能的 python 包: 具有强 GPU 加速度的张量计算 (如 numpy)深层神经网络建立在基于磁带的自动调整系统上 注: PyTorch 中的 Torch 和 TensorFlow 中的…

国内官网下载pytorch(GPU版)

国内官网下载GPU版pytorch 用官网conda下载坑换清华镜像源的坑使用官网pip3下载成功 看完了吴恩达的深度学习,然后去B站看李沐的卷积神经网络的代码实现,由于之前学习阶段搭建的环境有点混乱,想着自己能科学上网就打算直接卸载anaconda中的环…

Python Pytorch

学习基础知识 大多数机器学习工作流程都涉及处理数据、创建模型、优化模型参数和保存经过训练的模型。本教程向您介绍在 PyTorch 中实现的完整 ML 工作流,并提供链接以了解有关每个概念的更多信息。 我们将使用 Fashion MNIST 数据集来训练一个神经网络&#xff0c…

PyTorch教程中文版

原文:Welcome to PyTorch Tutorials — PyTorch Tutorials 1.12.0cu102 documentation​​​​​​ 中文翻译,加个人总结,便于理解与回顾。 前置知识:python、神经网络 目录 基础概念: 张量Tensors: te…

pytorch怎么下载?pytorch在哪里下载?

PyTorch是一个基于Torch的Python开源机器学习库,许多同学表示不知道怎么下载,或者是下载的非常慢,今天来教大家怎么下载PyTorch。 pytorch在哪里下载? 官方下载地址:https://pytorch.org/ PyTorch选择稳定版本&#…

PyTorch中文版官方教程来啦(附下载)

PyTorch 中文版官方教程来了。 PyTorch 是近期最为火爆的深度学习框架之一,然而其中文版官方教程久久不来。近日,一款完整的 PyTorch 中文版官方教程出炉,读者朋友从中可以更好的学习了解 PyTorch 的相关细节了。教程作者来自 pytorchchina.c…

pytorch官方文档(中文版)

https://pytorch123.com/ 教程介绍 PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebookd的人工智能小组开发,不仅能够 实现强大的GPU加速,同时还支持动态神经网络,这一点是现在很多主流…

pytorch 下载安装全流程详细教程

强烈推荐,亲测有效, 1.查看cuda版本 在命令行输入如下代码: nvidia-smi可以看出,我cuda的版本是11.0 2.在官网https://pytorch.org/选择对应的版本 https://pytorch.org/3.复制Run this Command,直接下载安装&…

Pytorch(一) Pytorch 的安装

安装步骤 1.检查是否有合适的GPU, 若有安装Cuda与CuDNN 2.下载pytorch安装文件,进行pytorch的安装 检查电脑是否有合适的GPU 在桌面上右击如果能找到NVIDA控制面板,则说明该电脑有GPU。控制面板如下,并通过查看系统信息获取支持的Cuda版本…

【最新】CUDA Toolkit版本及可用PyTorch对应关系(参考官网)

作者其他相关文章:Pytorch环境详细安装教程【Win10CUDA升级11.6cudNNAnaconda3虚拟环境pycharm】 官网:https://pytorch.org/get-started/previous-versions/ CUDA Toolkit版本及可用PyTorch对应关系总结(参考官网) CUDAToolkit…

安装PyTorch详细过程

安装PyTorch过程 安装anaconda环境管理PyTorch安装检验安装 安装anaconda 登录anaconda的官网下载,anaconda是一个集成的工具软件不需要我们再次下载。anaconda官网 点击下载 跳转到这个页面如果你的Python版本正好是3.8版,那便可以直接根据系统去选择自…

安装pytorch的过程及所见问题

1、安装anaconda 点击前往anaconda官网:www.anaconda.com 提示:建议下载最新版本的anaconda,不然容易出现如下报错:CondaError: Cannot link a source that does not exist. C:\Anaconda3\Scripts\conda.exe,之后可能…

pytorch与cuda版本匹配--最新(pytorch官网)

gpu驱动,cuda,cudnn安装传送门(温馨提示:请自行配置自己显卡型号及操作系统,该安装方式仅供参考): Centos7 安装GPU驱动(rpm包方式安装) ubuntu16.04 安装GPU驱动(最新,亲测有效) Centos7 安装GPU驱动,降级CUDA,CUDNN 最新版:pyt…

腾讯地图标注_怎样在导航地图上标注公司名和位置

企业怎样在腾讯地图标明公司名字和位置。很多人都必须在腾讯地图标明企业的位置,主要是为了方便客户在搜索公司位置的时候便于导航所在地。 为了更好地提升腾讯地图的成功率和利用率,我这里给大家做一个简单的申请案例,如果你不知道需要准备什…

百度地图JavaScript API 学习之创建标注

在地图上绘制之创建标注 官方demo示例和讲解——直戳这里 简介 所有叠加或覆盖到地图的内容,我们统称为地图覆盖物。覆盖物拥有自己的地理坐标,当拖动或缩放地图时,它们会相应的移动。覆盖物主要分为:标注(点标注、…