一、同质图(Homogeneous Graph)

定义
图中所有节点属于同一类型,所有边也属于同一类型,是最基础的图结构。

数学表示
$\mathcal{G} = (\mathcal{V}, \mathcal{E})$

  • $\mathcal{V}$: 单一类型节点集合
  • $\mathcal{E} \subseteq \mathcal{V} \times \mathcal{V}$: 单一类型边集合

典型特征

  • 节点同质:所有节点表示相同实体(如用户、论文)
  • 边同质:所有边表示相同关系(如好友、引用)
  • 邻接矩阵对称:若图无向,则 $\mathbf{A} = \mathbf{A}^\top$

应用场景

  • 社交网络(Facebook好友关系)
  • 引用网络(arXiv论文互引)
  • 分子结构(原子间化学键)

二、异质图(Heterogeneous Graph)

定义
包含多种节点类型和/或多种边类型,能建模更复杂的现实关系。

数学表示
$\mathcal{G} = (\mathcal{V}, \mathcal{E}, \mathcal{T}_v, \mathcal{T}_e, \phi, \psi)$

  • $\mathcal{T}_v$: 节点类型集合($|\mathcal{T}_v| > 1$)
  • $\mathcal{T}_e$: 边类型集合($|\mathcal{T}_e| > 1$)
  • $\phi: \mathcal{V} \to \mathcal{T}_v$: 节点类型映射函数
  • $\psi: \mathcal{E} \to \mathcal{T}_e$: 边类型映射函数

典型特征

  • 节点异构:多种类型节点(作者/论文/会议/领域)
  • 边异构:多种语义关系(撰写/发表/引用/属于)
  • 邻接张量:需使用三维张量 $\mathbf{A}^{(r)}$ 表示关系 $r$

应用场景

  • 学术网络(DBLP, AMiner)
  • 电商系统(用户-商品-店铺)
  • 知识图谱(实体-关系-实体)

三、核心区别对比

特性同质图异质图
节点类型单一类型($\\mathcal{T}_v\=1$)多种类型($\\mathcal{T}_v\≥2$)
边类型单一关系($\\mathcal{T}_e\=1$)多种关系($\\mathcal{T}_e\≥2$)
邻接结构二维矩阵 $\mathbf{A}$三维张量 $\mathbf{A}^{(r)}$
语义信息高(边类型携带丰富语义)
建模复杂度

四、异构图核心概念:元路径(Meta-Path)

作用:捕捉跨类型的语义关系链
定义:节点类型序列 $T1 \xrightarrow{R_1} T_2 \xrightarrow{R_2} … \xrightarrow{R_k} T{k+1}$
示例

  • APA:作者 $\xrightarrow{发表}$ 论文 $\xrightarrow{被引用}$ 作者(合作者关系)
  • AVF:作者 $\xrightarrow{工作于}$ 机构 $\xrightarrow{位于}$ 城市(地域关联)

数学表示
元路径邻接矩阵:

其中是关系 $R_i$ 的邻接矩阵


五、建模方法对比

方法类型同质图模型异质图模型
基础模型GCN, GAT, GraphSAGER-GCN, HAN, HGT
邻接处理单一 $\mathbf{A}$分关系处理 $\mathbf{A}^{(r)}$
聚合策略邻居均值/最大值按关系类型分组聚合
新SOTA模型GCNII, GPR-GNNMAGNN, GTN (KDD 2023)

六、异构图建模实战(PyG代码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import torch
from torch_geometric.data import HeteroData
from torch_geometric.nn import HGTConv

# 构造异构图数据
data = HeteroData()

# 添加节点类型及特征
data['author'].x = torch.randn(4, 16) # 4位作者
data['paper'].x = torch.randn(6, 32) # 6篇论文
data['conf'].x = torch.randn(2, 8) # 2个会议

# 添加边关系:作者->论文(撰写关系)
data['author', 'writes', 'paper'].edge_index = torch.tensor([
[0, 1, 1, 2, 3], # 作者索引
[0, 1, 2, 3, 4] # 论文索引
])

# 添加边关系:论文->会议(发表关系)
data['paper', 'published_in', 'conf'].edge_index = torch.tensor([
[0, 1, 2, 3, 4, 5], # 论文索引
[0, 0, 0, 1, 1, 1] # 会议索引
])

# HGT模型定义(异构图Transformer)
class HGT(torch.nn.Module):
def __init__(self):
super().__init__()
self.conv1 = HGTConv(16, 32, data.metadata(), heads=4) # 输入16→32维
self.conv2 = HGTConv(32, 8, data.metadata(), heads=4) # 输出8维

def forward(self, x_dict, edge_index_dict):
x = self.conv1(x_dict, edge_index_dict)
x = torch.relu(x)
x = self.conv2(x, edge_index_dict)
return x

# 模型推理
model = HGT()
output = model(data.x_dict, data.edge_index_dict) # 输出各类型节点特征

七、学术前沿进展 (2023-2024)

  1. 动态异构图

    • DyHGN (KDD 2023):建模时序依赖的异构图神经网络
    • 适用场景:金融风控、社交网络演化分析
  2. 自监督异构图学习

    • HeCo (WWW 2023):通过跨类型对比学习
      1
      loss = -log(exp(sim(z_a, z_p)/τ) / ∑_{z_n} exp(sim(z_a, z_n)/τ))
    • 创新点:避免负采样偏差,处理长尾分布
  3. 超图拓展

    • HNHN (NeurIPS 2023):异质超图神经网络
    • 典型应用:药物组合效应预测

最新工具推荐

  • PyG 2.4+ 内置HeteroDataHGTConv
  • DGL 1.1+ 支持元路径随机游走
  • OpenHGNN (清华大学):专为异构图设计的工具库