GNN图神经网络简单理解

GNN图神经网络简单理解图 表示一些实体之间的关系顶点 研究的对象 顶点信息 邻点数目等边 两个对象之间特定的关系 边信息 边权重等全局信息 节点个数 最长路径等顶点 用向量表示边 用向量表示全局信息 用向量表示

大家好,欢迎来到IT知识分享网。

GNN简单理解

一、GNN 图神经网络综述

1 什么是图

1.1 图基础

  • 顶点(研究的对象):顶点信息、邻点数目等
  • 边(两个对象之间特定的关系):边信息、边权重等
  • 全局信息:节点个数、最长路径等
    image
  • 顶点:用向量表示
  • 边:用向量表示
  • 全局信息:用向量表示

1.2 图的分类

image
无向图、有向图

连通图、非连通图

1.3 数据成图

图数据的基本分类:

  • 同构图:图中的节点类型和关系类型都仅有一种(ps:万维网)
  • 异构图:图中的节点类型或关系类型多于一种
  • 属性图:相较于异构图,图数据上额外增加了属性信息
  • 非显示图:数据之间没有显示地定义出关系,需要一句某种规则或计算方式将数据的关系表达出来,进而将数据当成一种图数据进行研究
1.3.1 图像转图


GNN图神经网络简单理解 GNN图神经网络简单理解 GNN图神经网络简单理解

邻接矩阵中蓝色的点表示图中的一条边,白色的点表示没有边

1.3.2 文本转图


GNN图神经网络简单理解

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

这种表示(字符标记序列)指的是文本在 RNN 中经常表示的方式;其他模型(例如 Transformers)可以被视为将文本视为完全连通的图,我们可以从中学习标记之间的关系。

1.3.3 其他转图

1.4 图结构化数据的问题类型

1.4.1 图层面任务 graph-level task

从图的整体结构出发,实现分类、表示和生成任务

1.4.2 节点层面任务 node-level task

节点层面的任务主要包括分类任务和回归任务,例如:用户标签分类、恶意账户检测

1.4.3 边层面任务 edge-level task

2 图神经网络

存储高效,对顺序无关

现在图的描述是具有置换不变性的矩阵格式,GNN是对图的所有属性(节点、边、全局上下文)的可优化转换,可保留图对称性(置换不变性)。
GNN 采用“图入图出”架构,这意味着这些模型类型接受图作为输入,将信息加载到其节点、边和全局上下文中,并逐步转换这些嵌入,而不会改变输入图的连接性。

2.1 简单GNN


GNN图神经网络简单理解

构造方法:对于节点向量、边向量、全局向量,分别构造一个MLP(输入大小与输出大小相同),三个MLP组成基本的GNN层

最后得到属性被更新过,但是图结构没有变化的图

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

2.2 结果预测

2.2.1 节点预测


GNN图神经网络简单理解

通过汇聚向量得到目标预测值

3 实验

简单GNN结构


GNN图神经网络简单理解

解决方法如下:聚合


GNN图神经网络简单理解

将节点本身的向量和其邻居的向量加在一起得到一个汇聚的向量,将汇聚的向量再进入MLP从而得到该点向量的更新

4 相关技术

信息汇聚

二、GCN 图卷积神经网络

2.1 卷积基础

2.1.1 卷积神经网络的特点

  1. 局部连接:感知野(特征图上一个输出与多大区域的输入有关)
  2. 权值共享:不同区域使用相同的卷积核参数,一方面减少了参数量,另一方面带来了平移不变性(不管输入如何平移,总能得到相同的输出),对感知野的信息进行聚合
  3. 层次化表达:由低到高,感知野变大

2.1.2 特殊的卷积形式

1X1卷积

功能

  1. 用于信息聚合,同时增加非线性,一定程度上增加模型的表达能力
  2. 用于通道数的变换,可以增加或减少输出特征图的通道数
转置卷积
空洞卷积
分组卷积
深度可分离卷积

2.1.3 感受野

概念
影响因素
  • 卷积层
  • 反卷积层
  • 池化层
  • 残差连接:通过跨层连接将特征图进行element-wise的加和,很显然这样将两种特征图进行耦合的操作会改变感受野的大小。通常将较大的感受野作为最终的感受野大小。
  • 连接操作

无关因素:非线性层、归一化层

计算

感受野大小的计算公式是和padding是无关的,当前层的步长并不影响当前层的感受野,感受野的增速是直接和卷积步长累乘相关的,但不包含当前层的步长,想要网络更快速得达到某个感受野的尺度,可以让步长大于1的卷积核更靠前


GNN图神经网络简单理解

2.2 图信号处理

前置知识

矩阵乘法

设两个矩阵 A ∈ R K × M A \in R^{K \times M} ARK×M B ∈ R M × P B \in R^{M \times P} BRM×P,对于 C = A B C=AB C=AB,有三种计算方法

  • 内积视角:将A视作一个行向量矩阵,将B视作一个列向量矩阵
    C i j = A i , : B : , j C_{ij}=A_{i,:}B_{:,j} Cij=Ai,:B:,j
  • 行向量视角:将B视作一个行向量矩阵,将A视作系数矩阵, 第 i 行 = A 第 i 行 ∗ B 整体 第i行=A第i行*B整体 i=AiB整体
    C i , : = ∑ m M A i m B m , : C_{i,:}=\sum_{m}^{M}A_{im}B_{m,:} Ci,:=mMAimBm,:
  • 列向量视角:将A视作一个列向量矩阵,将B视作系数矩阵, 第 j 列 = B 第 j 列 ∗ A 整体 第j列=B第j列*A整体 j=BjA整体
    C : , j = ∑ m M B m j A : , m C_{:,j}=\sum_{m}^{M}B_{mj}A_{:,m} C:,j=mMBmjA:,m
图信号与图的拉普拉斯矩阵

拉普拉斯矩阵:用来研究图的结构性质的核心对象,定义: L = D − A , L=D-A , L=DA,
其中,D是一个对角矩阵, D i i = ∑ j A i j D_{ii} = \sum_j A_{ij} Dii=jAij表示的是节点 v i v_i vi 的度
D为度矩阵,A为邻接矩阵

拉普拉斯矩阵原子拉普拉斯算子,将该算子的作用退化到离散的二维图像空间,就成了非常熟悉的边缘检测算子

0 1 0
1 – 4 1
0 1 0

拉普拉斯矩阵是一个反映图信号局部平滑度的算子

时空域与频域

空域、时域和频域是信号处理和图像处理中的三个重要概念,它们分别表示信号或图像在不同维度上的表示方式。

空域(Spatial Domain)

  • 定义:空域是指图像在空间坐标上的表示。对二维图像而言,空域中的像素值是图像在特定位置上的亮度或颜色值。
  • 应用:在空域中进行的操作包括滤波、锐化、平滑、边缘检测等。这些操作直接作用于图像的像素值。

时域(Time Domain)

  • 定义:时域是指信号在时间坐标上的表示。时域信号表示信号随时间变化的幅值。
  • 应用:时域分析用于描述和处理信号随时间变化的特性,例如声音信号的波形、心电图信号等。在时域中,可以进行的操作包括卷积、时域滤波、相关性分析等。

频域(Frequency Domain)

  • 定义:频域是指信号在频率坐标上的表示。通过傅里叶变换,可以将时域或空域信号转换为频域表示。频域表示信号的频谱,即信号在不同频率成分上的幅度和相位信息。
  • 应用:频域分析用于分析信号的频率特性,例如音频信号的频谱、图像的频谱分析等。常见操作包括频域滤波(低通滤波、高通滤波、带通滤波)、傅里叶变换、逆傅里叶变换等。

对比

  • 空间 vs 时间 vs 频率:空域和时域都是信号或图像在原始坐标系(空间或时间)上的表示,而频域表示则通过变换展示了信号或图像的频率成分。
  • 操作:在空域和时域中,操作通常直接作用于原始数据;在频域中,操作通常通过变换(如傅里叶变换)来处理频率成分。
  • 应用领域:空域主要用于图像处理,时域主要用于时间序列信号处理,频域则广泛用于信号和图像的频率分析。

图傅里叶变换

图信号处理理论体系:将图信号由空域视角转换到频域视角

权重就是图信号在对应傅里叶基上的傅里叶系数

图滤波器

对给定图信号的频谱中各个频率分量的强度进行增强或衰退的操作

2.3 基本模型概述

2.3.1 GCN与CNN的联系

时域中的卷积运算等价于频域中的乘法运算

  1. 图像是一种特殊的图数据
  2. 从网络连接方式来看,二者都是局部连接(大大减少了单层网络的计算复杂度)
  3. 二者卷积核的权重是处处共享的(有效地避免过拟合现象的出现)
  4. 从模型的层面来看,感受域随着卷积层的增加而增加

区别:图卷积与卷积看起来都是利用周围的特征,但是图中每个点的邻居都是不确定的

2.3.2 端(数据)对端(任务)学习机制

图数据中的两部分信息:

  • 属性信息:描述图中对象的固有性质
  • 结构信息:描述对象之间的关联性质

常见任务:

  • 节点分类,对每个节点进行预测,不同点是否有连接预测
  • 整个图分类,部分图分类等,不同子图是否相似,异常检测等

GCN归根究底还是要完成特征提取操作,只不过输入对象不是固定格式

2.3.3 频域视角

GCN是一个低通滤波器

2.3.4 面临问题——过平滑

解决方法

  • 频域视角
    如果对一个图信号不断的执行平滑操作,图信号最后就会变得处处相等,也就完全没有可区分性了
  • 空域视角
    • 层级聚合,通过跳跃连接与最终的聚合层相连,聚合操作可以取如拼接、平均池化、最大池化等
    • 回到频域视角去调节图滤波器的值

2.3.5 模型实现

  1. 各节点的输入特征
  2. 网络结构图

半监督学习(GCN优势):

  1. 不需要全部标签
  2. 用少量标签也能训练
  3. 计算损失时只用有标签的
基本思想

针对主要节点,计算其特征:平均其邻居特征(包括自身)后传入神经网络

网络层数


GNN图神经网络简单理解

每个GCN层中的每个点都要和自己的邻居做更新,更新完放入激活层(GCN层数较小,防止过平滑)

基本组成


GNN图神经网络简单理解 GNN图神经网络简单理解 GNN图神经网络简单理解 GNN图神经网络简单理解

特征计算

实质:邻接矩阵与特征矩阵进行乘法操作(行向量X列向量),表示聚合邻居信息


GNN图神经网络简单理解

问题:只考虑邻居,没考虑自身 A ~ = A + λ I N \tilde{A} = A + \lambda I_{N} A~=A+λIN

改进:

  1. 在邻接矩阵中加上自身


GNN图神经网络简单理解 GNN图神经网络简单理解

  1. 度矩阵求倒数


GNN图神经网络简单理解 GNN图神经网络简单理解

  1. 计算矩阵scale
    目前公式: D ~ − 1 ( A ~ X ) \tilde{D}^{-1}(\tilde{A}X) D~1(A~X)
    由于左乘相当于对行做归一化操作,需要处理列,再右乘

改进公式: D ~ − 1 A ~ D ~ − 1 X \tilde{D}^{-1} \tilde{A} \tilde{D}^{-1}X D~1A~D~1X


GNN图神经网络简单理解

缺点:行和列都做一次归一化处理,相当于两次

改进公式: D ~ − 1 / 2 A ~ D ~ − 1 / 2 X \tilde{D}^{-1/2} \tilde{A} \tilde{D}^{-1/2}X D~1/2A~D~1/2X

基本公式

A ~ = D ~ − 1 / 2 A ~ D ~ − 1 / 2 X \tilde{A} = \tilde{D}^{-1/2} \tilde{A} \tilde{D}^{-1/2}X A~=D~1/2A~D~1/2X,对左右进行归一化处理


GNN图神经网络简单理解

GCN的层数,在多个图数据集中,都可以发现两三层的比较合适,多了反而差

三、GAT 图注意力网络

图注意力机制

注意力机制的核心:对给定信息进行权重分配。权重高的信息系统对其进行重点加工

注意力机制三要素:

Query:当前中心节点的特征向量

Source:所有邻居的特征向量

Attention Value:中心节点经过聚合操作后的新的特征向量

本质:在GNN的基础上引入权重矩阵,对邻接矩阵重构(加权)


GNN图神经网络简单理解

GAT两种计算方式:

全局图注意力:节点与图上所有节点做attention计算(丢失了图的结构特征,运算成本巨大)

掩码图注意力:节点只与邻居节点做attention计算(利用了图的结构特征,减少了运算量)


GNN图神经网络简单理解

h i ′ = σ ( ∑ j ∈ N ( i ) α i j W ∗ h j h_{i}^{‘} = \sigma(\sum_{j\in N(i) } \alpha_{ij}W*h_j hi=σjN(i)αijWhj

以下图为例展示:


GNN图神经网络简单理解 GNN图神经网络简单理解

邻接矩阵计算图Attention,邻接点增加权重参数并归一化,以A点为例进行邻接矩阵处理:


GNN图神经网络简单理解 GNN图神经网络简单理解

特征矩阵变换过程:


GNN图神经网络简单理解 GNN图神经网络简单理解 GNN图神经网络简单理解

以A点为例,其与B、C相连,过程如下:


GNN图神经网络简单理解 GNN图神经网络简单理解 GNN图神经网络简单理解

同样以A点为例,整体计算流程如下:


GNN图神经网络简单理解 GNN图神经网络简单理解

h 1 ∗ ∗ α 11 + h 2 ∗ ∗ α 12 + h 3 ∗ ∗ α 13 = h 1 ′ h_1^{*}*\alpha_{11} + h_2^{*}*\alpha_{12} + h_3^{*}*\alpha_{13} = h_1^{‘} h1α11+h2α12+h3α13=h1

代码实现对比:

image

四、Graphsage 图采样聚合网络


GNN图神经网络简单理解

Step1 Neighbor Sampling 邻居采样


GNN图神经网络简单理解

对于目标节点A:

考虑一阶邻居

A:[B,C,G]

考虑二阶邻居

B:[A,D,E,G]

C:[A]

G:[A,B]

对于二阶不足四个邻居的节点进行重采样补齐,如果邻居节点大于4,为欠采样,多余的节点会被舍弃


GNN图神经网络简单理解

Step2 Aggregation 聚合


GNN图神经网络简单理解


GNN图神经网络简单理解


GNN图神经网络简单理解

考虑以下GAT,GCN聚合操作

原理详解

image

参考视频

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122429.html

(0)
上一篇 2025-10-16 19:26
下一篇 2025-10-16 19:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信