- 1.图是什么?
- 2.什么是图神经网络?
- 3.如何进行消息聚合?
- 4.如何进行消息更新?
- 5.如何进行重复(获取远端邻居的信息)?
- 6.什么是图卷积网络?
- 7.怎么基于空间构建图卷积神经网络?
- 8.怎么基于谱构建图卷积神经网络?
- 9.为什么基于空间的图卷积网络成为了主流?
- 10.什么是图注意力网络?
- 11.什么是图自动编码器?
- 12.什么是图生成网络?
- 13.什么是图时空网络?
- 14.为什么要在图神经网络中引入度矩阵?
- 15.GAT和GATv2有什么差别?
- 16.有没有其他提高图注意力层表达能力的方法?
图是一种用于表示实体之间关系的数据结构,由两个基本元素组成:
-
节点:表示实体,如用户、产品等
-
边:表示节点之间的连接/关系,如关注,购买等关系
图中两个节点之间既有可能是有向的,比如只能从节点$v_1$到$v_2$;也有可能是无向的,即$v_1$和$v_2$互通。
| 类型 | 特点 | 示例 |
|---|---|---|
| 无向图 | 边没有方向,连接是双向的 | 朋友关系(互为朋友) |
| 有向图 | 边有方向,可以是单向或双向 | 关注关系(A关注B,B不一定关注A) |
图通常用$G=(V,E)$来表示,其中$V$表示节点的集合,$E$表示边的集合。
| 符号 | 含义 | 说明 |
|---|---|---|
| 节点集合 | 表示图的规模 | |
| 边集合 | 描述节点间的连接关系 |
其中,每个节点$v_i$通常关联一个特征矩阵$x_{v_i}$,而每条边$e_i=(v_i,v_j)$也关联一个特征向量$x_{e_{ij}}$和邻接值$a_{ij}$。因此,一个图$G=(V,E)$通过节点特征矩阵$X_V$、边特征矩阵$X_E$和邻接矩阵$A$来完整描述节点属性、边属性及拓扑结构。
| 符号 | 维度 | 说明 |
|---|---|---|
| 节点特征矩阵$X_V$ |
|
|
| 边特征矩阵$X_E$ |
|
|
| 邻接矩阵$A$ | 表示节点连接关系,$a_{ij}=1$表示两节点相连 |
-
非欧几里得结构:节点间无序,相邻点数量可变;
-
异构性:图的规模和密度,以及节点特征差异可以极大。
a) 社交网络:节点=用户,边=好友/关注关系 b) 电商推荐:节点=用户/商品,边=购买/浏览行为 c) 生物信息学:节点=蛋白质/基因,边=相互作用关系 d) 分子结构:节点=原子,边=化学键 e) 知识图谱:节点=实体,边=语义关系
图神经网络(GNN)是一类专门用于处理图结构数据的深度学习模型。它能够学习节点、边以及整个图的特征表示,从而完成各种预测任务。图神经网络(GNN)的核心是通过不断问邻居节点要信息,把每个节点变成一个既包含自身特征、又包含周围环境信息的向量,方便后续做预测。
传统的深度学习模型主要处理规则的网格数据(如图像)和序列数据(如文本、时间序列),但现实中很多数据是非欧几里得结构的图数据,节点数量不固定、邻居关系不规则。
图神经网络(GNN)实现问邻居节点要信息的核心机制是邻居聚合。该流程如下:
a) 聚合:收集邻居节点的信息;
b) 更新:结合自身特征和邻居信息,更新节点的表示;
c) 重复:经过多层传播,节点可以收到更远邻居的信息。
根据聚合和更新方式,图神经网络通常分为以下几类
| 模型 | 全称 | 特点 |
|---|---|---|
| GCN | Graph Convolutional Network | 图卷积,对邻居特征加权平均 |
| GAT | Graph Attention Network | 引入注意力机制,自动学习邻居重要性 |
| GraphSAGE | Graph Sample and Aggregate | 采样邻居,支持归纳学习(新节点) |
| GIN | Graph Isomorphism Network | 理论表达能力强,可区分不同图结构 |
| MPNN | Message Passing Neural Network | 一的消息传递框架 |
| 任务类型 | 描述 | 应用示例 |
|---|---|---|
| 节点分类 | 预测节点的类别 | 社交网络的用户分类 |
| 链接预测 | 预测两个节点之间是否存在边 | 推荐系统 |
| 图分类 | 预测整个图的类别 | 分子属性预测 |
| 图生成 | 生成新的图结构 | 场景图生成 |
消息聚合:对于每个节点
-
通用的消息聚合方式包括求和,均值和最大值。
-
求和保留邻域的完整信息量(领域大小敏感),适合需要区分不同大小邻域的任务,例如:分子中某原子连接的官能团数量;
-
均值计算邻域特征的平均水平,适合节点分类任务,例如:社交网络中判断用户类型;
-
最大值只提取邻域中最显著的特征,丢失大量信息,适合检测是否存在某种特定邻居,例如:缺陷检测。
符号说明:
| 符号 | 含义 |
|---|---|
| 邻域节点 |
|
| 节点 |
|
| 可学习的权重矩阵 | |
| 可学习的偏置向量 |
注:不同的GNN模型使用不同的聚合函数,会在具体模型架构处讲解
利用聚合得到的消息
符号说明:
| 符号 | 含义 |
|---|---|
| 节点 |
|
| 节点 |
|
| 从邻域聚合得到的消息 | |
| 激活函数(如 ReLU、Sigmoid) | |
| 拼接(Concatenation)或线性变换操作 |
每一层 GNN 只能聚合直接邻居的信息。通过堆叠多层,信息可以逐层传递,从而获取更远邻居的信息。
符号说明:
| 符号 | 含义 |
|---|---|
| AGG | 表示消息聚合操作 |
第 0 层(初始):每个节点只有自己的特征
A ← 只知道自己
第 1 层:A 聚合直接邻居(1-hop)
A ← B, C, D(A 的直接邻居)
第 2 层:A 再次聚合邻居,但此时邻居 B, C, D 已经包含了它们各自邻居的信息
A ← B(含E,F), C(含G), D(含H,I)相当于 A 间接获得了 2-hop 邻居(E, F, G, H, I)的信息
图卷积网络将卷积运算从传统数据(例如图像)推广到图数据。其核心思想是学习一个函数映射
当图卷积网络的算法在节点层次运行时,图池化模块可以与图卷积层交错,将图粗化为高级子结构。
# GCN
原始图 → 图卷积层 → 图池化层 → 图卷积层 → 图池化层 → ... → 图级表示 → 分类结果(聚合邻居特征) (合并节点) (聚合邻居特征) (合并节点)
# CNN
输入图像 → 卷积层 → 池化层 → 卷积层 → 池化层 → ... → 全连接层 → 分类结果
(提取特征) (缩小尺寸) (提取特征) (缩小尺寸)
| 类别 | 核心思想 |
|---|---|
| 基于谱(Spectral-based) | 从图信号处理的角度引入滤波器来定义图卷积,图卷积操作被解释为从图信号中去除噪声 |
| 基于空间(Spatial-based) | 将图卷积表示为从邻域聚合特征信息 |
-
图像(左):每个像素是一个节点,像素与相邻像素连接,是一个规则的网络结构,拥有固定的邻居数量。
-
图(右):每个节点是一个实体,节点与邻居节点连接,具有不规则的拓扑结构,且邻居数量不固定。
采用基本的消息传递方式,即邻居聚合。
a) 聚合:收集邻居节点的信息;
b) 更新:结合自身特征和邻居信息,更新节点的表示;
c) 重复:经过多层传播,节点可以收到更远邻居的信息。
PYTHON可以直接采用 from torch_geometric.nn import GCNConv调用。
根据参数共享的机制,分为Composition和Recurrent-based。前者每层有独立参数(W1 → W2 → Wn),后者所有层共享参数(W → W → W)。
图卷积 = 先用特征向量矩阵 U 把信号变换到谱域,在谱域做滤波(逐元素乘),再用 U 变换回来。核心公式:$Y = U g_\theta U^T X$
a) 正则化拉普拉斯矩阵构造
对于无向图,我们定义正则化图拉普拉斯矩阵:
其中:
| 符号 | 含义 |
|---|---|
|
|
|
| 邻接矩阵(谁和谁相连) | |
| 度矩阵,$D_{ii} = \sum_j A_{ij}$(每个节点连了几条边) |
- 正则化拉普拉斯矩阵是实对称半正定的。(特征值非负且正交)
b) 特征分解
其中:
| 符号 | 含义 | 维度 |
|---|---|---|
| 特征向量矩阵,列向量是 |
||
| 对角矩阵,对角线是特征值 |
||
|
|
c) 图傅里叶变换
-
图傅里叶变换:$$\hat{X} = U^T X$$
-
图傅里叶反变换:$$X = U \hat{X}$$
| 操作 | 公式 | 含义 |
|---|---|---|
| 傅里叶变换 | 把图信号投影到特征向量构成的正交空间 | |
| 傅里叶反变换 | 从正交空间变回原始空间 |
d) 图卷积
步骤1: U^T X → 把信号 X 变换到谱域
步骤2: U^T g → 把滤波器 g 变换到谱域
步骤3: (·) ⊙ (·) → 在谱域做逐元素相乘(滤波)
步骤4: U(·) → 变换回原始域
根据滤波器的不同,GCN又分为不同的子类。
| 模型 | 滤波器 |
特点 |
|---|---|---|
| Spectral CNN | 直接学习 n 个参数,计算量大 | |
| ChebNet | 用切比雪夫多项式近似,K 阶局部化 | |
| GCN | ChebNet 的一阶简化版 | |
| AGCN | 自适应学习图结构 | 可以学习隐藏的图关系 |
- 需要加载整个图:导致算法的复杂度在$$O(n^3)$$。
| 操作 | 复杂度 | 问题 |
|---|---|---|
| 计算 L 的特征分解 | n 大时极慢 | |
| 存储 U 矩阵 | 内存爆炸 | |
| 矩阵乘法 |
每次前向传播都要算 |
-
优点:
- 理论基础扎实 - 基于图信号处理理论,具有数学可解释性。例子:可以用傅里叶变换解释为什么卷积能提取图的局部特征,类似于信号处理中的频域分析。
-
缺点:
-
效率低 - 需要计算特征向量分解(须同时处理整个图),计算成本随图规模急剧增加,难以应用于大型图。例子:在100万节点的社交网络上,需要对100万×100万的拉普拉斯矩阵做特征分解,计算时间可能需要数小时甚至数天。
-
通用性差:假设固定图结构,在节点级别无法灵活共享权重,添加新节点困难,难以跨图迁移。例子:在引文网络Cora(2708个节点)上训练的模型,无法直接应用到引文网络Citeseer(3327个节点),也无法处理新发表的论文节点。
-
灵活性受限:有向图的拉普拉斯矩阵没有明确定义,只能处理无向图,需要将有向图转换为无向图。例子:Twitter关注网络中,A关注B但B不关注A(有向边),谱方法必须将其转换为A和B互相关注(无向边),丢失了方向信息。
-
-
优点:
-
效率高 - 直接在图域聚合邻居节点,支持批量计算和采样技术,可扩展到大规模图。例子:在Facebook好友网络(数十亿节点)上,可以只对每个节点采样20个邻居进行聚合,而不需要处理整个图。
-
通用性强 - 局部卷积操作,易于在不同位置和结构间共享权重,支持动态添加节点,可跨图应用。例子:在Cora数据集上训练的GCN模型,可以直接应用到Citeseer上;电商平台新上架商品时,可以立即根据其属性和关联预测类别,无需重新训练。
-
灵活性好:聚合函数可灵活设计,不依赖于图的谱特性,支持有向图和多源输入。例子:在知识图谱中,可以区分处理"导演→电影"和"演员→电影"两种不同类型的有向边,使用不同的聚合权重;在推荐系统中,可以同时聚合用户的购买历史、浏览记录、社交关系等多源信息。
-
- 在效率、通用性、灵活性三方面全面优于谱方法。例子:GraphSAGE、GAT、GIN等主流GNN模型都采用空间方法;工业界应用(如Pinterest的推荐系统、阿里巴巴的商品图网络)几乎全部使用空间方法。
- 引入注意力机制到图神经网络 : 在聚合邻居信息时,自适应地为不同邻居分配不同的重要性权重,而非平等对待所有邻居。
- 使用注意力函数
$α(·)$ 自适应控制邻居节点的贡献权重,并支持多头注意力在不同子空间学习权重。
其中:
| 符号 | 含义 |
|---|---|
| 注意力权重(标量,0-1之间) | |
| 权重矩阵(所有节点共享) | |
| 激活函数 |
-
例子:
-
论文引用网络中,被高引论文对当前论文的影响权重自动设置得更高
-
社交网络中,密切好友的特征对用户表示的贡献更大
-
- 在多头注意力基础上,引入门控机制;不同注意力头的权重不相等,通过自注意力自适应计算每个头的重要性。
-
例子:
-
在知识图谱中,某些注意力头专注于"类别关系",某些专注于"属性关系",GAAN自动学习哪类关系对当前任务更重要。
-
推荐系统中,不同头关注用户的不同兴趣维度(价格敏感、品牌偏好等),门控机制决定当前预测时哪个维度更关键。
-
- 使用LSTM + 注意力机制,序列化访问重要节点,优先访问高优先级邻居并聚合信息。
其中:
| 符号 | 含义 |
|---|---|
| 选择函数 | |
| 整个图结构 | |
| 长短期记忆网络 |
-
例子:
-
分子性质预测中,先访问分子的活性中心(如羟基、氨基),再逐步扩展到其他原子。
-
社交网络社区检测中,从意见领袖开始,逐步访问有影响力的节点序列来判断社区类型。
-
- 将图结构数据映射到潜在空间;同时学习节点嵌入和图结构;基于图神经网络的编码器。
传统AutoEncoder:
图像 → 编码器 → 低维向量 → 解码器 → 重建图像
图AutoEncoder:
图 G → 编码器 → 节点嵌入 Z → 解码器 → 重建图结构
| 方法 | 编码器 | 解码器 | 重建目标 | 输入 | 特色 |
|---|---|---|---|---|---|
| GAE | GCN | 内积 | 邻接矩阵A | A+X | 简单高效 |
| VGAE | GCN | 内积 | 邻接矩阵A | A+X | 变分推断,生成模型 |
| ARGA | GCN | 内积 | 邻接矩阵A | A+X | 对抗训练,规则嵌入 |
| DNGR | MLP | MLP | PPMI矩阵 | A | 解决稀疏性 |
| SDNE | MLP | MLP | 邻接矩阵A | A | 一阶+二阶近似 |
| NetRA | LSTM | LSTM | 随机游走序列 | A+X | 序列化图 |
| DRNE | LSTM | - | - | A+X | 递归聚合 |
class GAE:
def __init__(self, input_dim, hidden_dim, embedding_dim):
# 两层GCN编码器
self.gcn1 = GCNLayer(input_dim, hidden_dim)
self.gcn2 = GCNLayer(hidden_dim, embedding_dim)
def encode(self, A, X):
# 第一层
H = ReLU(self.gcn1(A, X))
# 第二层(不用激活函数)
Z = self.gcn2(A, H)
return Z
def decode(self, Z):
# 内积解码器
A_pred = sigmoid(Z @ Z.T)
return A_pred| 方法 | 最适合的应用场景 |
|---|---|
| GAE | 链接预测:Facebook好友推荐(预测用户A和用户B是否可能成为好友) 节点分类:论文分类(根据引用网络预测论文所属领域:AI、DB、CV等) |
| VGAE | 异常检测:信用卡欺诈检测(识别交易网络中的异常交易模式) 生成任务:分子生成(生成具有特定性质的新药物分子结构) |
| ARGA | 鲁棒推荐:电商商品推荐(在用户行为数据存在噪声时仍能准确推荐) 对抗性社区检测:识别社交网络中的真实社区(抵抗虚假账号干扰) |
| DNGR | 稀疏知识图谱:医疗知识图谱补全(疾病-症状-药物关系稀疏时的三元组预测) 冷启动推荐:新用户商品推荐(用户-商品交互数据极少的情况) |
| SDNE | 社交网络分析:微博10亿用户关系网络的社区发现 交通网络:全国高速公路网络的拥堵预测(保持邻近路段和远程连接) |
| NetRA | 时序推荐:视频App用户行为预测(根据用户观看历史序列推荐下一个视频) 动态社交网络:Twitter用户关注关系演化预测(预测未来关注趋势) |
| DRNE | 组织架构分析:公司组织结构中的职位推荐(基于层级关系) 生物分类树:物种分类预测(基于生物进化树的层次结构预测物种特性) |
- 图生成网络的目标是在给定一组观察到的图的情况下生成新的图。
- MolGAN(Molecular Generative Adversarial Networks):将relational GCN、改进的GAN和强化学习(RL)集成在一起,生成具有所需属性的分子图。
| 组件 | 功能 | 目标 |
|---|---|---|
| 生成器 | 生成伪图及其特征矩阵 | 尽可能生成真实的分子图 |
| 鉴别器 | 区分真实图和生成图 | 识别伪造的分子结构 |
| 奖励网络 | 评估生成图的属性 | 鼓励生成具有特定属性的图 |
-
DGMG(Deep Generative Models of Graphs):利用空间图卷积网络递归生成节点和边。
-
递归生成:每次添加一个节点。
-
条件决策:基于当前图的表示决定下一步。
-
动态更新:每次添加节点/边后更新图表示。
-
-
定义:图时空网络是同时捕捉空间相关性和时间相关性的深度学习模型,用于处理具有图结构且节点特征随时间动态变化的数据。
-
典型应用场景:
- 交通预测:传感器网络监测道路交通速度
- 人体动作识别:骨骼关节点的时空建模
- 社交网络分析:用户行为的时空演化
- 气象预测:气象站网络的时空数据
- DCRNN (Diffusion Convolutional Recurrent Neural Network):将扩散图卷积与GRU结合
架构特点:
├── 空间建模:扩散卷积 (Diffusion Convolution)
│ └── 模拟信息在图上的扩散过程
├── 时间建模:GRU (门控循环单元)
│ └── 将扩散卷积嵌入GRU的矩阵运算中
└── 编码器-解码器结构
└── 用于序列到序列预测
- CNN-GCN:CNN处理时间 + GCN处理空间
架构流程:
时间维度 → 1D CNN (卷积提取时间特征)↓
空间维度 → GCN (图卷积提取空间特征)
↓
预测输出
- 其他架构:ST-GCN (Spatial Temporal Graph Convolutional Network) :统一的时空图卷积框架; Structural-RNN - 基于图结构的定制化RNN;Transformer for graphs等。
考虑到图卷积消息传递的基本思想,每个节点聚合邻居节点的特征,如公式:($A$为邻接矩阵,$H$为节点特征矩阵。)
这种现象可能导致一个潜在问题:若图中存在特征显著的节点(如高度中心节点),与之相邻的节点在聚合信息时,可能会过度依赖于该中心节点的特征,而削弱来自其他邻居的影响,从而影响模型对不同结构信息的均衡学习,导致训练偏差或泛化能力下降。
因此,引入度矩阵来实现节点特征的对称归一化,如公式:(
(1)图卷积在傅里叶域定义为用拉普拉斯特征向量基进行滤波。对称归一化拉普拉斯(如公式)的特征值范围在 [0,2] 之间。采用该算子的近似,有利于数值稳定。
(2)$( D^{-\frac{1}{2}} A D^{-\frac{1}{2}} )$ 是对称矩阵,保留了图的对称性质,特征值为实数,便于分析。
(3)消息从节点
GAT的注意力系数的计算公式如下:
- GAT先对节点特征
$h_i$ 和$h_j$进行线性变换并拼接,然后再用一个简单的线性层$a^T$加非线性激活来计算得分。一旦模型训练完成,对于固定的节点$j$来说,$a^TWh_j$是固定的,而$h_i$只能平移所有$e_ij$的值,而无法改变大小顺序,因此是静态注意力。
GATv2的注意力系数的计算公式如下:
- GATv2将查询节点和邻居节点的特征先拼接,然后一起进行线性变换和非线性激活,最后再与权重向量$a$作用。这使得$ h_i
$能够与不同的$ h_j $进行复杂的、非线性的交互,从而动态地影响最终的注意力排序。
总结:GATv2通过将非线性激活函数插入到更早的计算阶段,将注意力机制从一个表达能力受限的线性模型,升级成了一个表达能力更强的非线性模型。
采用LeakyReLU等非线性函数



