这篇文章发表在WWW2020,提出了动态异构图建模方法。
HGT
Motivation
现在基于GNN来学习异构图的方法有以下几点问题:
- 大多数方法,对于每一种异构图,都需要特定的领域知识来设计meta paths;
- 他们有的简单假设节点/边的不同类别都共享着相同的特征空间,或者有的对于不同的类别,分别设置了权重,来让它们的特征向量被映射到同一特征空间中。作者认为这样不足以捕获异构图特性;
- 大多数方法都忽略了异构图的动态特性。
Contribution
- 提出了依赖于边和节点类别的注意力机制,解决图的异构性;
- 提出了相对时间编码RTE解决了图的动态特性;
- 提出了异构子图采样算法HGSampling,来解决Web-scale图数据。
Preliminary
- 异构图: G = ( V , E , A , R ) G=(V,\mathcal{E},A,R) G=(V,E,A,R),节点类别映射函数: τ ( v ) : V → A \tau(v): V \rightarrow A τ(v):V→A,边类别映射函数: Φ ( e ) : E → R \Phi(e): E \rightarrow R Φ(e):E→R。
- meta relation:对于边 e = ( s , t ) e=(s,t) e=(s,t),从源节点 s s s到目标节点 t t t,其meta relation被定义为一个三元组形式 < τ ( s ) , Φ ( e ) , τ ( t ) > <\tau(s),\Phi(e),\tau(t)> <τ(s),Φ(e),τ(t)>。且作者提到,本论文中不同类别的节点之间可能会有多种不同的关系,比如论文与作者的关系,可能是第一作者,也可能是第二作者。
- 动态异构图:每个边都有一个timestamp,表示该边创建的时间,这个时间不会变化,而每个节点却不止有一个时间点,不同timestap的节点属性可能也不同。
Model
基于attention的GNN可以被表示为下式:
H l [ t ] ← Aggregate ∀ s ∈ N ( t ) , ∀ e ∈ E ( s , t ) ( Attention ( s , t ) ⋅ Message ( s ) ) H^{l}[t] \leftarrow \underset{\forall s \in N(t), \forall e \in E(s, t)}{\text { Aggregate }}(\text { Attention }(s, t) \cdot \text { Message }(s)) Hl[t]←∀s∈N(t),∀e∈E(s,t) Aggregate ( Attention (s,t)⋅ Message (s))
H l [ t ] H^l[t] Hl[t]表示第 l l l层关于节点 t t t的输出,同样也是第 l + 1 l+1 l+1层的输入。
可以从该式子看出,模型分为三个部分:Heterogeneous mutual attention、Heterogeneous message passing、Target-specific aggregation,分别对应于:计算节点之间的重要性、提取节点的信息、聚集邻域信息。
Heterogeneous Mutual Attention
这一层的目的是计算源节点 s s s和目标节点 t t t之间的mutual attention。
Attention H G T ( s , e , t ) = Softmax ∀ s ∈ N ( t ) ( ∥ i ∈ [ 1 , h ] ATT-head i ( s , e , t ) ) ATT-head i ( s , e , t ) = ( K i ( s ) W ϕ ( e ) A T T Q i ( t ) T ) ⋅ μ ⟨ τ ( s ) , ϕ ( e ) , τ ( t ) ⟩ d K i ( s ) = K-Linear τ ( s ) i ( H ( l − 1 ) [ s ] ) Q i ( t ) = Q-Linear τ ( t ) i ( H ( l − 1 ) [ t ] ) \begin{aligned} \text { Attention }_{H G T}(s, e, t) &=\operatorname{Softmax}_{\forall s \in N(t)}\left(\|_{i \in[1, h]} \text { ATT-head }^{i}(s, e, t)\right) \\ \qquad \text { ATT-head }^{i}(s, e, t) &=\left(K^{i}(s) W_{\phi(e)}^{A T T} Q^{i}(t)^{T}\right) \cdot \frac{\mu\langle\tau(s), \phi(e), \tau(t)\rangle}{\sqrt{d}} \\ K^{i}(s) &=\text { K-Linear }_{\tau(s)}^{i}\left(H^{(l-1)}[s]\right) \\ Q^{i}(t) &=\text { Q-Linear }_{\tau(t)}^{i}\left(H^{(l-1)}[t]\right) \end{aligned} Attention HGT(s,e,t) ATT-head i(s,e,t)Ki(s)Qi(t)=Softmax∀s∈N(t)(∥i∈[1,h] ATT-head i(s,e,t))=(Ki(s)Wϕ(e)ATTQi(t)T)⋅dμ⟨τ(s),ϕ(e),τ(t)⟩= K-Linear τ(s)i(H(l−1)[s])= Q-Linear τ(t)i(H(l−1)[t])
详解:作者先目标节点 t t t映射为Query vector Q i ( t ) Q^i(t) Qi(t),将源节点 s s s映射为Key vector K i ( s ) K^i(s) Ki(s),且这两个映射都是与节点的类别相关,不同类别的节点,其映射矩阵可能不同。然后计算第 i i i个attenion head: A T T − h e a d i ( s , e , t ) { ATT-head }^{i}(s, e, t) ATT−headi(s,e,t),通过计算 Q i ( t ) Q^i(t) Qi(t)和 K i ( s ) K^i(s) Ki(s)之间的相似性,由于在异构图中,节点对之间还有边的影响,所以不能像传统的Transformer那样直接将两个矩阵相乘,而是对于边类别 ϕ ( e ) \phi(e) ϕ(e),学习一个权重矩阵 W ϕ ( e ) A T T W_{\phi(e)}^{ATT} Wϕ(e)ATT,与 Q i ( t ) Q^i(t) Qi(t)和 K i ( s ) K^i(s) Ki(s)进行连乘。另外,每个relationship对于目标节点重要性不同,所以作者增加了一个 μ \mu μ表示每个meta relation元组的重要性。
维度分析:假设 H l − 1 [ s ] H^{l-1}[s] Hl−1[s]的维度是 R d R^d Rd,由于这里使用了对每个边使用了h-head attention, K-Linear τ ( s ) i \text { K-Linear }_{\tau(s)}^{i} K-Linear τ(s)i是第i个head attention对 s s s进行映射,且该映射矩阵是因节点的类别而具有差异的。得到的 K i ( s ) K^i(s) Ki(s)维度是 R d h R^{\frac{d}{h}} Rhd,同样得到的 Q i ( t ) Q^i(t) Qi(t)维度也是如此。然后使用映射得到的两个向量计算attention权值, K i ( s ) K^i(s) Ki(s)和 Q i Q^{i} Qi的维度是 R d h R^{\frac{d}{h}} Rhd, W ϕ ( e ) A T T W_{\phi(e)}^{ATT} Wϕ(e)ATT的维度是 R d h × d h R^{{\frac{d}{h}}×{\frac{d}{h}}} Rhd×hd, μ ⟨ τ ( s ) , ϕ ( e ) , τ ( t ) ⟩ \mu\langle\tau(s), \phi(e), \tau(t)\rangle μ⟨τ(s),ϕ(e),τ(t)⟩维度是1。最后的softmax内部,是对于每一个head得到的值进行连接,最终形成一个 R h × 1 R^{h×1} Rh×1的向量,如果针对目标节点的所有源节点,对 h h h个行进行累加,可以得到全为1的 R h × 1 R^{h×1} Rh×1的向量。
Heterogeneous Message Passing
本步的作用是计算源节点 s s s贡献给目标节点 t t t的信息。作者将meta relations of edges结合到计算源节点向目标节点传递的信息中。
Message H G T ( s , e , t ) = ∥ i ∈ [ 1 , h ] MSG-head i ( s , e , t ) MSG-head i ( s , e , t ) = M-Linear τ ( s ) i ( H ( l − 1 ) [ s ] ) W ϕ ( e ) M S G \begin{aligned} \text { Message }_{H G T}(s, e, t) &=\|_{i \in[1, h]} \text { MSG-head }^{i}(s, e, t) \\ \text { MSG-head }^{i}(s, e, t) &=\text { M-Linear }_{\tau(s)}^{i}\left(H^{(l-1)}[s]\right) W_{\phi(e)}^{M S G} \end{aligned} Message HGT(s,e,t) MSG-head i(s,e,t)=∥i∈[1,h] MSG-head i(s,e,t)= M-Linear τ(s)i(H(l−1)[s])Wϕ(e)MSG
详解:这里仍然是用一个映射矩阵,将源节点 s s s的向量映射到 R d h R^{\frac{d}{h}} Rhd维度,然后用一个可学习矩阵 W ϕ ( e ) M S G W_{\phi(e)}^{M S G} Wϕ(e)MSG来融合边的信息(因为这个矩阵是随着边的类别而不同的),得到第i个head的信息,尺寸是 R d / h R^{d/h} Rd/h,最后用连接操作,得到 R d R^d Rd。
Target-Specific Aggregation
由前两步分别得到源节点相对于目标节点的重要性和源节点的信息,这一步的作用是用重要性来聚合其邻域节点的信息。
简单的加权累加操作:
H ~ ( l ) [ t ] = ⨁ V s ∈ N ( t ) ( Attention H G T ( s , e , t ) ⋅ Message H G T ( s , e , t ) ) \tilde{H}^{(l)}[t]=\bigoplus_{V s \in N(t)}\left(\text { Attention }_{H G T}(s, e, t) \cdot \text { Message }_{H G T}(s, e, t)\right) H~(l)[t]=Vs∈N(t)⨁( Attention HGT(s,e,t)⋅ Message HGT(s,e,t))
为了让最终的目标节点 t t t向量保证是符合其类别的分布,所以再做一次映射,并且使用了残差连接:
H ( l ) [ t ] = A-Linear τ ( t ) ( σ ( H ~ ( l ) [ t ] ) ) + H ( l − 1 ) [ t ] H^{(l)}[t]=\text { A-Linear }_{\tau(t)}\left(\sigma\left(\widetilde{H}^{(l)}[t]\right)\right)+H^{(l-1)}[t] H(l)[t]= A-Linear τ(t)(σ(H (l)[t]))+H(l−1)[t]
Relative Temporal Encoding
传统处理时间信息的方法是对每个时间点构建一个独立的图,然而作者认为这种操作会损失时间点之间的大量的结构依赖(结构信息)。并且节点在t时刻的表示可能依赖于发生在其他时间的边。
给定一个目标节点 t t t和源节点 s s s,以及它们相应的时间点 T ( s ) T(s) T(s)和 T ( t ) T(t) T(t),作者对这两个时间点差进行编码, R T E ( △ T ( t , s ) ) = R T E ( T ( t ) − T ( s ) ) RTE(△T(t,s))=RTE(T(t)-T(s)) RTE(△T(t,s))=RTE(T(t)−T(s)),由于训练集可能不会覆盖所有的时间差,所以模型应该是inductive。作者使用了一个正弦函数集作为基,并使用T-Linear作为可调矩阵,对基进行变换,最终得到时间编码。
Base ( Δ T ( t , s ) , 2 i ) = sin ( Δ T t , s / 1000 0 2 i d ) Base ( Δ T ( t , s ) , 2 i + 1 ) = cos ( Δ T t , s / 1000 0 2 i + 1 d ) RTE ( Δ T ( t , s ) ) = T-Linear ( Base ( Δ T t , s ) ) \begin{aligned} \operatorname{Base}(\Delta T(t, s), 2 i) &=\sin \left(\Delta T_{t, s} / 10000^{\frac{2 i}{d}}\right) \\ \operatorname{Base}(\Delta T(t, s), 2 i+1) &=\cos \left(\Delta T_{t, s} / 10000^{\frac{2 i+1}{d}}\right) \\ \operatorname{RTE}(\Delta T(t, s)) &=\text { T-Linear }\left(\text { Base }\left(\Delta T_{t, s}\right)\right) \end{aligned} Base(ΔT(t,s),2i)Base(ΔT(t,s),2i+1)RTE(ΔT(t,s))=sin(ΔTt,s/10000d2i)=cos(ΔTt,s/10000d2i+1)= T-Linear ( Base (ΔTt,s))
将源节点 s s s相对于目标节点 t t t的相对时间编码加到源节点 s s s的表示上:
H ^ ( l − 1 ) [ s ] = H ( l − 1 ) [ s ] + R T E ( Δ T ( t , s ) ) \hat{H}^{(l-1)}[s]=H^{(l-1)}[s]+R T E(\Delta T(t, s)) H^(l−1)[s]=H(l−1)[s]+RTE(ΔT(t,s))
HGSampling
- 对于每种类型的节点和边,采样的数量大致相似;
- 保持采样的子图的稠密性,以最小化采样方差带来的信息损失。
算法详解:
1.添加节点 t t t的邻域到Budget矩阵B中:对于可能的源节点类别 τ \tau τ和边类别 ϕ \phi ϕ,也就是< τ , ϕ , τ ( t ) \tau,\phi,\tau(t) τ,ϕ,τ(t)>三元组,取t的邻域节点集合,得到目标节点 t t t相对于该三元组的正则化后的度。对于邻域中的某个源节点 t t t,如果它没有被采样,就将其放入B矩阵中,且如果它没有时间点信息,就将t的时间点赋值给它,并且更新B矩阵中对应的数值。
2.HGSampling算法:添加所有的OS中的节点邻域信息到B矩阵。当前采样长度为 l l l时,遍历B中所有节点类别,并针对每个类别的每个节点,计算其被采样到的概率,并用该概率从每个类别中采样出n个节点,对于被采样的每个节点,需要将其增加到输出的集合中,并且添加它的邻域信息到B矩阵,对于已经增加到输出集合的点,将其从B矩阵弹出。
总体的看来,其实算法是维持了一个矩阵B,该矩阵可用于计算不同类别的节点可能被采样的概率,然后根据概率选出不同类别中相应数目的节点。B矩阵的更新是迭代地进行的,初始时是给定的一个节点集合,每次采样得到节点后将节点的邻域信息增加到B矩阵中。
HGT与现存的方法不同之处在于:
- 作者使用meta relation < τ ( s ) , Φ ( e ) , τ ( t ) > <\tau(s),\Phi(e),\tau(t)> <τ(s),Φ(e),τ(t)>,而不是单独的节点或者边的类别,来分解交互和变换矩阵,从而使HGT能够使用相等或更少的参数来捕获不同关系的共同和特定模式。
- 作者依赖于异构图网络本身的特性来组成高阶异构邻域信息,而不是像现存的方法那样,基于metapaths。
- 以前没有工作考虑到异构图的动态特性。
- 以前没有工作是针对Web-scale graphs设计的(大规模异构图数据集)。
特别注意的是,论文前面好像批判了以前很多方法都是先针对不同的边或者节点的类别(没有同时考虑边和节点),维持一个非共享的矩阵,将特征向量映射到同一个表示空间。
但本篇论文好像对于初始的节点仍然是这样处理的(仍然是用一个线性映射将特征向量投影到同一个表示空间),只不过不同的是,在后续聚合信息步骤中,所聚合的信息不仅考虑到了节点信息,还考虑了边的类别。