基于图神经网络的异构图表示学习:元路径引导的邻居采样与节点嵌入聚合过程
1. 问题背景与目标
在现实世界中,许多图数据是异构图(Heterogeneous Graph),即图中包含多种类型的节点和边。例如,在学术网络中,节点类型有作者、论文、会议;边类型有“撰写”、“发表”等。传统的图神经网络(如GCN、GAT)主要针对同构图设计,难以直接处理异构关系。
目标:学习异构图节点的低维向量表示(嵌入),使其能捕捉节点间的语义关系和结构信息,用于节点分类、链接预测等任务。
核心挑战:
- 如何有效建模多种节点和边类型?
- 如何选择有意义的邻居进行信息聚合?
- 如何处理不同类型的语义关系?
2. 元路径(Meta-Path)的概念
元路径是定义在异构图上的一个关系序列,用于描述节点间的复合语义关系。
例如,在学术网络中:
- 元路径
作者-论文-作者表示“合作作者”关系。 - 元路径
作者-论文-会议-论文-作者表示“在同一会议上发表论文的作者”关系。
作用:
- 提供语义指导:不同元路径代表不同语义(如合作、引用)。
- 引导邻居采样:沿元路径选择邻居,避免盲目聚合所有邻居。
3. 元路径引导的邻居采样
由于异构图通常规模大、连接复杂,直接聚合所有邻居效率低且易引入噪声。因此,我们采用基于元路径的随机游走来采样邻居。
步骤 3.1 定义元路径集合
为每种节点类型预设一组有意义的元路径。
例如,对于作者节点,可能定义元路径集合:
- \(P_1\):作者 → 论文 → 作者(合作者)
- \(P_2\):作者 → 论文 → 会议 → 论文 → 作者(同会议作者)
步骤 3.2 随机游走采样
对每个节点 \(v\),沿每条元路径 \(P\) 进行随机游走,生成节点序列。
例如,从作者 \(A_1\) 出发,沿 \(P_1\):
- 随机选 \(A_1\) 写的论文 \(Paper_1\)。
- 从 \(Paper_1\) 随机选作者 \(A_2\)(非 \(A_1\))。
得到序列 \([A_1, Paper_1, A_2]\)。重复多次,得到一组游走序列。
步骤 3.3 构建邻居集合
对于目标节点 \(v\),从所有游走序列中提取固定长度的邻居(如序列中距离 \(v\) 最近的 \(k\) 个节点),形成基于元路径 \(P\) 的邻居集合 \(N_P(v)\)。
意义:这样采样到的邻居具有明确的语义关系(如合作者),而非任意连接。
4. 节点嵌入聚合过程
采样后,对每个节点需要聚合来自不同元路径邻居的信息。常用分层聚合:
步骤 4.1 节点级聚合(Node-level Aggregation)
对于目标节点 \(v\) 和一条元路径 \(P\),聚合 \(N_P(v)\) 中所有邻居的特征:
\[h_{v}^{P} = \text{AGG}_{\text{node}} \left( \{ h_u, \forall u \in N_P(v) \} \right) \]
其中 \(h_u\) 是邻居 \(u\) 的当前特征向量。AGG 可以是:
- 均值聚合:\(h_{v}^{P} = \frac{1}{|N_P(v)|} \sum_{u \in N_P(v)} h_u\)
- 注意力聚合:计算 \(v\) 与每个邻居的注意力权重后加权平均。
这一步为节点 \(v\) 生成一个基于元路径 \(P\) 的语义特定嵌入 \(h_{v}^{P}\)。
步骤 4.2 语义级聚合(Semantic-level Aggregation)
节点 \(v\) 可能对应多个元路径(如合作者路径、同会议路径),得到多个语义特定嵌入 \(\{ h_{v}^{P_1}, h_{v}^{P_2}, \dots \}\)。需要融合它们:
\[h_v = \text{AGG}_{\text{semantic}} \left( \{ h_{v}^{P_1}, h_{v}^{P_2}, \dots \} \right) \]
常用方法:
- 简单平均:对所有元路径嵌入取平均。
- 注意力融合:学习每个元路径的重要性权重,加权求和。例如:
\[ h_v = \sum_{P} \beta_P \cdot h_{v}^{P}, \quad \beta_P = \frac{\exp(s_P)}{\sum_{P'} \exp(s_{P'})} \]
其中 \(s_P\) 是可学习的标量,表示元路径 \(P\) 的重要性。
步骤 4.3 迭代更新
上述聚合过程可堆叠多层(如2层):
- 第一层:用原始节点特征 \(h_u^{(0)}\) 聚合,得到 \(h_v^{(1)}\)。
- 第二层:用 \(h_u^{(1)}\) 作为输入,再次聚合,得到最终嵌入 \(h_v^{(2)}\)。
多层聚合可以捕获高阶邻居信息(如朋友的朋友)。
5. 模型训练与优化
步骤 5.1 损失函数设计
根据下游任务设计损失函数:
- 节点分类:用交叉熵损失:
\[ \mathcal{L} = -\sum_{v \in \mathcal{Y}} \sum_{c} y_{v,c} \log \hat{y}_{v,c} \]
其中 \(\mathcal{Y}\) 是带标签节点集,\(\hat{y}_v = \text{Softmax}(W h_v + b)\)。
- 链接预测:用负采样损失(如基于嵌入的点积):
\[ \mathcal{L} = -\sum_{(u,v) \in E} \left[ \log \sigma(h_u^T h_v) + \sum_{n \in \text{Neg}(u)} \log \sigma(-h_u^T h_n) \right] \]
其中 \(\sigma\) 是sigmoid,\(\text{Neg}(u)\) 是负采样节点。
步骤 5.2 参数学习
通过反向传播更新:
- 节点特征变换矩阵。
- 注意力权重参数(如果有)。
- 分类器权重 \(W, b\)。
6. 完整流程总结
- 输入:异构图(节点类型、边类型)、预定义元路径集合。
- 邻居采样:对每个节点,沿每条元路径进行随机游走,构建语义邻居集合。
- 嵌入聚合:
- 节点级聚合:对每个元路径,聚合邻居特征得到语义特定嵌入。
- 语义级聚合:融合不同元路径的嵌入,得到节点最终嵌入。
- 可堆叠多层以捕获高阶关系。
- 输出:所有节点的低维向量表示。
- 训练:根据下游任务计算损失,反向传播更新参数。
7. 关键优势与典型应用
优势:
- 语义感知:元路径引入领域知识,使嵌入具有可解释性。
- 灵活扩展:可轻松加入新元路径,适应不同语义。
- 高效计算:采样减少计算量,适合大规模图。
应用:
- 学术网络中的作者分类。
- 电商网络中的商品推荐。
- 社交网络中的社区发现。
通过以上过程,异构图表示学习能够有效地融合多种语义关系,生成高质量的节点嵌入,支撑多种下游图分析任务。