图中每个节点有不同的类型,由这些节点之间关系定义的连边也有不同类型,如下例子:
区分:
同质图:图中所有节点的类型都相同,边类型只有一种的标准图
沿着节点的多跳路径,例如 P V P , P F P , I A P PVP, PFP, IAP PVP,PFP,IAP
主要参考Graph Transformer Networks, Heterogeneous Graph Transformer, Path-Augmented Graph Transformer Network几篇文章:attention的计算主要参考Transformer结构,在元路径的生成和相似度计算上有些不同。
现有的GNN方法的不足(以HAN, GTNs, HetGNN等方法为例):
- 大多数方法需要为异质图设计元路径(GTNs除外);
- 要不就是假定不同类别的节点/边共享相同的特征和表示空间,要不就是单独为某一类型的节点和边设计不同的不可共享的参数。这样的话不能充分捕获异质图的属性信息;
- 大多数方法都没有考虑异质图的动态特征;
- 不能建模Web-scale的异质图。
鉴于以上挑战,作者研究目标是:
(1)保留节点和边类型的有依赖关系的特征->引入attention;
(2)捕获网络的动态信息->引入相对时间编码(RTE)技术;
(3)避免自定义元路径;
(4)并且可扩展到大规模(Web-scale)的图上->设计异质的子图采样算法HGSampling。
由于(2)、(4)没有完全理解文中方法,所以暂时关注(1)、(3)
整张异质图表示为 G ( V , E , A , R ) G(\mathcal{V, E, A, R}) G(V,E,A,R),其中 τ ( v ) : V → A \tau(v):\mathcal{V} \rightarrow \mathcal{A} τ(v):V→A表示映射为某类型的节点,某类型的源节点表示为 τ ( s ) \tau(s) τ(s)(作为Key vector),某类型的目标节点表示为 τ ( t ) \tau(t) τ(t)(作为Query vector); ϕ ( v ) : E → R \phi(v):\mathcal{E} \rightarrow \mathcal{R} ϕ(v):E→R表示映射为某类型的边,连接节点s和t的某类型的边表示为 ϕ ( e ) 。 \phi(e)。 ϕ(e)。HGT模型仅将所有连接两个节点的一跳路径作为输入,不需人工定义路径,通过attention机制可以决定最重要的元路径。
如图, H ( l − 1 ) H^{(l-1)} H(l−1)表示来自上一层的节点表示,整个模型可以表达为:
H ( l ) [ t ] = σ ( A − L i n e a r τ ( t ) H ~ ( l ) [ t ] ) + H ( l − 1 ) [ t ] ( 1 ) H^{(l)}[t]=\sigma(A-Linear_{\tau(t)}\widetilde H^{(l)}[t] )+H^{(l-1)}[t] \quad (1) H(l)[t]=σ(A−Linearτ(t)H (l)[t])+H(l−1)[t](1)
H ~ ( l ) [ t ] = ⊕ ∀ s ∈ N ( t ) ( Attention H G T ( s , e , t ) ⊗ M e s s a g e H G T ( s , e , t ) ) ( 2 ) \widetilde H^{(l)}[t]=\oplus_{\forall s \in N(t)(\textbf{Attention}_{HGT}(s, e, t) \otimes Message_{HGT}(s, e, t)) } \quad (2) H (l)[t]=⊕∀s∈N(t)(AttentionHGT(s,e,t)⊗MessageHGT(s,e,t))(2)
注意到(1)包括两部分,左边是来自第l层所有邻居的信息,右边是t节点本身在第(l-1)层的信息,两部分结合得到t节点在第l层的最终表示,我们需要用 A − L i n e a r τ ( t ) A-Linear_{\tau(t)} A−Linearτ(t)将向量映射回t节点类型的特征分布空间。由于小世界现象,我们可以使用少数几层,就捕获到整张图中的大部分关系了;本文中,我们遍历所有两跳路径(两层HGT),利用attention针对具体的下游任务自动地、隐式地学习并抽取出更重要的“元路径”作出如下图:
展开attention,与GAT研究同质图对比: Attention G A T ( s , t ) = S o f t m a x ∀ s ∈ N ( t ) ( v T ( W H ( l − 1 ) [ t ] ∣ ∣ W H ( l − 1 ) [ s ] ) ) \textbf{Attention}_{GAT}(s, t)=Softmax_{\forall s \in N(t)}(v^T(WH^{(l-1)}[t] || WH^{(l-1)}[s])) AttentionGAT(s,t)=Softmax∀s∈N(t)(vT(WH(l−1)[t]∣∣WH(l−1)[s]))我们在计算时假设s和t拥有相同的特征分布,所以使用了同一个投影矩阵W;但我们研究异质图时,不同类型的节点可以有不同的特征分布;
因此,我们对每种类型的源节点s使用 K − L i n e a r τ ( s ) K-Linear_{\tau(s)} K−Linearτ(s)线性投影,对每种类型的目标节点t使用 Q − L i n e a r τ ( t ) Q-Linear_{\tau(t)} Q−Linearτ(t)线性投影,同时对它们的连边使用 W ϕ ( e ) A T T W_{\phi(e)}^{ATT} Wϕ(e)ATT,来捕获不同的关系。注意:这里并不是参数化每种类型的边,而是根据三元关系组 < τ ( s ) , ϕ ( e ) , τ ( t ) > <\tau(s), \phi(e), \tau(t)> <τ(s),ϕ(e),τ(t)>决定,每个元关系都有一组不同的映射矩阵,整个框架高度依赖于元关系 < τ ( s ) , ϕ ( e ) , τ ( t ) > <\tau(s), \phi(e), \tau(t)> <τ(s),ϕ(e),τ(t)>来参数化权重矩阵。
这样处理后,不同类型的节点和边就可以维护其特定的表示空间。同时,通过不同的边相连的节点仍然可以交互、传递、聚合信息,并且不受它们之间分布差异的限制。 从而只将一跳的边作为输入、不人为设计元路径,也能通过跨层的信息传递来合并不同类型的高阶邻居的信息。
使用多头注意力机制表示(i上标表示第i个头获得的信息):
- 这里使用的计算相似度方法 [Luong’s multiplicative style ]: h i T W h j h_{i}^{T} W {h}_{j} hiTWhj;
- 另外不同类型的边对目标节点的贡献度不同, μ ∈ R ∣ A ∣ ∗ ∣ R ∣ ∗ ∣ A ∣ \mu \in \mathbb{R}^{|\mathcal{A}|*|\mathcal{R}|*|\mathcal{A}|} μ∈R∣A∣∗∣R∣∗∣A∣表示基于先验知识,对三元关系组 < τ ( s ) , ϕ ( e ) , τ ( t ) > <\tau(s),\phi(e), \tau(t)> <τ(s),ϕ(e),τ(t)>的attention的缩放
- 与Transformer的区别在于:Transformer为所有的单词使用一组映射;而本文的方法中,每个元关系都有一组不同的映射矩阵
(1)已有的一些方法
(2)这些方法的不足
尽管这些方法都比GCN和GAT表现好,但是它们都没有充分利用异质图的属性信息,都是为边类型和节点类型单独地分配GNN权重矩阵。但是不同类型的节点数目和不同类型的边的数目差别很大,对于那些共现次数不多的关系类型,就很难为它们学习到准确的权重。
(3)考虑参数共享以实现更好的泛化
为了解决上述问题,HGT提出参数共享。对于给定的边 e = ( s , t ) e=(s, t) e=(s,t)其元关系为 < τ ( s ) , ϕ ( e ) , τ ( t ) > <\tau(s),\phi(e), \tau(t)> <τ(s),ϕ(e),τ(t)>。若使用三个交互矩阵分别建模 τ ( s ) , ϕ ( e ) , τ ( t ) \tau(s),\phi(e), \tau(t) τ(s),ϕ(e),τ(t)这三个元素,则主要参数就可以共享。这样的参数共享使得出现频次较少的类型的边,也能实现快速的自适应和泛化;另一方面,使用较少的参数,仍然实现了保留不同类型边的特征。
例如“第一作者”和“第二作者”这两种关系的源节点都是author,目标节点都是paper。从一种关系学习到的author和paper的知识可以快速转换并应用到另一种关系中。
(4)HGT和现有方法的主要不同
从源节点向目标节点传递信息,这一步是和互注意力的计算并行的,目的是将不同边的元关系合并到消息传递过程中,来缓解不同类型的节点和边分布的差异性。
先使用 M − L i n e a r τ ( s ) M-Linear_{\tau(s)} M−Linearτ(s)将特定类型的源节点s映射成message向量,然后对特定类型的边维护一个参数矩阵 W ϕ ( e ) M S G W_{\phi(e)}^{MSG} Wϕ(e)MSG。
与baseline对比的一个tip: 对不同类型的节点进行线性变换,将异质数据映射到同一分布中;然后就能用处理同质图的算法来处理,最后将结果与HGT进行比较。
现有的GNN方法的不足:
- 采用了two-stage方法:先根据人为设定的元路径将异质图转化为同质图,再在其上面应用处理同质图的GNN算法:
- 人为设定的元路径不能充分利用图中的信息,且将会在很大程度上影响下游任务的准确率;
- 在固定且同质的图上进行运算,如果图上有噪声(缺失连边或者错误连边)就会导致与图上错误的邻居进行无效的卷积。
鉴于以上问题,作者研究目标是:
- 使用多个候选的原始邻接矩阵生成新的元路径图结构,在新图上进行更有效的图卷积,从而学习到更强的节点表示。
研究的异质图同样可以表示为 G ( V , E , T v , T e ) G(\mathcal{V, E, T^v, T^e}) G(V,E,Tv,Te),其中 f ( v ) : V → T v f(v):\mathcal{V} \rightarrow \mathcal{T^v} f(v):V→Tv表示映射为某类型的节点, f ( e ) : E → T e f(e):\mathcal{E} \rightarrow \mathcal{T^e} f(e):E→Te表示映射为某类型的边。每个邻接矩阵 A k A_k Ak代表某一种类型的边的关系,因此假如从 v 1 v_1 v1到 v l + 1 v_{l+1} vl+1经过的元路径为 ( t 1 , t 2 , . . . , t l ) (t_1, t_2, ..., t_l) (t1,t2,...,tl),其中 t l ∈ T e t_l \in \mathcal{T^e} tl∈Te,那么 v 1 ⟶ t 1 v 2 ⟶ t 2 . . . ⟶ t l v l + 1 v_1 \stackrel{t_1}{\longrightarrow} v_2 \stackrel{t_2}{\longrightarrow} ... \stackrel{t_l}{\longrightarrow} v_{l+1} v1⟶t1v2⟶t2...⟶tlvl+1可以由一系列邻接矩阵的矩阵乘法表示:
A P = A t l . . . A t 2 A t 1 A_P=A_{t_l}...A_{t_2}A_{t_1} AP=Atl...At2At1
一个前提:
对于无向图GCN的卷积操作表示为:
H ( l + 1 ) = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) W ( l ) ) H^{(l+1)}=\sigma(\widetilde{D}^\frac{-1}{2}\widetilde{A}\widetilde{D}^\frac{-1}{2}H^{(l)}W^{(l)}) H(l+1)=σ(D 2−1A D 2−1H(l)W(l))
对于有向图表示为:
H ( l + 1 ) = σ ( D ~ − 1 A ~ H ( l ) W ( l ) ) H^{(l+1)}=\sigma(\widetilde{D}^{-1}\widetilde{A}H^{(l)}W^{(l)}) H(l+1)=σ(D −1A H(l)W(l))
可见GCN是在固定且同质的图上进行卷积操作,只有针对节点的线性转换参数 H ( l ) W ( l ) H^{(l)}W^{(l)} H(l)W(l)是可学习的。
整个模型架构可以看成是:在由GT层学习到的多个元路径图上进行GCN,从而解决节点分类任务。
(注:图中的例子特指元路径为2的情况,因此选出分别表示两种类型的边的邻接矩阵)GT层从候选的邻接矩阵 A \mathbb{A} A(每一片都代表一种边类型)中选择出两个图结构 Q 1 , Q 2 Q_1, Q_2 Q1,Q2;每一个被选出来的图结构都可以看成是在原邻接矩阵 A \mathbb{A} A上应用了attention,为各个片分配了不同的权重,加权求和得到新的邻接矩阵 Q t l = ∑ t l ∈ T e α t l ( l ) A t l Q_{t_l}=\sum \limits_{t_l \in \mathcal{T}^e}\alpha_{t_l}^{(l)}A_{t_l} Qtl=tl∈Te∑αtl(l)Atl;
采用矩阵相乘得到新的邻接矩阵 A ( l ) = Q 1 Q 2 A^{(l)}=Q_1Q_2 A(l)=Q1Q2;
为了数值稳定,使用度矩阵进行归一化 A ( l ) = D − 1 Q 1 Q 2 A^{(l)}=D^{-1}Q_1Q_2 A(l)=D−1Q1Q2;由此可以进一步推广:长度为l的元路径对应的邻接矩阵 A P A_P AP可以表示为堆叠l层GT层:
A P = ( ∑ t 1 ∈ T e α t 1 ( 1 ) A t 1 ) ( ∑ t 2 ∈ T e α t 2 ( 2 ) A t 2 ) . . . ( ∑ t l ∈ T e α t l ( l ) A t l ) A_P=(\sum \limits_{t_1 \in \mathcal{T}^e}\alpha_{t_1}^{(1)}A_{t_1})(\sum \limits_{t_2 \in \mathcal{T}^e}\alpha_{t_2}^{(2)}A_{t_2})...(\sum \limits_{t_l \in \mathcal{T}^e}\alpha_{t_l}^{(l)}A_{t_l}) AP=(t1∈Te∑αt1(1)At1)(t2∈Te∑αt2(2)At2)...(tl∈Te∑αtl(l)Atl)
采用归一化表达为:
即元路径 ( t 1 , t 2 , . . . , t l ) (t_1, t_2, ..., t_l) (t1,t2,...,tl)的贡献度计算为 ∏ i = 0 l α t i l \prod_{i=0}^l \alpha_{t_i}^l ∏i=0lαtil,这个贡献度就代表了在预测任务中某条特定元路径的重要性。因此GTN可以自适应地学习到对特定任务较重要的元路径。
由于生成的元路径长度等于GT层的层数,堆叠的层数越多,生成的元路径越长;堆叠多层后原始图中的连边可能不存在了,但实际上有的时候短的元路径也很重要。
为了学习到包含原始图中连边的长的元路径和短的元路径,在 A \mathbb{A} A中加入单位矩阵 I I I,即 A 0 = I A_0=I A0=I,这样,当有l层GT层时,就可以学习到长度为 1 ∼ l 1 \sim l 1∼l的元路径。
为了同时生成多种类型的元路径,将图1中卷积的输出通道设置为C,表示生成C条元路径,l表示生成的元路径的最大长度。在l个GT层堆叠后,将GCN应用于元路径张量 A l ∈ R N × N × C \mathbb{A}^l\in R^{N\times N\times C} Al∈RN×N×C的每个通道,并将多个节点的向量表示拼接起来:
Z = ∣ ∣ i = 1 C σ ( D ~ i − 1 A ~ i l X W ) Z=||_{i=1}^C\sigma(\widetilde{D}_i^{-1}\widetilde{A}_i^{l}XW) Z=∣∣i=1Cσ(D i−1A ilXW)
其中 A ~ i ( l ) \widetilde{A}_i^{(l)} A i(l)是 A ( l ) \mathbb{A}^{(l)} A(l)第i个通道的邻接矩阵, D ~ i − 1 \widetilde{D}_i^{-1} D i−1是 A ~ i ( l ) \widetilde{A}_i^{(l)} A i(l)的度矩阵
此时Z代表了节点在C个元路径图中的表示,且元路径的长度最长为l,将Z用于有监督的节点分类任务,分类器的结构为:输入到两层稠密层,经过一层softmax,损失函数使用交叉熵函数。 因此,整个模型架构可以看成是:在由GT层学习到的多个元路径图上进行GCN,从而解决节点分类任务。
【论文解读 WWW 2020 | HGT】Heterogeneous Graph Transformer
【论文解读 NIPS 2019 | GTNs】Graph Transformer Networks