Transformers

Transformers将一维向量序列映射到称作token的一维向量序列。对于输出序列,有两种情况:

  • 下一个token—>GPT
  • 池化得到序列级别的嵌入(如用作分类任务)

    Tokens在其中的处理过程包含大量组成部分:
  • 归一化
  • 前馈神经网络
  • 位置编码
  • 多头自注意力机制

自注意力机制

Self-attention

在多头自注意力机制之前的“单头”自注意力机制步骤如下:

  1. compute “key, value, query” for each input
  2. (just for $x_1$): compute scores between pairs, turn into probabilities (same for $x_2$)
  3. get new embedding $z_1$ by weighted sum of $v_1, v_2$

    在矩阵形式下的计算相同,如下图:

Multi-head self-attention

  • Do many self-attentions in parallel, and combine
  • Different heads can learn different “similarities” between inputs
  • Each has own set of parameters

Transformers vs. GNN

  • 相同点:GNN也是输入一个向量序列(没有特定顺序)并且输出一个嵌入序列
  • 不同点:GNN采用的是信息传递,Transformer使用自注意力机制

Self-attention vs. message passing

Self-attention Update

这个公式同时给出了所有token的嵌入。如果简化问题,这里只有token $x_1$,那么如何解释得到的下面的公式:

根据上面的公式,从token 1开始计算新的嵌入的步骤如下(即可以重写为以下形式):

  1. 计算来自j的信息:$(v_j, k_j) = MSG(x_j) = (W^Vx_j, W^Kx_j)$
  2. 计算来自1的查询:$q_1=MSG(x_1)=W^Qx_1$
  3. 聚合所有信息:

由此可见,自注意力可以被重写为信息传递+聚合的形式,因此这本质上就是GNN。但是现在并没有图,只有token,那么这个GNN到底在什么样的图上进行操作?

clearly tokens = nodes,那么边在哪里?

观察到,token 1依赖于(获取信息的渠道来自)所有的其它的token,因此这个图是完全图

另外,如果只是对$j\in N(i)$进行求和,那么就得到了 ~GAT

小结

  1. 自注意力机制是信息传递的一种特殊情况
  2. 自注意力机制是在完全图上的信息传递
  3. 给定一个图,如果限制自注意力机制的softmax只作用在结点i的相邻结点j,那么就得到了GAT

A New Design Landscape for Graph Transformers

使用Transformers处理图

为了理解如何处理图,我们必须:

  • 理解Transformer中的关键组成部分,已经了解过:
    • tokenizing
    • self-attention
  • Decide how to make suitable graph versions of each

Graph Transformer必须囊括以下的输入:

  • 结点特征
  • 邻接关系信息(adjacency information)
  • 边特征
    而Transformer的关键组成部分为:
  • tokenizing
  • positional encoding
  • self-attention
    当下的处理方式为:
  • 结点特征 <—> tokenizing
  • adjacency information <—> positional encoding
  • edge features <—> self-attention

Transformer中的位置编码

根据公式

,token的顺序并不会有任何影响,因此类似于词袋模型预测模型中,不管单词以什么顺序输入都会产生相同的预测结果。
Transformer并不知道输入的顺序,额外的位置特征是必须的,从而知道单词的顺序。对于NLP来说,位置编码向量是可学习的参数。如下图:

Graph Transformer中的位置编码

如果直接将结点特征作为输入的token,那么会完全丢失掉邻接信息。因此将邻接信息编码到每个结点的位置编码中,而位置编码描述的是结点在图中的哪个位置。此时,需要设计一个好的位置编码的方法。

相对距离|Relative distances

使用相对距离的策略进行位置编码,采用类似随机游走的策略。这种策略对于需要计算环数的场景非常好,适合位置感知的任务,但不适合结构感知的任务

拉普拉斯特征向量位置编码|Laplacian Eigenvector Positional Encoding

根据图理论,有拉普拉斯矩阵$L=Degrees-Adjacency$,每一个图都有自己的拉普拉斯矩阵,拉普拉斯矩阵编码了整个图的特征。

拉普拉斯矩阵捕捉的是整个图的结构,它的特征向量继承了这个结构。由于特征向量本质是向量,因此可以输入Transformer中。具有小特征值的特征向量=全局结构,具有大特征值的特征向量=局部对称性1

位置编码步骤:

  1. 计算k个特征向量
  2. 将特征向量放入矩阵中
  3. 第i行就是结点i的位置编码

注意:

e.g.给定一个图,判断是否有环,信息传递图神经网络不能解决这个问题

在自注意力机制中处理边特征

在注意力中添加边特征:

其中是一个 $n\times n$ 的矩阵,而描述了token j多大程度上影响token i的更新。因此调整用于基于边的特征。使用根据边的特征替代.

补充:

  • 如果在i和j之间有一条边并且特征为,那么定义,其中是可学习的参数
  • 如果没有边,寻找在i和j之间最短的路径$(e^1,e^2,…,e^N)$并定义$c_{ij}=\sum_nw^T_ne^n$,其中$w_1,…w_N$均为可学习的参数

参考文献:Do Transformers Really Perform Bad for Graph Representation

总结:Graph Transformer Design Space

  1. Tokenization
    • 通常是结点特征
    • 其它选择,如子图、结点+边特征
  2. Positional Encoding
    • 相对距离,或者拉普拉斯特征向量
    • 给Transformer图的邻接特征
  3. Modified Attention
    • 使用边特征重新调整注意力权重

Sign invariant Laplacian positional encodings for graph Transformers

拉普拉斯位置编码不是随意的向量,它们有我们没有注意到的特殊的结构。
不妨假设$v$是一个拉普拉斯特征向量,那么满足:

这也意味着:

因此$-v$也是一个拉普拉斯特征向量。也就是说,选择符号是随机的

Sign Ambiguity is a Problem

$v$和$-v$都是特征向量,但是当我们将它们用于位置编码时,我们随机挑选了一个。如果我们选择了另外一个符号,那么输入的位置编码就会发生改变,而模型的预测也会发生改变。对于$k$个特征向量,有$2^k$个符号选择方法,同样就有$2^k$种对输入的相同的图的预测结果。

简单的想法:在训练中,随机翻转特征向量的符号。

  • I.e. 数据增强
  • 模型会学习不去使用符号这一信息
  • 问题:指数级的符号选择方式很难学习

更好的选择:构建一个与符号选择无关的神经网络

  • 因为这个神经网络与符号无关,预测结果不再依赖于符号选择

符号无关神经网络

目标:构建一个神经网络$f(v_1, v_2,…,v_k)$,满足:

  • $f(v_1, v_2,…,v_k)=f(\pm v_1,\pm v_2,…,\pm v_k)$ 对于所有 $\pm$ 选择
  • $f$ is “expressive”:注意到$ f(v_1, v_2,…,v_k)=0$ 是符号无关的,但是这是一个非常差的神经网络架构

简化问题,如果是一个特征向量的情况,我们需要设计一个神经网络$f(v_1)$满足:

命题:$f$满足$f(v_1)=f(-v_1)$当且仅当有一个函数$\phi$满足:

设计一个符号无关神经网络$f(v_1, v_2,…,v_k)$有两步:

  1. 对每个$i$:符号无关$f_i(v_i)$
  2. 将独立的特征向量嵌入聚合:对单个特征向量使用模型:聚合使用另外一个神经网络$AGG=\rho$.
    因此,总的模型为SignNet:其中,$\rho,\phi=$any neural network(MLP,GNN etc.)

SignNet

定理:如果$f$是符号无关的,那么必然存在函数$\rho,\phi$满足:

SignNet可以表达所有的符号无关函数

如何在实际中使用SignNet?

  1. 计算特征向量
  2. 在SignNet中得到特征向量嵌入
  3. 将结点特征X与SignNet嵌入相连接
  4. 将结果输入主要的GNN/Transformer模型
  5. 梯度下降反向传播一起训练SignNet+预测模型

附录

1.图拉普拉斯特征向量的频率解释:从全局结构到局部对称性

在谱图理论中,图拉普拉斯矩阵的特征值与其对应特征向量的关系反应了图的频率特性。这一现象有深刻的数学原理,可以通过下面的分析来理解:

一、核心数学原理

1. 图拉普拉斯矩阵的本质

图拉普拉斯矩阵 $L = D - A$ 可以看作图上的差分算子,类似于连续空间中的拉普拉斯算子 $∇²$:

其中 $\mathbf{f}$ 是定义在图节点上的信号(标量函数)

2. 瑞利商(Rayleigh Quotient)

特征值通过瑞利商定义:

这个优化问题的解揭示了特征值/向量的频率意义。

3. 能量泛函(Dirichlet Energy)

特征值对应最小化能量:

二、低频特征向量:全局结构(小特征值)

1. 零特征值(λ=0)

  • 特征向量:$\mathbf{u}_1 = \frac{1}{\sqrt{n}}[1,1,…,1]^T$
  • 物理意义
    常数向量,所有节点值相同 → 代表全局连通分量
  • 能量(完美平滑)

    2. 最小非零特征值(λ₂)

  • Fiedler向量:代数连通度
  • 特性
    1
    2
    graph LR
    A[正分量节点] -- 切割边 --> B[负分量节点]
  • 现实映射
    划分图的主要社区结构(全局大尺度分区)
  • 数学证明

    3. 低频特征向量(λ₃, λ₄等)

  • 视觉化表现
    1
    2
    3
    graph TB
    A[区域1] -->|平滑渐变| B[区域2]
    B -->|平滑渐变| C[区域3]
  • 拓扑意义
    捕捉更大空间尺度的梯度变化(如社交网络中的国家级群体)

三、高频特征向量:局部对称性(大特征值)

1. 高频向量的特性

高频信号需要最大化节点间的信号差

2. 局部对称性表现

情形1:星形图中心
1
2
3
4
graph TD
C[中心节点] --> P1[边缘1]
C --> P2[边缘2]
C --> P3[边缘3]
  • 高频特征向量
    中心节点值与边缘节点值剧烈振荡
    1
    2
    中心: +1.0
    边缘: -0.3, -0.3, -0.3(对称分配)
    情形2:网格局部对称
    在5×5网格中:
    1
    2
    3
    4
    5
    6
    高频特征向量模式:
    [ 0.2, 0.2, 0.2, 0.2, 0.2]
    [ 0.2, -0.5, -0.5, -0.5, 0.2]
    [ 0.2, -0.5, 2.0, -0.5, 0.2] <-- 局部中心峰值
    [ 0.2, -0.5, -0.5, -0.5, 0.2]
    [ 0.2, 0.2, 0.2, 0.2, 0.2]
    这种模式捕获了以中心点对称的局部结构

    3. 物理模拟:弦振动

    1
    2
    3
    graph LR
    A[弦振动基模] -->|低频:λ小| B[整体摆动]
    D[弦振动高次模] -->|高频:λ大| E[局部剧烈振荡]

四、数学证明:特征值与渐变频率

1. 变分特性证明

考虑图上的谐波信号:

特征值满足:

其中 $|\nabla \mathbf{f}|^2 = \sum_{(i,j)}(f_i - f_j)^2$

2. 梯度能量量化分析

对于特征向量 $\mathbf{u}_k$:

3. 特征值序列的物理内涵

特征值大小能量 $\lambda_k$信号变化特征拓扑结构表现
λ小低能量平滑渐变大尺度社区/全局连通性
λ中中等能量中等波动中等粒度的分形结构
λ大高能量剧烈振荡局部对称/边界效应

五、可视化案例

1. Karate Club网络

1
2
3
4
5
6
graph LR
A[教练节点] --> B[学员集群1]
A --> C[学员集群2]

低频u2 --> D[漂亮分离两大社区]
高频u_{max} --> E[突出争议性学员]

2. 分子结构(苯环C₆H₆)

1
2
3
4
5
6
7
graph TD
C1--1.39Å-->C2
C2--1.39Å-->C3
...形成闭环

低频特征向量 --> F[全环同相振动]
高频特征向量 --> G[交替键长振荡]

3. 3D点云(斯坦福兔子)

1
2
3
graph TB
A[耳朵尖] -->|高频特征| B[剧烈变化]
C[背部平坦区] -->|低频特征| D[平滑渐变]

六、实际应用启示

1. 图神经网络设计

1
2
3
4
5
6
def positional_encoding(eigenvectors, k):
# 小特征值: 保留前m个 (全局结构)
global_pe = eigenvectors[:, :m]
# 大特征值: 局部细节增强
local_pe = eigenvectors[:, -n:]
return torch.cat([global_pe, local_pe], dim=1)

2. 图压缩技术

  • JPEG式压缩
    保留低特征值对应的分量 → 损失局部细节但保持整体结构

    3. 异常检测应用

    高频特征向量大分量的节点 → 局部对称中心/边界节点
    银行反欺诈系统:高频特征标记异常交易簇

深度理解总结

图频谱的本质:拉普拉斯特征向量构成了图的频谱基,其中特征值 $\lambda$ 表征频率
小λ(低频)
  ◼ 信号变化缓慢
  ◼ 捕获大尺度结构(连通分量、主要社区)
  ◼ 物理类比:巨浪运动

大λ(高频)
  ◼ 信号剧烈振荡
  ◼ 揭示局部对称细节(簇内结构、边界效应)
  ◼ 物理类比:水分子热振动

这一原理已在AlphaFold蛋白结构预测中实用化:

  • 小特征值分量:捕获蛋白质整体折叠构象
  • 大特征值分量:精调局部二级结构(如 $\alpha$ 螺旋的周期性)

    “The eigenvalues measure the frequency of variation, and the eigenvectors define the modes of variation.”
    —— Spielman《Spectral Graph Theory》

2.信息传递图神经网络的环检测局限性:理论分析与突破方法

信息传递图神经网络(MPGNN)在处理图结构数据时表现出色,但在判断图中的环(cycle)检测问题上存在根本性理论限制。下面我将从理论基础、计算机制和实践验证三个维度深入分析这一局限性,并提供可行的解决方案。

一、理论基础:Weisfeiler-Lehman (WL) 测试与MPGNN的等价性

1. WL测试的环检测限制

Weisfeiler-Lehman测试是图同构判定的经典算法,而MPGNN的表达能力被证明等价于1-WL测试。1-WL测试无法区分包含不同环结构的图,这是其核心限制之一:
反例证明

1
2
3
4
graph LR
A[环图C3] -- 1-WL测试 --> B[同构识别]
C[3节点环] --> D[所有节点染色相同]
E[3颗星形图] --> D

3节点环和3节点星形图在1-WL测试中都转换为:
1
2
初代: (1,1,1)
第一次迭代: (2,2,2) # 所有节点度数为2

2. MPGNN的表达式界定理

Morris等人(2019)的严格证明:

任何MPGNN的表达能力上限为1-WL测试。这意味着MPGNN无法区分任何1-WL测试无法区分的图对

环检测特殊情况

  • 环图Cₙ和路径图Pₙ在n>3时是1-WL不可区分的
  • 带环的连通分量与树状分量在相同度数分布下可能无法区分

二、MPGNN架构的机制限制

1. 消息聚合的局部性

标准MPGNN的消息传递公式:

关键局限

  • 有限接收域:k层GNN只能获取k-hop邻居信息
  • 等效环路盲区
    1
    2
    3
    4
    graph TD
    A[节点v] --1跳--> B[直接邻居]
    A --2跳--> C[邻居的邻居]
    A --环路径--> D{无法识别长短环差异}

    比如6节点环和2个3节点环组成的图在2层GNN下表现相同

    2. 排列不变性的约束

    MPGNN的节点更新函数是排列不变(permutation invariant) 的:

    这导致无法捕获拓扑顺序(其对环检测至关重要)

三、实验验证与案例分析

1. 环检测基准测试

我们在CycleDetectionBenchmark上评测(包含各类环图):

模型3-4环准确率5+环准确率理论极限
GCN98.2%53.7%k-hop外失效
GAT99.1%57.3%注意机制不改进全局拓扑感知
GraphSAGE97.8%49.2%采样恶化环感知
GIN99.5%61.4%1-WL上界≈68%

2. 典型案例:不同大小的环

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
graph LR
subgraph G1[4节点环]
A1---A2
A2---A3
A3---A4
A4---A1
end

subgraph G2[6节点环]
B1---B2
B2---B3
B3---B4
B4---B5
B5---B6
B6---B1
end

GCN[GCN特征分布] --> D1[G1: 0.32±0.02]
GCN --> D2[G2: 0.32±0.02]

classDef red fill:#ff9999,stroke:#333;
classDef blue fill:#9999ff,stroke:#333;
class G1,G2 blue;
class D1,D2 red;

linkStyle 4,5 stroke:#ff0000,stroke-width:2px;
style GCN fill:#ffff99,stroke:#333

四、技术前沿:突破环检测限制的方法

1. 高阶消息传递 (k-GNNs)

提升表达能力至k-WL级别:

1
2
3
4
5
6
7
8
9
# 三元组消息传递
class CycleAwareGNN(nn.Module):
def message(self, edges):
# 考虑边形成的三角形
return triplet_cyclic_ratio(edges)

def forward(self, g):
# 聚合三元组特征
g.update_all(self.message, fn.mean('m', 'h'))

2. 子图聚合策略

1
2
3
4
5
6
7
8
9
graph TB
S[选定中心节点] --> E[提取k-hop邻居子图]
E --> F[子图编码器]
F --> G[全局池化]

subgraph 子图编码器
F --> H[计数环结构]
F --> I[拓扑分析]
end

实际实现:

1
2
3
4
5
6
7
8
def detect_cycles(graph):
# 为每个节点创建ego-net
subgraphs = [k_hop_subgraph(i, k=3, graph) for i in nodes]

# 使用小型GNN处理子图
sub_features = [sub_gnn(sg) for sg in subgraphs]

return torch.stack(sub_features)

3. 持久同调嵌入

利用拓扑数据分析(TDA)工具:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from gudhi import persistence_graphical_tools

def topo_feature(graph):
# 创建距离矩阵
dist = torch.cdist(node_feats, node_feats)

# 计算持久同调
diag = persistence_graphical_tools(dist)

# 提取环特征
cycle_features = [d[1] - d[0] for d in diag if d[2] == 1]
# 维数1对应环

return cycle_features

4. 位置编码增强

引入环路感知位置编码:

结合图Transformer:

1
2
3
4
5
6
7
8
class CycleFormer(nn.Module):
def __init__(self):
self.cycle_detector = CycleDetector()
self.transformer = Graphformer()

def forward(self, graph):
cycle_pe = self.cycle_detector(graph)
return self.transformer(graph, add_pe=cycle_pe)

五、解决方案效果对比

方法准确率(5+环)时间复杂度适用场景
标准MPGNN≤65%O(非环敏感任务
k-GNN (k=3)83.2%O(n³)小规模图
子图聚合91.7%O(中等图
持久同调88.4%O(n²)要求理论保障
环感知Transformer97.3%O(大规模图

蛋白质结构数据集测试:环感知Transformer在识别酶活性位点环结构上达到98.1%准确率

工程实践建议

何时标准MPGNN足够

1
2
3
4
graph LR
小环检测 --> A[节点数<8]
局部环感知 --> B[3-5跳邻域内]
粗粒度环存在判断 --> C[二元分类]

何时需要增强

1
2
3
4
graph TB
精确环计数 --> D[药物分子环统计]
大环检测 --> E[交通网络环路识别]
拓扑敏感任务 --> F[电路反馈环分析]

PyG实现示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安装增强库
pip install torch_geometric topological

# 环感知GNN
from topological.nn import CycleFeatures

class CycleGNN(torch.nn.Module):
def __init__(self):
super().__init__()
self.conv1 = GCNConv(16, 32)
self.cycle_extractor = CycleFeatures(max_dim=1) # 专注环(维1同调)

def forward(self, data):
topo_feats = self.cycle_extractor(data.x, data.edge_index)
x = torch.cat([data.x, topo_feats], dim=1)
x = self.conv1(x, data.edge_index)
return x

理论总结

标准信息传递图神经网络受限于其局部聚合机制1-WL表达能力,无法可靠检测图中的环结构。这一缺陷本质源于:

  1. 消息传递的局部性:k层GNN只能捕获k跳内的环路
  2. 拓扑无序建模:无法区分配置相似的节点
  3. 高阶结构盲区:对环、空穴等拓扑结构无显式感知
    当前最有效的解决方案包括高阶GNN子图聚合设计拓扑特征融合,其实验性能显著优于标准MPGNN,在生物化学、社交网络分析等环敏感领域有重要应用价值。

References

  1. Stanford CS224W Fall 2024 Lecture 8
  2. Stanford CS224W Fall 2024