1. 从“一视同仁”到“看人下菜碟”:为什么传统GNN在异构图上会“水土不服”?
如果你玩过乐高,肯定知道不同形状的积木块需要不同的连接方式。你不能指望一个轮子零件和一个窗户零件用同一种方式去拼接。这个简单的道理,在图神经网络(GNN)的世界里,却曾经被长期忽视。
传统的GNN,比如我们熟悉的GCN(图卷积网络)或者GAT(图注意力网络),在设计之初都有一个默认的“同质”假设。它们认为,图上所有的节点,本质上都是一类东西,比如社交网络里的用户,或者论文引用网络里的论文。所有的边也代表同一种关系,比如“关注”或者“引用”。在这个美好的假设下,GNN可以愉快地工作:每个节点用同样的方式(共享的权重矩阵)来提取特征,每条边也用同样的规则来计算影响力。
但现实世界的图,绝大多数都是“异构”的。就拿我们最熟悉的学术图谱来说,上面的节点类型五花八门:有作者、有论文、有研究机构、有会议/期刊。边的关系更是复杂:作者“撰写”论文,论文“引用”论文,作者“隶属于”机构,论文“发表于”会议。一个作者节点和一个论文节点,它们的特征分布天差地别——作者的特征可能是研究领域、h指数;论文的特征则是关键词、摘要向量。你如果硬要用同一个权重矩阵去处理它们,就像用一把螺丝刀去拧所有型号的螺丝,结果只能是“滑丝”。
这就是传统GNN在异构图上遇到的第一个大坑:分布差异问题。不同类型的节点,其特征存在于完全不同的语义空间和数值尺度上。强行将它们映射到同一个共享的表示空间,会导致信息严重失真和混淆。我早期尝试用GAT去做学术图谱的学者分类时,就踩过这个坑:模型总是倾向于给文本特征丰富的论文节点很高的注意力权重,而忽略了特征维度完全不同的作者节点,导致学到的表示严重偏向论文,预测作者属性时效果一塌糊涂。
第二个问题是关系语义的模糊化。在异构图中,即使是相同的两个节点类型之间,也可能存在多种含义迥异的关系。比如,“作者-论文”这条边,既可以是“第一作者”,也可以是“通讯作者”。在传统GNN的同质假设下,这两种完全不同的关系被混为一谈,模型根本无法区分“主导完成”和“指导完成”的细微差别,这无疑丢失了大量关键信息。
所以,当HGT(Heterogeneous Graph Transformer)提出要搞一套“类型感知”的注意力机制时,我第一反应就是:早该这么干了!它不再对图上所有节点和边“一视同仁”,而是学会了“看人下菜碟”。接下来,我们就深入后厨,看看这道“私房菜”具体是怎么做的。
2. HGT的核心配方:元关系三元组与异构注意力机制
HGT解决上述问题的核心武器,是一个叫做 “元关系(Meta-Relation)三元组” 的概念。听起来有点唬人,但其实特别好理解。我们把图中任意一条有向边 e = (s, t) 拎出来看,它天然就携带了三种类型信息:
- 源节点
s的类型,记作τ(s) - 边
e本身的类型,记作φ(e) - 目标节点
t的类型,记作τ(t)
这个 ⟨τ(s), φ(e), τ(t)⟩ 三元组,就是HGT理解世界的“基本语法单元”。比如在学术图谱里,⟨作者, 撰写, 论文⟩ 和 ⟨论文, 引用, 论文⟩ 就是两个完全不同的元关系。HGT的整个架构,就是围绕如何为每一种独特的元关系,定制化地处理信息而设计的。
2.1 异构互注意力:为每种关系定制专属的“评分器”
还记得GAT里那个计算节点间重要性的注意力系数吗?它用一个共享的权重矩阵 W 把源节点和目标节点映射一下,然后算个相似度。在HGT看来,这太粗糙了。它的做法要精细得多。
假设我们现在要更新一个目标节点 t(比如一篇论文),它有一个邻居 s(比如一位作者),连接关系是“撰写”。HGT计算这个作者对这篇论文的重要性的过程,就像一场精心设计的面试:
- 定制化提问(Query):首先,面试官(目标节点
t)要根据自己的类型(论文)来准备问题。HGT用一个专属于“论文”类型的线性变换Q-Linear_论文,把论文节点的特征向量转换成一个“提问向量”Q(t)。这个变换是论文类型独有的,和作者类型用的完全不一样。 - 定制化回答(Key):然后,应聘者(源节点
s)要根据自己的类型(作者)来准备答案。HGT用一个专属于“作者”类型的线性变换K-Linear_作者,把作者节点的特征向量转换成一个“应答向量”K(s)<


1522

被折叠的 条评论
为什么被折叠?



