论文题目:An Attention-based Graph Neural Network for Heterogeneous Structural Learning
论文来源:AAAI 2020
论文链接:https://arxiv.org/abs/1912.10832
代码链接:https://github.com/didi/hetsann
关键词:HIN,表示学习,attention,不使用元路径
1 摘要
本文解决的是HIN的表示学习问题。
现有的方法大多通过元路径将异质图转化为同质图再进行处理。本文提出HetSANN模型(Heterogeneous Graph Structural Attention Neural Network),在不使用元路径的前提下直接编码HIN中的结构信息。
作者使用以下两种方式表示异质信息:
(1)将不同类型节点映射到多个低维的实体空间中;
(2)然后使用GNN和注意力机制聚合投影后邻居节点间的各种关系信息。
作者还提出了HetSANN的三个扩展:
(1)用于HIN中成对关系的voices-sharing product attention;
(2)捕获异质实体空间转换关系的循环一致性损失(cycle-consistency loss);
(3)多任务学习,以充分利用信息。
2 引言
HIN和同质图相比面临的挑战
(1)如何对不同类型的节点建模?
同质图中所有节点都被嵌入到同一个实体空间中,HIN中节点类型多样,不同类型的节点应该被映射到不同的空间中。而且一个节点可能和多种类型的节点相连,要设计一种方式使得在不同实体空间的节点能进行交互。
(2)如何保留不同关系的语义信息?
HIN中不同节点对或同一节点对间都有可能有多种关系。这些多样的关系中包含着多样的语义信息。
大多数HIN嵌入学习的方法都是使用元路径,将HIN转化为同质图然后再进行处理的,如图1b所示。例如metapath2vec、HAN。
使用元路径的方法的缺点
(1)元路径需要人工定义,很难手动枚举出所有的元路径并选择出有价值的;
(2)使用元路径将HIN转换为同质图,在进行信息传递时会损失信息。
作者提出
不使用元路径,提出HetSANN模型,同时保留了HIN中的结构信息和语义信息。并使用GNN处理HIN中的结构信息,使用任务导向的目标函数训练模型(本文是节点分类损失)。
为了解决上述问题,设计了类型感知的注意力层(Type-aware Attention Layer)替换传统GNN中的卷积层。
(1)针对C1:对于每个类型感知的注意力层,为异质节点间的交互定义了一个转换操作,将节点从不同的实体空间映射到同一个低维的目标空间。
(2)针对C2:使用注意力机制,将包含不同语义信息的不同类型的边用于邻居节点的聚合过程中。还为类型感知的注意力层设计了2种注意力打分函数:concat product、voices-sharing product。
voice包含active voice和passive voice。这里将active voice看成有向边(eg. cite, write),将passive voice看成反向边(eg. cited, written)。
最后将本文模型用于了多任务学习,有利于生成有鲁棒性的表示。
贡献
(1)提出HetSANN模型,不使用元路径,直接利用异质图中的结构信息,以生成富含信息的表示;
(2)提出HetSANN的3个扩展:
- 通过多任务学习提高信息共享的能力
- 考虑有向边和反向边之间的两两关系(voices-sharing product)
- 对转换操作引入限制以保持循环一致性(cycle consistent)
3 HetSANN
异质图定义为,节点类型集合为,边类型集合为。从节点到节点的边用三元组表示,反向边表示为。与节点相连的边集合定义为。
本文的目的是为类型为的节点生成低维表示。
本文提出的任务导向的图嵌入方法HetSANN可以处理节点之间有多种关系的情况。模型的整体结构如图2所示,其中类型感知的注意力层(TAL)是模型的核心。
3.1 类型感知的注意力层(TAL)
在进行嵌入学习之前,先在每个节点上添加自环(self-loop relation)。并令,这个冷启动状态可以是节点的属性特征,对于没有属性的节点可以使用假特征(零向量或one-hot向量)。
TAL如图3所示。每个TAL都采用了多头注意力机制,可以稳定训练过程,增加建模能力。
例如,节点在第层的表示,attention head 在第层TAL的输出分两步计算得到:(1)转换操作;(2)聚合节点的入度邻居。
(1)转换操作(C1)
对节点的每个邻居进行线性转换:
其中,是从上一层的类型的空间 到 层的m-th head中的类型的隐层空间的映射。
(2)邻居的聚合(C2)
为了保留节点间不同类型关系中的语义信息,对不同类型的关系使用对应的个注意力打分函数:。对于节点,为每个边计算的注意力系数如下:
注意力系数反映了边对节点的重要性程度。为所有类型的边使用相同形式的注意力机制,但是参数不同。
常见的注意力打分函数是concat product的形式,GAT中采用的就是这种,定义如下:
其中,是可训练的注意力系数,这一参数在类型为的边中共享。
本文并没有采用元路径,而是直接对异质的边使用注意力机制。注意力系数归一化如下:
经过以上两步操作,就有了和节点的表示在同一空间中的邻居节点的隐层表示,以及和向量的边的权重。可以进行的邻居聚合了:
注意,同时使用了边对应的节点对以及边的类型来识别不同的边。若连向的边有多种类型,则的隐状态就要和对应的权重多次相乘。
对(5)式使用头注意力,拼接起来作为输出:
注意,HetSANN的聚合是基于所有连边的,而不是基于元路径生成的连边的。也就是说,基于元路径的话使用一层GNN就可以将聚合到,基于所有连边的话(raw links)需要更多层才可以。因此,HetSANN可以捕获到高阶的相似度信息。为了更好地训练,采用了残差连接的机制,将(6)式重写为如下的形式:
3.2 模型的训练以及3个扩展
TAL层输出了低维的节点表示(),为了面向具体任务(本文是节点分类任务)优化表示,使用一层全连接层和softmax构成节点分类器,最小化交叉熵损失,对节点进行分类:
(1)E1:多任务学习
使用多个分类器,TAL层的参数共享于多个分类器。多任务学习可以整合所有的分类器,最大程度减小过拟合的风险,有助于学习到更有鲁棒性的表示。
(2)E2:Voices-sharing Product
contact product打分函数将有向边(write)和反向边(written)看作两种类型的关系,且这两种类型的关系是相互独立的。
为了形式化有向边和反向边之间成对的关系,作者使(有向边)和(反向边)的注意力参数共享。令。将注意力打分函数调整为voices-sharing product:
(3)循环一致性损失(Cycle-consistency Loss)
参考了NLP中采用反向翻译增强翻译性能的思想。
式(1)中有从类型的节点向类型节点的转换,也有从类型的节点向类型节点的转换。对每种类型的节点进行自转换:。
向的转换如图4a所示,一个节点经过一个循环的转换过程后,应该能回到初始的状态。因此,针对转换操作引入循环一致性的限制条件:
但是,上式中有矩阵求逆的操作,是非常耗时的。为了减小计算复杂度,采用可训练的矩阵替换上式中的逆矩阵,对其进行如下的约束:
最后,将这两个限制整合为循环一致性损失,如图4b所示,损失函数如下:
得到模型最终的目标函数:
4 实验
数据集:
IMDB, DBLP, AMiner
实验任务:节点分类任务
对比方法:
(1)本文方法的变形:.M,.R,.V分别表示多任务学习优化参数,voices-sharing product,循环一致性损失。3层ALT,每层8个attention heads。
(2)Baseline models
- DeepWalk
- metapath2vec
- HERec
- HAN
- GCN
- R-GCN
- GAT
实验结果:
使用循环一致性损失和不使用的效果差别不明显,作者提出是因为将损失函数中的逆矩阵替换成了可训练的矩阵,有待进一步研究。
5 总结
本文提出HetSANN模型,在不使用元路径的前提现,实现了对异质图中节点的表示学习。
模型的核心是类型感知的注意力层(TAL),捕获了每个节点的异质邻居信息和异质的连边信息。
作者提出了HetSANN的3种扩展:
(1)voices-sharing product
(2)循环一致性损失(cycle-consistency loss)
(3)多任务学习(multi-task learning)
在三个数据集上进行了实验,在节点分类任务上表现很好。
展望未来:考虑节点的异质属性信息。
文章的亮点在于不使用元路径对HIN进行表示学习,同样不使用元路径的方法还有GTNs和HGT。
HetSANN模型的核心在于类型感知的注意力层(多头注意力),它进行消息聚合的时候不是通过元路径聚合信息,而是聚合来自所有连边的信息。由于邻居节点的异质性,每种类型的节点都有自己的特征空间,在聚合之前要进行转换操作,将邻居节点转换到目标节点的空间。
一层TAL只能聚合一跳的邻居,为了捕获到更丰富的结构信息需要堆叠多层TAL,因此引入了残差连接。
实验结果显示,原始的HetSANN模型已经表现很好了,作者还在此基础上提出了3个扩展。
但是使用循环一致性损失的HetSANN和不使用的模型相比差别很小,作者认为是损失函数中用可训练的矩阵替换了逆矩阵的原因,还需要进一步研究。