GNN 与 Transformer 融合 2025-2026 新视角
引言
图神经网络 (GNN) 和 Transformer 是当今最具影响力的两类深度学习架构。2024-2026 年间,二者的融合成为最重要的研究方向之一:
- 图 Transformer (Graph Transformer, GT):在图数据上用注意力
- 图扩散 Transformer:用扩散 + 注意力生成图
- 图状态空间模型 (Graph Mamba):用 SSM 替代注意力,实现 复杂度
- GNN + LLM:用 LLM 处理图数据
- 图基础模型 (Graph Foundation Model, GFM):跨图、跨任务零样本迁移
本文系统梳理这五大方向,建立从基础到前沿的完整图-注意力统一视角。1
一、图视角的统一
1.1 三种图的对应
重要观察:
| 数据类型 | 静态图 | 动态图 | 软图 |
|---|---|---|---|
| 序列 | 链状图 | - | 注意力 |
| 图像 | 网格图 | - | 局部注意力 |
| 文本 | 句子图 | - | 全局注意力 |
| 通用图 | 邻接矩阵 | 时间演化 | 学习 |
关键统一:所有这些数据都可以视为”图”,区别仅在于邻接关系。
1.2 注意力 = 动态全连接图
Transformer 注意力矩阵 是软的全连接邻接矩阵:
- 节点:每个 token
- 边权重: = 注意力分数
与 GNN 的对应:
| 概念 | GNN | Transformer |
|---|---|---|
| 图结构 | 输入给定 | 注意力构建 |
| 消息传递 | 沿边 | 沿注意力权重 |
| 深度 | 多层消息传递 | 多层注意力 |
1.3 GNN = 静态图上的可微消息传递
import torch
import torch.nn as nn
import torch.nn.functional as F
class GNNLayer(nn.Module):
"""GNN 消息传递层"""
def __init__(self, d_in, d_out):
super().__init__()
self.msg_net = nn.Linear(2 * d_in, d_out)
self.update_net = nn.Linear(2 * d_in, d_out)
def forward(self, h, adj):
"""
h: (N, d_in) 节点特征
adj: (N, N) 邻接矩阵
"""
N = h.size(0)
# 构建边 (i, j)
messages = []
for i in range(N):
for j in range(N):
if adj[i, j] > 0:
msg = self.msg_net(torch.cat([h[i], h[j]]))
messages.append((i, msg))
# 聚合
h_new = torch.zeros(N, self.update_net.out_features, device=h.device)
for src, msg in messages:
h_new[src] += msg
# 更新
h_new = self.update_net(torch.cat([h, h_new], dim=-1))
return F.relu(h_new)二、图 Transformer 架构
2.1 GraphGPS:通用 GT 框架
Rampášek et al. NeurIPS 2022 提出的 GraphGPS 是目前最广泛使用的 GT 架构:2
三层组合:
- MPNN:捕获局部结构
- Self-Attention:捕获全局依赖
- 位置编码:LapPE、RWSE、SignNet
结论:GT 性能高度依赖位置编码(PE)。
2.2 位置编码(PE)的关键作用
Black et al. (2024) 系统比较各类 PE:
| PE 类型 | 来源 | 表达能力 |
|---|---|---|
| Laplacian PE | 图拉普拉斯 | 局部-全局 |
| Random Walk PE | 随机游走 | 局部-全局 |
| SignNet | 特征值符号 | 中等 |
| 结构编码 | 子图结构 | 强 |
| LapPE + Spectral 组合 | 多模态 | 最佳 |
2.3 2024-2026 新 GT 架构
VCR-Graphormer (2024):虚拟连接实现 mini-batch GT, 复杂度
Subgraphormer (2024):用图乘积统一 Subgraph GNN 和 GT
Primphormer (ICML 2025):基于原始表示的线性复杂度 GT,避免显式 PE
Relational Graph Transformer (RGT) (2025):面向关系型/多表数据,建模异构时序图
Hierarchical Mask Framework (2025):统一并增强 GT 的层级掩码框架
class GraphGPSLayer(nn.Module):
"""GraphGPS 层:MPNN + Self-Attention"""
def __init__(self, d_model, n_heads, d_ff, dropout=0.1):
super().__init__()
# 局部 MPNN
self.mpnn = nn.Linear(d_model, d_model)
# 全局注意力
self.attn = nn.MultiheadAttention(d_model, n_heads, batch_first=True)
# FFN
self.ffn = nn.Sequential(
nn.Linear(d_model, d_ff),
nn.GELU(),
nn.Linear(d_ff, d_model)
)
# 归一化
self.ln1 = nn.LayerNorm(d_model)
self.ln2 = nn.LayerNorm(d_model)
self.ln3 = nn.LayerNorm(d_model)
self.dropout = nn.Dropout(dropout)
def forward(self, x, adj, mask=None):
B, N, d = x.shape
# MPNN 分支
# adj: (B, N, N)
mpnn_out = torch.bmm(adj, self.mpnn(x)) / (adj.sum(dim=-1, keepdim=True) + 1e-8)
x = x + self.dropout(self.ln1(mpnn_out))
# Self-Attention 分支
attn_out, _ = self.attn(self.ln2(x), self.ln2(x), self.ln2(x),
key_padding_mask=mask)
x = x + self.dropout(attn_out)
# FFN
x = x + self.dropout(self.ln3(self.ffn(x)))
return x三、图谱 Transformer
3.1 Specformer:谱域注意力
Bo, Shi, Wang, Liao (ICLR 2023) 提出 Specformer:3
把标量-标量谱滤波器升级为集合-集合函数(spectral token Transformer):
洞察:谱域注意力捕捉全局频率模式,弥补传统谱 GNN 仅用 的标量滤波局限。
3.2 Graph Spectral Token (2024)
Pengmei & Li (2024) 把图谱信息作为”token”注入任意 GT,作为轻量插件。
3.3 表达能力
Zhang, Zhao, Maron (2024) 证明:
谱不变 GNN 的 1-WL 上界,并刻画与子图 GNN 的表达能力关系。
谱方法与子图方法有等价性。
四、图扩散 Transformer
4.1 扩散模型 + 图
Liu, Xu, Luo, Jiang (Notre Dame, 2024) 在扩散模型的去噪网络中用 GT 替代 GNN,支持多属性条件分子生成。
4.2 平流扩散注意力
Wu, Yang, Zeng, Bronstein (2024-2025) 引入平流扩散算子作为 GT 的全局混合器:4
作为软注意力偏置,提升拓扑偏移下的泛化性。
4.3 分子生成:JTreeformer
Shi, Xie, Zhang et al. (HIT Shenzhen 2025) 用潜扩散 + GT 生成分子图树结构。
4.4 扩散-注意力统一视角
扩散过程可以视为连续图上的扩散:
注意力机制可以视为离散图扩散:
关键联系:二者都是图上的扩散过程。
五、图状态空间模型(Graph Mamba)
5.1 Mamba 在图上的挑战
将 SSM 应用于图的核心挑战:
- 节点顺序:Mamba 假设序列顺序,但图节点无自然顺序
- 稀疏性:图通常是稀疏的, 注意力浪费
- 结构信息:如何编码图拓扑
5.2 Graph-Mamba (Wang et al. 2024)
首次将选择性 SSM 应用于长程图序列建模,复杂度 :5
其中 是选择性参数。
5.3 Graph Mamba (Behrouz & Hashemi 2024)
节点级 SSM + 图感知扫描顺序,缓解 over-squashing。
5.4 DyG-Mamba (2024)
连续 SSM 建模动态图,捕捉时间连续性。
5.5 扩展到异构图与时空图
- STG-Mamba (2024):时空图
- HeteGraph-Mamba (2024):异构图
- MP-SSM (2025):消息传递 SSM
class GraphMambaBlock(nn.Module):
"""图 Mamba 块"""
def __init__(self, d_model, d_state, d_conv=4, expand=2):
super().__init__()
self.d_model = d_model
self.d_state = d_state
# SSM 参数
self.A_log = nn.Parameter(torch.log(torch.arange(1, d_state + 1).float()))
self.D = nn.Parameter(torch.ones(d_model))
# 选择性投影
self.x_proj = nn.Linear(d_model, d_state * 2 + d_model, bias=False)
self.dt_proj = nn.Linear(d_state, d_model, bias=True)
# 局部卷积
self.conv = nn.Conv1d(d_model, d_model, d_conv, padding=d_conv-1, groups=d_model)
# 图感知位置编码
self.graph_pos = nn.Linear(1, d_model)
def forward(self, x, adj):
"""
x: (B, N, d_model) 节点特征
adj: (B, N, N) 邻接矩阵
"""
B, N, d = x.shape
# 1. 局部卷积
x_conv = self.conv(x.transpose(1, 2))[..., :N].transpose(1, 2)
x = x * F.silu(x_conv)
# 2. 选择性扫描
x_proj = self.x_proj(x) # (B, N, 2*d_state + d)
delta, B_ssm, C_ssm = torch.split(
x_proj, [d, self.d_state, self.d_state], dim=-1
)
delta = F.softplus(self.dt_proj(delta)) # (B, N, d)
# 3. 离散化
A = -torch.exp(self.A_log) # (d_state,)
# 这里简化实现:实际是 selective_scan
h = self.selective_scan(x, delta, A, B_ssm, C_ssm, self.D)
return h
def selective_scan(self, u, delta, A, B, C, D):
"""简化版 selective scan"""
# 实际 PyTorch 实现需要自定义 CUDA kernel
# 这里用循环示意
B_dim, N, d = u.shape
d_state = A.size(0)
h = torch.zeros(B_dim, d, d_state, device=u.device)
outputs = []
for t in range(N):
# 离散化
dA = torch.exp(delta[:, t, :] @ torch.diag(A)) # (B, d, d_state)
dB_u = delta[:, t, :] * B[:, t, :] * u[:, t, :] # 简化
h = dA * h + dB_u.unsqueeze(-1) @ B[:, t, :].unsqueeze(-2)
y = (h @ C[:, t, :].unsqueeze(-1)).squeeze(-1)
outputs.append(y)
return torch.stack(outputs, dim=1) + D * u六、GNN + LLM 融合
6.1 两大范式
Graph-as-Text(图作为文本):
- 用 prompt engineering 将图序列化为文本
- 让 LLM 直接处理图数据
- 代表:LLaGA
Graph-as-Token(图作为 token):
- 用图 tokenizer 把图编码为 LLM 可理解的 token
- 指令微调 LLM 处理图 token
- 代表:Graph2Token、G-Tokenizer
6.2 LLaGA (ICML 2024)
Ruan et al. (2024) 用模板将图序列化为 token:6
def graph_to_text(graph, features):
"""图序列化为文本"""
text = []
for i, (neighbors, feat) in enumerate(zip(graph.adj, features)):
# 节点 i 的描述
desc = f"Node {i}: {feat}. Neighbors: {','.join(map(str, neighbors))}."
text.append(desc)
return " ".join(text)
# 提示模板
prompt = f"""Given the following graph: {graph_to_text(graph, features)}
Question: What is the class of node {target}?
Answer:"""6.3 Graph Tokenization
Graph Tokenization for Bridging Graphs and Transformers (2025):
- 把图结构编码为 LLM 可理解的 token
- 是 Graph2text vs Graph2token 路线之争的核心
Graph2text or Graph2token (2025):
- 系统比较两条路线
- 发现 Graph2token 在结构推理任务上更优
6.4 综述与未来
A Survey of LLMs for Graphs (Ren et al. 2024):
- 系统总结 LLM + GNN 的方法
- 三大任务:节点、边、图级别
- 三大挑战:图结构编码、跨图迁移、可解释性
七、图基础模型(GFM)
7.1 跨图零样本迁移
核心问题:能否训练一个模型,不需在目标图上训练就能预测?
7.2 GraphAny (2024-2025)
Zhao, Mostafa, Galkin, Bronstein, Zhu, Tang (2024, v5 2025-04) 提出 GraphAny:7
首个支持任意图节点分类的基础模型,无需在目标图上训练。
关键公式:
基于半监督传播的元学习预测器。
7.3 PRODIGY (Stanford SNAP)
Qian et al. 预训练 GT 支持 prompt-based ICL 跨图迁移。
7.4 GFM-RAG / 关系型 GFM
GFM-RAG (Luo et al. 2025):把 GFM 用于 RAG 任务。
Relation-Aware GFM (Yu et al. 2025):关系感知的图基础模型,统一多关系任务。
AutoGFM (ICML 2025):自动化架构搜索的 GFM。
Google Relational GFM (2025-07):将关系数据库视作异构图,构建通用 GFM。
class GraphAny(nn.Module):
"""GraphAny:图基础模型"""
def __init__(self, d_input, d_hidden, n_classes):
super().__init__()
# 节点编码器
self.node_encoder = nn.Sequential(
nn.Linear(d_input, d_hidden),
nn.ReLU(),
nn.Linear(d_hidden, d_hidden)
)
# 元学习预测器
self.predictor = nn.Sequential(
nn.Linear(d_hidden * 2, d_hidden),
nn.ReLU(),
nn.Linear(d_hidden, n_classes)
)
def forward(self, x, adj, prompt=None):
"""
x: (N, d_input) 节点特征
adj: (N, N) 邻接矩阵
prompt: 可选 prompt(任务描述)
"""
h = self.node_encoder(x) # (N, d_hidden)
# 半监督传播
for _ in range(3):
h = torch.sparse.mm(adj, h)
# 节点-全局表示
global_feat = h.mean(dim=0, keepdim=True).expand_as(h)
features = torch.cat([h, global_feat], dim=-1)
# 预测
logits = self.predictor(features)
return logits八、图谱与图扩散的数学统一
8.1 统一视角
三大数学对象:
- 图结构:邻接矩阵 、拉普拉斯
- 谱方法:图傅里叶变换 ,其中
- 扩散过程:(热扩散)
统一公式:
8.2 Transformer 与扩散的对应
| 概念 | Transformer | 图扩散 |
|---|---|---|
| 状态 | Token 表示 | 节点特征 |
| 演化 | 注意力 + FFN | 拉普拉斯 + 漂移 |
| 平衡 | 残差 + LN | 谱分解 + 平衡分布 |
| 信息流 | 全连接 | 局部 + 全局(取决于 ) |
8.3 SSM 与 GNN 的统一
SSM:
GNN 消息传递:
统一: 类比 , 类比 。
九、2024-2026 关键进展总结
9.1 三大趋势
- 架构融合多元化:GT + PE 系统化;SSM 替代注意力;扩散统治图生成
- 基础模型化:GraphAny、PRODIGY、GFM-RNA 等追求跨图零样本
- LLM 化路径分化:Graph-as-Text vs Graph-as-Token
9.2 三大开放问题
- 大规模 GFM:大多数 GFM 仍局限于中小图(<10K 节点)
- 表达力 vs 可扩展性:图 Transformer 的二次复杂度
- Mamba + 图:如何把 Mamba 的成功经验注入到 GFM
9.3 三大实践建议
- 位置编码:优先使用 LapPE + Spectral 组合
- 架构选择:中小图用 GT,大图用 Mamba
- 图 LLM:结构推理任务用 Graph2token
十、完整实现:现代图 Transformer
import torch
import torch.nn as nn
import torch.nn.functional as F
import math
class LaplacianPE(nn.Module):
"""Laplacian 位置编码"""
def __init__(self, d_pe, n_eigenvectors=8):
super().__init__()
self.n_eig = n_eigenvectors
self.d_pe = d_pe
self.linear = nn.Linear(2 * n_eigenvectors, d_pe)
def forward(self, adj):
"""
adj: (N, N) 邻接矩阵
"""
N = adj.size(0)
# 计算拉普拉斯
D = torch.diag(adj.sum(dim=-1))
L = D - adj
# 特征值分解
eigvals, eigvecs = torch.linalg.eigh(L)
# 取最小的 k 个特征向量(不含 0 特征值)
pe = eigvecs[:, 1:self.n_eig + 1] # (N, n_eig)
# 添加特征值信息
eigval_info = torch.log(eigvals[1:self.n_eig + 1].unsqueeze(0) + 1e-8)
pe = torch.cat([pe, eigval_info.expand(N, -1)], dim=-1)
return self.linear(pe) # (N, d_pe)
class ModernGraphTransformer(nn.Module):
"""现代图 Transformer"""
def __init__(self, d_input, d_model, n_heads, d_ff, n_layers,
d_pe, n_classes, dropout=0.1):
super().__init__()
self.d_model = d_model
# 输入投影
self.input_proj = nn.Linear(d_input, d_model)
# 位置编码
self.lap_pe = LaplacianPE(d_pe)
self.pe_proj = nn.Linear(d_model + d_pe, d_model)
# GT 层
self.layers = nn.ModuleList([
GraphGPSLayer(d_model, n_heads, d_ff, dropout)
for _ in range(n_layers)
])
# 输出
self.norm = nn.LayerNorm(d_model)
self.head = nn.Linear(d_model, n_classes)
def forward(self, x, adj):
"""
x: (N, d_input) 节点特征
adj: (N, N) 邻接矩阵
"""
h = self.input_proj(x) # (N, d_model)
pe = self.lap_pe(adj) # (N, d_pe)
h = self.pe_proj(torch.cat([h, pe], dim=-1))
for layer in self.layers:
h = layer(h.unsqueeze(0), adj.unsqueeze(0)).squeeze(0)
h = self.norm(h)
return self.head(h) # (N, n_classes)
# === 训练示例 ===
def train_graph_transformer():
# 模拟图数据
N = 100 # 节点数
d_input = 32
n_classes = 7
# 随机图
adj = (torch.rand(N, N) > 0.7).float()
adj = (adj + adj.T) > 0
adj = adj.float()
adj.fill_diagonal_(0)
x = torch.randn(N, d_input)
y = torch.randint(0, n_classes, (N,))
# 模型
model = ModernGraphTransformer(
d_input=d_input, d_model=64, n_heads=4, d_ff=128,
n_layers=4, d_pe=16, n_classes=n_classes
)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=0.1)
for epoch in range(50):
logits = model(x, adj)
loss = F.cross_entropy(logits, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if epoch % 10 == 0:
acc = (logits.argmax(dim=-1) == y).float().mean()
print(f"Epoch {epoch}, Loss {loss.item():.4f}, Acc {acc.item():.4f}")十一、与其他专题的连接
- GNN 理论:过平滑、表达能力、泛化界
- 图基础模型:跨图零样本迁移
- Transformer 数学:注意力 = 软全连接图
- 图 Mamba:SSM 在图上的应用
- 几何深度学习:Erlangen 纲领
参考资料
其他 2024-2026 关键论文
- Min, E. et al. (2024). Graph Transformers: A Survey. arXiv:2407.09777
- Ren, J. et al. (2024). A Survey of LLMs for Graphs. arXiv:2405.08011
- Black, M. et al. (2024). A Comprehensive Study on Graph Neural Networks and Graph Transformers. arXiv:2402.14202
- Behrouz, A. & Hashemi, F. (2024). Graph Mamba: Towards Learning on Graphs with State Space Models. arXiv:2402.08678
- Li, D. et al. (2024). DyG-Mamba: Continuous State Space Modeling on Dynamic Graphs. arXiv:2408.06966
- Zhang, B. et al. (2024). On the Expressive Power of Spectral Invariant GNNs. arXiv:2406.04336
- Liu, G. et al. (2024). Graph Diffusion Transformers for Multi-Conditional Molecular Generation. arXiv:2401.13858
- Zhou, C. et al. (2024). Latent Graph Diffusion. arXiv:2402.02518
- Luo, Z. et al. (2025). GFM-RAG: Graph Foundation Model for RAG. arXiv:2502.01113
- Stoll, M. et al. (2025). Generalizable Insights for Graph Transformers. arXiv:2511.08028
- He, Y. et al. (ICML 2025). Primphormer: A Linear Complexity Graph Transformer. PMLR v267
- Dwivedi, V.P. et al. (2025). Relational Graph Transformer. arXiv:2505.10960
最后更新:2026-06-22
Footnotes
-
Wu, Z. et al. (2019). A Comprehensive Survey on Graph Neural Networks. IEEE TNNLS. arXiv:1901.00596 ↩
-
Rampášek, L. et al. (2022). Recipe for a General, Powerful, Scalable Graph Transformer. NeurIPS 2022. arXiv:2205.12454 ↩
-
Bo, D. et al. (2023). Specformer: Spectral Graph Neural Networks Meet Transformers. ICLR 2023. arXiv:2303.01028 ↩
-
Wu, Q. et al. (2024-2025). Supercharging Graph Transformers with Advective Diffusion. arXiv:2310.06417 ↩
-
Wang, C. et al. (2024). Graph-Mamba: Towards Long-Range Graph Sequence Modeling with Selective State Space Models. arXiv:2402.00789 ↩
-
Ruan, Y. et al. (2024). LLaGA: Large Language and Graph Assistant. ICML 2024. arXiv:2402.08170 ↩
-
Zhao, J. et al. (2024). GraphAny: A Foundation Model for Node Classification on Any Graph. arXiv:2405.20445 ↩