【论文解读 AAAI 2020 | HetSANN】An Attention-based GNN for Heterogeneous Structural Learning

论文题目: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

异质图定义为G=(V,E)\mathcal{G}=(\mathcal{V}, \mathcal{E}),节点类型集合为A\mathcal{A},边类型集合为R\mathcal{R}。从节点ii到节点jj的边用三元组e=(i,j,r)e=(i,j,r)表示,反向边表示为e~=(i,j,r~)\tilde{e}=(i,j,\tilde{r})。与节点jj相连的边集合定义为Ej={(i,j,r)EiV,rR}\mathcal{E}_j={\{(i,j,r)\in \mathcal{E}|i\in \mathcal{V}, r\in \mathcal{R}}\}

本文的目的是为类型为ϕ(i)\phi(i)的节点生成低维表示hiRnϕ(i)\mathbf{h}_i\in \mathbb{R}^{n_{\phi(i)}}

本文提出的任务导向的图嵌入方法HetSANN可以处理节点之间有多种关系的情况。模型的整体结构如图2所示,其中类型感知的注意力层(TAL)是模型的核心。


3.1 类型感知的注意力层(TAL)

在进行嵌入学习之前,先在每个节点上添加自环(self-loop relation)。并令hi(0)Rnϕ(i)0\mathbf{h}^{(0)}_i\in \mathbb{R}^{n^{0}_{\phi(i)}},这个冷启动状态可以是节点的属性特征,对于没有属性的节点可以使用假特征(零向量或one-hot向量)。

TAL如图3所示。每个TAL都采用了多头注意力机制,可以稳定训练过程,增加建模能力。

例如,节点jj在第ll层的表示hj(l)\mathbf{h}^{(l)}_j,attention head mm在第(l+1)(l+1)层TAL的输出hj(l1,m)\mathbf{h}^{(l_1, m)}_j分两步计算得到:(1)转换操作;(2)聚合节点jj的入度邻居。

(1)转换操作(C1)

对节点jj的每个邻居ii进行线性转换:

其中,h^ϕ(j),i(l+1,m)Rnϕ(j)(l+1,m)\hat{\mathbf{h}}^{(l+1, m)}_{\phi(j), i}\in \mathbb{R}^{n^{(l+1, m)}_{\phi(j)}}是从上一层的ϕ(i)\phi(i)类型的空间 到 (l+1)(l+1)层的m-th head中的ϕ(j)\phi(j)类型的隐层空间的映射。

(2)邻居的聚合(C2)

为了保留节点间不同类型关系中的语义信息,对不同类型的关系使用对应的R|\mathcal{R}|个注意力打分函数:F(l+1,m)={fr(l+1,m)rR}\mathcal{F}^{(l+1, m)}={\{f^{(l+1, m)}_r | r\in \mathcal{R}}\}。对于节点jj,为每个边e=(i,j,r)Eje=(i,j,r)\in \mathcal{E}_j计算的注意力系数如下:

注意力系数oeo_e反映了边ee对节点jj的重要性程度。为所有类型的边使用相同形式的注意力机制,但是参数不同。

常见的注意力打分函数是concat product的形式,GAT中采用的就是这种,定义如下:

其中,ar(l+1,m)R2nϕ(j)(l+1,m)\mathbf{a}^{(l+1, m)}_r \in \mathbb{R}^{2n^{(l+1, m)}_{\phi(j)}}是可训练的注意力系数,这一参数在类型为rr的边中共享。

本文并没有采用元路径,而是直接对异质的边使用注意力机制。注意力系数归一化如下:


经过以上两步操作,就有了和节点jj的表示在同一空间中的邻居节点的隐层表示,以及和jj向量的边的权重。可以进行jj的邻居聚合了:

注意,同时使用了边对应的节点对以及边的类型来识别不同的边。若ii连向jj的边有多种类型,则jj的隐状态h^ϕ(j),i(l+1,m)\hat{\mathbf{h}}^{(l+1, m)}_{\phi(j), i}就要和对应的权重αi,j,r(l+1,m)\alpha^{(l+1, m)}_{i,j,r}多次相乘。

对(5)式使用MM头注意力,拼接起来作为输出hj(l+1)Rm=1Mnϕ(j)(l+1,m)\mathbf{h}^{(l+1)}_j\in \mathbb{R}^{\sum^M_{m=1}n^{(l+1, m)}_{\phi(j)}}

注意,HetSANN的聚合是基于所有连边的,而不是基于元路径生成的连边的。也就是说,基于元路径的话使用一层GNN就可以将ii聚合到jj,基于所有连边的话(raw links)需要更多层才可以。因此,HetSANN可以捕获到高阶的相似度信息。为了更好地训练,采用了残差连接的机制,将(6)式重写为如下的形式:


3.2 模型的训练以及3个扩展

TAL层输出了低维的节点表示(hj=hj(L)\mathbf{h}_j=\mathbf{h}^{(L)}_j),为了面向具体任务(本文是节点分类任务)优化表示,使用一层全连接层和softmax构成节点分类器,最小化交叉熵损失,对节点进行分类:

(1)E1:多任务学习

使用多个分类器,TAL层的参数共享于多个分类器。多任务学习可以整合所有的分类器,最大程度减小过拟合的风险,有助于学习到更有鲁棒性的表示。

(2)E2:Voices-sharing Product

contact product打分函数将有向边(write)和反向边(written)看作两种类型的关系,且这两种类型的关系是相互独立的。

为了形式化有向边和反向边之间成对的关系,作者使rr(有向边)和r~\tilde{r}(反向边)的注意力参数共享。令ar~(l,m)=ar(l,m)Rnϕ(j)(l,m)\mathbf{a}^{(l, m)}_{\tilde{r}}=-\mathbf{a}^{(l, m)}_r\in \mathbb{R}^{n^{(l, m)}_{\phi(j)}}。将注意力打分函数fr(l,m)f^{(l, m)}_r调整为voices-sharing product

(3)循环一致性损失(Cycle-consistency Loss)

参考了NLP中采用反向翻译增强翻译性能的思想。

式(1)中有从pip_i类型的节点向pjp_j类型节点的转换,也有从pjp_j类型的节点向pip_i类型节点的转换。对每种类型的节点进行自转换:pipip_i\rightarrow p_i

pip_ipjp_j的转换如图4a所示,一个节点经过一个循环的转换过程后,应该能回到初始的状态。因此,针对转换操作引入循环一致性的限制条件:

但是,上式中有矩阵求逆的操作,是非常耗时的。为了减小计算复杂度,采用可训练的矩阵W~pi,pi(l+1,m)\tilde{W}^{(l+1, m)}_{p_i, p_i}替换上式中的逆矩阵,对其进行如下的约束:

最后,将这两个限制整合为循环一致性损失,如图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进行表示学习,同样不使用元路径的方法还有GTNsHGT

HetSANN模型的核心在于类型感知的注意力层(多头注意力),它进行消息聚合的时候不是通过元路径聚合信息,而是聚合来自所有连边的信息。由于邻居节点的异质性,每种类型的节点都有自己的特征空间,在聚合之前要进行转换操作,将邻居节点转换到目标节点的空间。

一层TAL只能聚合一跳的邻居,为了捕获到更丰富的结构信息需要堆叠多层TAL,因此引入了残差连接

实验结果显示,原始的HetSANN模型已经表现很好了,作者还在此基础上提出了3个扩展。

但是使用循环一致性损失的HetSANN和不使用的模型相比差别很小,作者认为是损失函数中用可训练的矩阵替换了逆矩阵的原因,还需要进一步研究

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章