图神经网络(Graph Neural Networks)

article/2025/9/20 9:06:00

图神经网络(Graph Neural Network)在社交网络、推荐系统、知识图谱上的效果初见端倪,成为近2年大热的一个研究热点。然而,什么是图神经网络?图和神经网络为什么要关联?怎么关联?

本文简单介绍GNN的灵感来源,构造方法,训练方式等,根据论文《Representation Learning on Networks》中GNN部分,做了进一步的解释,并增补了一些代码中才有的实现细节,以便后续学习和理解。

代码链接:GitHub - leichaocn/graph_representation_learning

1 卷积神经网络的启示

回顾对图像的简单卷积:

图1 卷积神经网络的基本操作

如图1所示:一幅图(image)所抽取的特征图(也就是特征向量)里每个元素,可以理解为图(image)上的对应点的像素及周边点的像素的加权和(还需要再激活一下)。

同样可以设想:一个图(graph)所抽取的特征图里的每个元素,也可以理解为图(graph)上对应节点的向量与周边节点的向量的加权和

有几个概念需要说明:

特征向量:一条数据(image、word、node等)的数字化表示,是机器学习任务的必备输入。
embedding:更好的特征向量,蕴含潜在语义信息,是来自network训练后的结果,如果能找到优秀的embedding,将有效提升后面机器学习任务的性能表现。例如从word2vec网络中抽出的word embedding向量,“北京”“巴黎”这两个词就比较相似,因为都是首都;从CNN网络中抽出的image embedding,暹罗猫、无耳猫两个图片的向量就比较相似,因为都有猫。
features map :由cnn生成的特征向量,也就是image embedding。image 经过一层CNN前向传播后的输出,是一个二维的矩阵,只要进行拉直(flatten),就转变为了一维的特征向量。类似于全连接神经网络网络里每一层里都能获取的一维的特征向量。

这种迁移联想值得好好体会。

体会明白后,那具体怎么做呢?

2 核心想法

正如上面讨论的,归纳为一句话:用周围点的向量传播出自己的Embedding

一个非常简单的例子就能搞明白。

图2 一个图例

对于图2来说,要计算节点A的Embedding,我们有以下的两条想法:

  • 节点A的Embedding,是它的邻接节点B、C、D的Embedding传播的结果

  • 而节点B、C、D的Embedding,又是由它们各自的邻接节点的Embedding传播的结果。

但是你可能会说,这样不断追溯,何时能结束?所以为了避免无穷无尽,我们就做两层,可以构造图3的传播关系。

图3 由两层传播生成节点A的Embedding

第0层即输入层,为每个节点的初始向量(根据所处领域里特征数据进行构建),不妨称为初始Embedding。

  • 第一层

节点B的Embedding来自它的邻接点A、C的Embedding的传播。

节点C的Embedding来自它的邻接点A、B、C、D的Embedding的传播。

节点D的Embedding来自它的邻接点A的Embedding的传播。

  • 第二层

节点A的Embedding来自它的邻接点B、C、D的Embedding的传播。

好了,大概可能有点感觉了,可是传播到底是什么?图中的小方块里到底在什么什么?

(注意:图中所有的方块代表的操作均相同,大小、颜色的差异没有任何含义)

3 传播机制

小方块里做的就两件事:

  • 收集(Aggregation)

简言之,就是对上一层的所有邻接节点的Embedding,如何进行汇总,获得一个Embedding,供本层进行更新。

  • 更新(Update)

即对本层已“收集完毕”的邻接点数据,是否添加自身节点的上一层Embedding,如果是如何添加,如何激活,等等方式,最终输出本层的Embedding。

表达成数学公式,即下面这个式子:

先解释其中的符号含义:表示节点的Embedding,下标表示节点的索引,上标表示第几层的意思,表示激活函数,表示矩阵,表示节点的邻接点集合,AGG(⋅)表示收集操作。

这个公式的右边就做了两件事:

  • 收集:即AGG(⋅)部分

  • 更新:除了AGG(⋅)外的其他部分。

这个公式太抽象,我们举例说明三种常见的图神经网络,看看是如何设计的。

4 传播机制举例

4.1 基础版本

1)收集

即直接对上一层所有节点的Embedding求平均。

2)更新

即为用收集完毕的Embedding与本节点上一层的Embedding进行了加权和,然后再激活。显然,由于上一层Embedding与本层Embedding维度相同,所以为方阵。

4.2 图卷积网络(Graph Convolutional Networks)

1)收集

可知,收集的输入Embeddings不仅仅包括节点的邻接点们的Embedding,还包括节点自身的Embedding,而分母变成了,是一种更复杂的加权和,不仅考虑了节点的邻接点的个数,还考虑了每个邻接点自身的邻接接个数。(基础版本中的平均是最简单的加权和)

2)更新

显然比基础版本简单多了,不再考虑节点自己的上一层Embedding,直接让收集好的Embedding乘上矩阵后再激活完事。

之所以叫图卷积网络,是因为和卷积网络的套路类似,对自己和周边节点(像素)进行加权求和。

4.3 GraphSAGE

这不就是咱们上面提到的那个概念公式?是的,GraphSAGE由于其变体较多,所以需要用这个最抽象的公式来概括它。

1)收集

可以有如下的收集方式:

  • 直接平均

这是最简单的收集方式

  • 池化

  • LSTM

2)更新

收集好的Embedding经过矩阵变换,节点自己上一层的Embedding经过矩阵变换,我们即可得到两个Embedding,把它俩给按列拼接起来。

这里要注意:它俩不是相加;矩阵和矩阵都不是方阵,均自带降维功能。AGG(⋅)输出是d维,是d维,但是经过军阵变换后,它俩都成了d/2维,经过拼接,又恢复成d维。

5 训练的方式

无监督的训练

跑不同的Aggregation和Update方法,结合自定义的损失函数,都可以训练出这些权重。这里的自定义损失函数,需要根据你对节点Embedding的最终期望,让它附加上一个什么样的效果来设计。

例如word2vec利用序列中的上下文信息,用一个词预测周围词,构造分类损失来训练。图的无监督训练也可以用一个节点预测周围节点,构造分类损失来训练。当然,还有其他的无监督套路,这个视频不错(18min~21min):https://www.bilibili.com/video/av53422483/

在无监督任务中,获取经过神经网络优化的Embedding,就是我们的目的。

有监督的训练

如果我们想要实现节点分类,那么我们就需要有带标签的训练数据,设计损失函数,即可进行训练。

例如,我们有一批带label的图结构的数据,已经标记好了哪些是水军,哪些是普通用户。我们就可以构造如下的交叉熵损失函数。

图4 有监督训练中损失函数的构造

  • 转换矩阵

注意其中的即节点的Embedding,是节点的label,那是什么鬼?

如刚才我们讨论的,图神经网络的传播结果,是所有节点经过“传播”优化的Embedding,这些Embedding的维度均为d维(在初始化时定义好的),而我们分类任务可能是c类,所以,需要再前向传播的最后一层,加入矩阵,把d维的输出映射成c维的输出,这样才能让交叉熵损失函数对应起来。

由于我们列举的是二分类任务,图4中也用的是二分类的交叉熵损失,因此只需要1维输出足矣,所以在这里的c为1,为一个向量(可视为把d维压缩为1维的特殊矩阵)。

在有监督任务中,获取经过神经网络优化的Embedding,还需要进行分类。所以Embedding不是目的,只是实现分类的手段。

6 一般的设计步骤

综上,各类图神经网络架构主要区别是:

传播机制的区别,即收集和更新的设计(图3中小方块)。

有无监督及损失函数的区别。

设计图神经网络的一般步骤是:

  1. 定义收集与更新方式。

  1. 定义损失函数。

  1. 在一批节点上进行训练。

  1. 生成Embedding,即使是模型未见过的Embedding,模型也可以对其初始化Embedding进行“传播优化”。

7 Node2Vec与GNN的对比

由于Embedding这个术语被以广义的方式,用了太多次,很容易导致混淆,所以这里对Embedding在不同状态时做一个总结。

8 总结

  • 图神经网络是以邻接点Embedding的浅层传播来训练Embedding。

  • 改变Aggregation和update的方式,可以构造不同的图神经网络;

  • 既可以用无监督的方式获得Embedding,也可以用有监督的方式直接训练分类任务。

参考文献

[1] Jure Leskovec, 《Graph Representation Learning》

[2] Jure Leskovec, 《Representation Learning on Networks》

http://snap.stanford.edu/proj/embeddings-www/

文章仅用于学习使用,后续我将阅读最新的有关图神经网络的论文。


http://chatgpt.dhexx.cn/article/0Kj1H9Pu.shtml

相关文章

图神经网络综述

文章目录 1 简介 1.1 GNN简史1.2 GNN的相关研究1.3 GNN vs 网络嵌入1.4 文章的创新性2 基本的图概念的定义3 GNN分类和框架 3.1 GNNs分类3.2 框架4 图卷积网络 4.1 基于图谱的GCN 4.1.1 图信号处理4.1.2 基于谱的GCN方法4.1.3 总结4.2 基于空间的GCN 4.2.1 基于循环的空间GCNs…

什么是图神经网络 (GNN)?

图表无处不在。您的社交网络是人和关系的图表。你的家人也一样。您从 A 点到 B 点所走的道路构成了一个图形。将这个网页连接到其他网页的链接形成了一个图表。当您的雇主向您付款时,您的付款会通过金融机构的图表。 基本上,由链接实体组成的任何东西都…

图神经网络,这到底是个什么?

摘要:图神经网络是一种基于图结构的深度学习方法。 1、什么是图神经网络 图神经网络(Graph Neu做ral Networks, GNNs)是一种基于图结构的深度学习方法,从其定义中可以看出图神经网络主要由两部分组成,即“图”和“神经…

图学习笔记(三):图神经网络

图学习笔记(三):图与图学习 回顾六. 图神经网络(Graph Neural Networks)一、 什么是图神经网络二、 有哪些图神经网络符号定义1. 图卷积网络(Graph Convolution Networks,GCNs)GCN方…

图神经网络(一):综述

文章目录 1.背景介绍1)图简介2)图神经网络简介 2.GNN 的通用设计流程1) 查找图结构2)明确图类型和规模3)设计损失函数4)构造模型 3.计算模块的实例化3.1 传播模块——卷积算子(convolution operator&#x…

图神经网络(Graph neural networks)综述

论文链接:Graph Neural Networks: A Review of Methods and Applications Abstract:图(Graph)数据包含着十分丰富的关系型信息。从文本、图像这些非结构化数据中进行推理学习,例如句子的依赖树、图像的场景图等&#…

什么是图神经网络?

什么是图神经网络? 更多精彩内容: https://www.nvidia.cn/gtc-global/?ncidref-dev-876561 GNN 将深度学习的预测能力应用于丰富的数据结构,这些数据结构将对象及其关系描述为图中由线连接的点。 当两种技术融合时,它们可以创造出新奇而美…

图神经网络(GNN)简述

目录 一、什么是图(graph) 二、如何将图片(images)表示成图(graph) 三、在机器学习中使用图(graph)的挑战 四、图神经网络(Graph Neural Network, GNN) (I). The simplest GNN (II). 如何做预测 (III).如何将图的结构信息引入GNN (IV).Learning edge representations (V). 为什…

什么是图神经网络

2019年可以说是图神经网络元年。 01 什么是图神经网络? 1. 图和属性图 要了解图神经网络,首先要了解图。图是由节点和边组成的,如下图所示。一般图中的节点表示实体对象(比如一个用户、一件商品、一辆车、一张银行卡等都可以作…

图神经网络初探

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

图神经网络的介绍

近年来,深度学习领域关于图神经网络(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选择稳定版本&#…