HGTConv
论文名称:Heterogeneous Graph Transformer
论文地址:https://arxiv.org/pdf/2003.01332.pdf
在本文,我门使用Heterogeneous Graph Transformer (HGT) 架构对 Web-scale 异构网络进行建模。为了对异构网络进行建模,我们设计节点和边存在依赖关系参数,对每条边进行attention操作,HGT能够表征不同类型的节点和边。为了处理动态异构图,我们引进相对时间的编码技巧,它能够任意持续捕捉结构的依赖关系。为了处理Web-scale 图数据,我们设计mini-batch 图采样算法,HGSampling, 能够有效弹性的训练。
1.1 Heterogeneous Graph Mining
异构图是对复杂现实世界关系的重要抽象。
Definition 1. Heterogeneous Graph: 异构网络定义为有向图, G = ( V , E , A , R ) G=(\mathcal{V},\mathcal{E},\mathcal{A},\mathcal{R}) G=(V,E,A,R), 其中每个节点 v ∈ V v\in \mathcal{V} v∈V和每条边 e ∈ E e\in\mathcal{E} e∈E和它们类型的映射关系 τ ( v ) : V → A \tau(v): V \rightarrow \mathcal{A} τ(v):V→A和 ϕ ( e ) : E → R \phi(e):E\rightarrow \mathcal{R} ϕ(e):E→R。
Meta Relation. 对于一条边 e = ( s , t ) e=(s,t) e=(s,t),其中 s s s指source node, t t t 为target node, 其中,meta relation为 ⟨ τ ( s ) , ϕ ( e ) , τ ( t ) ⟩ \langle\tau(s), \phi(e), \tau(t)\rangle ⟨τ(s),ϕ(e),τ(t)⟩。 ϕ ( e ) − 1 \phi(e)^{-1} ϕ(e)−1为 ϕ ( e ) \phi(e) ϕ(e)取逆。
为了更好地刻画现实中的异构网络,不同类型节点之间存在多重的关系。例如, author和paper之间存在第一作者、第二作者关系。
Dynamic Heterogeneous Graph. 为了更好地对刻画异构网络的动态属性,我们在时刻 T T T分配节点 s s s到节点 t t t一条边 e = ( s , t ) e=(s,t) e=(s,t)。随着时间推移, s s s和 t t t之间存在多个时间戳。
换句话说,边的时间戳一旦创建就不会改变。当然可给边分配多个时间戳。
1.2 Graph Neural Network
通常,GNN作为图计算框架,将网络结构作为输入,用于message passing, 局部的邻居信息进行汇总获得更加丰富的上下文表征。
Definition 2. General GNN Framework: 设
H
l
[
t
]
H^l[t]
Hl[t]是node
t
t
t在
(
l
)
(l)
(l)-th GNN layer的节点表征,从
(
l
−
1
)
(l-1)
(l−1)-th到
(
l
)
(l)
(l)-th更新方式如下:
H
l
[
t
]
←
Aggregate
∀
s
∈
N
(
t
)
,
∀
e
∈
E
(
s
,
t
)
(
Extract
(
H
l
−
1
[
s
]
;
H
l
−
1
[
t
]
,
e
)
)
(1)
H^{l}[t] \leftarrow \underset{\forall s \in N(t), \forall e \in E(s, t)}{\text { Aggregate }}\left(\operatorname{Extract}\left(H^{l-1}[s] ; H^{l-1}[t], e\right)\right)\tag{1}
Hl[t]←∀s∈N(t),∀e∈E(s,t) Aggregate (Extract(Hl−1[s];Hl−1[t],e))(1)
其中,
N
(
t
)
N(t)
N(t)指节点
t
t
t的所有的source nodes。
E
(
s
,
t
)
E(s,t)
E(s,t)指从节点
s
s
s到节点
t
t
t所有的边。
GNN最重要的两个算子 E x t r a c t ( ⋅ ) \mathbf{Extract(\cdot)} Extract(⋅)和 A g g r e g a t e ( ⋅ ) \mathbf{Aggregate(\cdot)} Aggregate(⋅),其中, E x t r a c t ( ⋅ ) \mathbf{Extract(\cdot)} Extract(⋅)代表邻居节点信息的提取。它提取的信息包括source nodes 表征 H l − 1 [ s ] H^{l-1}[s] Hl−1[s], 目标节点的表征 H l − 1 [ t ] H^{l-1}[t] Hl−1[t]和两者之间边 e e e。 A g g r e g a t e ( ⋅ ) \mathbf{Aggregate(\cdot)} Aggregate(⋅)将source nodes的邻居信息进行聚合,使用一些聚合算子例如:mean, sum, max, 也可以设置一些复杂的卷积、标准化。
在这个框架下,已经演化出各种同构网络的GNN架构,例如,k. Kipf提出GCN使用one-hop邻居进行均值聚合,然后进行线性和非线性变换。Hamilton提出使用GraphSAGE进行聚合,聚合算子包括均值、求和、最大值、RNN。 Velickovi 提出使用GAT, 将邻居节点赋予不同权重。
1.3 Heterogeneous GNNs
Schlichtkrull提出RGCN用于知识图谱,它对每个类型的边使用不同线性仿射变换。. Zhang提出HetGNN采用对不同节点类型采用不同RNN, 构建多模态特征。Wang扩展注意力机制, 将不同meta-path-defined边赋予不同的权重。使用高阶 予以注意力汇总不同的meta paths的信息。
尽管这些模型比GCN、GAT效果好,但是由于不同类型的边数量差异比较大。有些关系的数据不充分,很难学出准确的权重。为了解决这个问题,我们提出共享参数,增强模型的泛化能力。定义一条边 e = ( s , t ) e=(s,t) e=(s,t), 它们的meta relation为 ⟨ τ ( s ) , ϕ ( e ) , τ ( t ) ⟩ \langle\tau(s), \phi(e), \tau(t)\rangle ⟨τ(s),ϕ(e),τ(t)⟩, 我们使用三个交互矩阵对 τ ( s ) , ϕ ( e ) \tau(s),\phi(e) τ(s),ϕ(e)和 τ ( t ) \tau(t) τ(t)进行建模,然后,它们的权重是共享的。例如: “the first author of“和“the second author of”两个关系,它们的source 和target node都是author和paper。换句话说,author和paper可以从一个关系中学习,迁移到另一个关系中。我们使用Transformer-like attention结构整合了这个思想。
HGT使用以下创新:
(1)之前都是独立考虑节点和边的类型,本文使用meta-path
⟨
τ
(
s
)
,
ϕ
(
e
)
,
τ
(
t
)
⟩
\langle \tau(s),\phi(e),\tau(t)\rangle
⟨τ(s),ϕ(e),τ(t)⟩ 分解两者之间的交互信息和转移矩阵。
(2)现在meta-path主要定制,手工配置,我们采用自动学习高阶异构网络的邻居信息。
(3)考虑动态图,提出时间相对编码技术。
(4)针对Web-scale 图,提出Mini-Batch采样算法。
2 HETEROGENEOUS GRAPH TRANSFORM
使用meta relations 对attention, message passing和propagation进行参数化,采用相对时间编码机制,整合动态网络。
2.1 Overall HGT Architecture
Figure 2展示Heterogeneous Graph Transformer整体的架构。给定一个异构网络的子图,HGT提取出所有的节点对,target node t t t和source node s s s之间的边为 e e e, HGT的目标就是汇总source的信息,获得target node t t t上下文表示。整个过程可以分解为三个阶段: Heterogeneous Mutual Attention, Heterogeneous Message Passing and Target-Specific Aggregation。
我门将HGT ( l ) (l) (l)-th的输出记作 H ( l ) H^{(l)} H(l),它作为 ( l + 1 ) (l+1) (l+1)-th的输入。通过stack L layers,我们可以得到整个图的节点表示 H ( L ) H^{(L)} H(L), 可以用于端到端的下游训练任务。
2.2 Heterogeneous Mutual Attention
我们第一步介绍一下source节点
s
s
s和target节点
t
t
t之间的mutual attention。首先我们引进通用的attention-based GNN:
H
l
[
t
]
←
Aggregate
∀
s
∈
N
(
t
)
,
∀
e
∈
E
(
s
,
t
)
(
Attention
(
s
,
t
)
⋅
Message
(
s
)
)
(2)
H^{l}[t] \leftarrow \underset{\forall s \in N(t), \forall e \in E(s, t)}{\text { Aggregate }}(\text { Attention }(s, t) \cdot \operatorname{Message}(s))\tag{2}
Hl[t]←∀s∈N(t),∀e∈E(s,t) Aggregate ( Attention (s,t)⋅Message(s))(2)
其中,包括3个基础算子:Attention, 估计每个source node重要性;Message,提取source node
s
s
s的信息;Aggregate, 使用attention weight对邻居进行加权聚合。
举例来说,GAT采用加法机制作为Attention, 使用相同的权重计算Message, 使用相同的权重和非线性激活函数进行Aggregate. GAT表示如下:
Attention
G
A
T
(
s
,
t
)
=
Softmax
∀
s
∈
N
(
t
)
(
a
⃗
(
W
H
l
−
1
[
t
]
∥
W
H
l
−
1
[
s
]
)
)
Message
G
A
T
(
s
)
=
W
H
l
−
1
[
s
]
Aggregate
G
A
T
(
⋅
)
=
σ
(
Mean
(
⋅
)
)
\begin{aligned} \text { Attention }_{G A T}(s, t) &=\underset{\forall s \in N(t)}{\operatorname{Softmax}}\left(\vec{a}\left(W H^{l-1}[t] \| W H^{l-1}[s]\right)\right) \\ \text { Message }_{G A T}(s) &=W H^{l-1}[s] \\ \text { Aggregate }_{G A T}(\cdot) &=\sigma(\operatorname{Mean}(\cdot)) \end{aligned}
Attention GAT(s,t) Message GAT(s) Aggregate GAT(⋅)=∀s∈N(t)Softmax(a(WHl−1[t]∥WHl−1[s]))=WHl−1[s]=σ(Mean(⋅))
尽管GAT会对重要的节点 给出high attention,但是假设
s
s
s和
t
t
t有相同的特征分布,使用同一个权重矩阵
W
W
W。但是这个假设对于异构网络是不正确的,异构网络中,每种类型的节点应该有自己的特征分布。
鉴于这种限制,我们设计Heterogeneous Mutual Attention机制。给定目标节点 t t t, 它们的邻居节点 s ∈ N ( t ) s\in N(t) s∈N(t), 它们可能属于不同的分布,我们利用meta relations(例如, ⟨ τ ( s ) , ϕ ( e ) , τ ( t ) ⟩ \langle\tau(s), \phi(e), \tau(t)\rangle ⟨τ(s),ϕ(e),τ(t)⟩)对其进行分组,计算mutual attention。
受Transformer结构的启发,我们将target node
t
t
t作为Query, source node
s
s
s为Key Vector,他们的dot product作为attention。普通Transformer对所有单词使用一组映射,但是在我们meta relation包括多种 project weights。在保证最大化参数共享的同时,保证不同relation的个性化,我们将source node projection, edge projection, target node projection进行参数化。具体来说,我们计算边
e
(
s
,
t
)
e(s,t)
e(s,t)的
h
h
h-head attention方式如下:
Attention
H
G
T
(
s
,
e
,
t
)
=
Softmax
∀
s
∈
N
(
t
)
(
∏
i
∈
[
1
,
h
]
∥
ATT-head
i
(
s
,
e
,
t
)
)
(3)
\text { Attention }_{H G T}(s, e, t)=\underset{\forall s \in N(t)}{\operatorname{Softmax}}\left(\prod_{i \in[1, h]}{\|} \text { ATT-head }^{i}(s, e, t)\right)\tag{3}
Attention HGT(s,e,t)=∀s∈N(t)Softmax⎝⎛i∈[1,h]∏∥ ATT-head i(s,e,t)⎠⎞(3)
A T T -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} A T T \text {-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} ATT-head i(s,e,t)Ki(s)Qi(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])
首先,对于 i i i-th attention head A T T − h e a d i ( s , e , t ) ATT-head^{i}(s,e,t) ATT−headi(s,e,t), 我们将 τ ( s ) \tau(s) τ(s)-type source node s s s 映射为 i i i-th Key vector K i ( s ) K^i(s) Ki(s), 使用线性仿射 K-linear τ ( s ) i \text{K-linear}_{\tau(s)}^i K-linearτ(s)i: R d → R d h \mathbb{R}^{d} \rightarrow \mathbb{R}^{\frac{d}{h}} Rd→Rhd, 其中, h h h是head的数量, d h \frac{d}{h} hd是每个head的维度。需要注意的是 K-linear τ ( s ) i \text{K-linear}_{\tau(s)}^i K-linearτ(s)i是指source的节点类型为 τ ( s ) \tau(s) τ(s),每个类型的节点都有唯一的线性仿射变换。类似地,target 节点 t t t 通过 K-linear τ ( t ) i \text{K-linear}_{\tau(t)}^i K-linearτ(t)i变换为 i -th i\text{-th} i-th Query vector。
其次,我们需要计算Query vector Q i ( t ) Q^{i}(t) Qi(t)和Key vector K i ( s ) K^{i}(s) Ki(s)的相似度。异构 网络中,两个节点对之间存在多个多种类型的边。普通的Transformer直接计算Query和Key之间的dot product, 我们每个边 ϕ ( e ) \phi(e) ϕ(e)都会有个矩阵 W ϕ ( e ) A T T ∈ R d h × d h W_{\phi(e)}^{A T T} \in \mathbb{R}^{\frac{d}{h}} \times \frac{d}{h} Wϕ(e)ATT∈Rhd×hd。这样,即使两个节点对相同(由于关系不同),模型能够捕捉不同的语义关系。此外,不是所有的relationships对target 节点有相同贡献,我们会增加先验向量 μ ∈ R ∣ A ∣ × ∣ R ∣ × ∣ A ∣ \mu \in \mathbb{R}^{|\mathcal{A}| \times|\mathcal{R}| \times|\mathcal{A}|} μ∈R∣A∣×∣R∣×∣A∣表示每个meta relation triplet重要性,会根据根据attention进行自适应调整。
最后将 h h h个头进行拼接,获得每个节点对attention。然后,对每个target node t t t, 我们收集它的所有邻居 N ( t ) N(t) N(t), 然后进行softmax,实现 ∑ ∀ s ∈ N ( t ) \sum_{\forall s \in N(t)} ∑∀s∈N(t) Attention H G T ( s , e , t ) = 1 h × 1 _{H G T}(s, e, t)=1_{h \times 1} HGT(s,e,t)=1h×1。
2.3 Heterogeneous Message Passing
和mutual attention并行计算, 我们将source nodes 信息传递给target nodes(Figure 2(2))。和attention的过程类似,我们将边的meta relations应用到message passing中去,减轻node类型和edges类型的分布的差异性。对于一个节点对
e
=
(
s
,
t
)
e=(s,t)
e=(s,t), 我们计算Message多头:
Message
H
G
T
(
s
,
e
,
t
)
=
∥
i
∈
[
1
,
h
]
MSG-head
i
(
s
,
e
,
t
)
(4)
\text { Message }_{H G T}(s, e, t)=\|_{i \in[1, h]} \text { MSG-head }^{i}(s, e, t)\tag{4}
Message HGT(s,e,t)=∥i∈[1,h] MSG-head i(s,e,t)(4)
其中,
M
S
G
−
h
e
a
d
MSG-head
MSG−head 计算如下:
M
S
G
−
h
e
a
d
i
(
s
,
e
,
t
)
=
M-Linear
τ
(
s
)
i
(
H
(
l
−
1
)
[
s
]
)
W
ϕ
(
e
)
M
S
G
M S G-h e a d^{i}(s, e, t)=\text { M-Linear }_{\tau(s)}^{i}\left(H^{(l-1)}[s]\right) W_{\phi(e)}^{M S G}
MSG−headi(s,e,t)= M-Linear τ(s)i(H(l−1)[s])Wϕ(e)MSG
为了获得
i
-th
i\text{-th}
i-th message head
M
S
G
M S G
MSG-head
i
(
s
,
e
,
t
)
^{i}(s, e, t)
i(s,e,t),我们将
τ
(
s
)
-type
\tau(s)\text{-type}
τ(s)-type source node 通过线性变换
M-Linear
τ
(
s
)
i
:
R
d
→
R
d
h
\text{M-Linear}_{\tau(s)}^{i}: \mathbb{R}^{d} \rightarrow \mathbb{R}^{\frac{d}{h}}
M-Linearτ(s)i:Rd→Rhd映射为
i
-th
i\text{-th}
i-th message。接下来,通过
W
ϕ
(
e
)
M
S
G
∈
R
d
h
×
d
h
W_{\phi(e)}^{M S G} \in \mathbb{R} \frac{d}{h} \times \frac{d}{h}
Wϕ(e)MSG∈Rhd×hd加入边的依赖信息。然后,将
h
h
h message heads 拼接在一起可以得到节点对的Message
H
G
T
(
s
,
e
,
t
)
_{H G T}(s, e, t)
HGT(s,e,t)。
2.4 Target-Specific Aggregation
异构multi-head attention和message计算完成后,我们需要汇总source nodes到target node(见 Figure 2(3))。需要注意的是,Eq.3已经对target node
t
t
t进行了求和、softmax操作。接下来,我门只需要将attention向量作为权重对message进行加权平均,更新向量
H
~
(
l
)
[
t
]
\widetilde{H}^{(l)}[t]
H
(l)[t]:
H
~
(
l
)
[
t
]
=
⊕
∀
s
∈
N
(
t
)
(
Attention
H
G
T
(
s
,
e
,
t
)
⋅
Message
H
G
T
(
s
,
e
,
t
)
)
\widetilde{H}^{(l)}[t]=\oplus_{\forall 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]=⊕∀s∈N(t)( Attention HGT(s,e,t)⋅ Message HGT(s,e,t))
这个公式将邻居特征信息(source nodes)汇总到target node
t
t
t。
最后一步是将target node
t
t
t 的vector还原到指定的节点类型node type
τ
(
t
)
\tau(t)
τ(t)。我们使用线性变换函数
A-linear
τ
(
t
)
\text{A-linear}_{\tau(t)}
A-linearτ(t)和参差连接, 更新向量
H
~
(
l
)
\widetilde{H}^{(l)}
H
(l):
H
(
l
)
[
t
]
=
A-Linear
τ
(
t
)
(
σ
(
H
~
(
l
)
[
t
]
)
)
+
H
(
l
−
1
)
[
t
]
(5)
H^{(l)}[t]=\text { A-Linear }_{\tau(t)}\left(\sigma\left(\widetilde{H}^{(l)}[t]\right)\right)+H^{(l-1)}[t]\tag{5}
H(l)[t]= A-Linear τ(t)(σ(H
(l)[t]))+H(l−1)[t](5)
通过这种方式,我们获得目标节点
t
t
t的
l
-th
l\text{-th}
l-th HGT layer的输出
H
(
l
)
[
t
]
H^{(l)}[t]
H(l)[t], 由于单层Layer刻画能力不足,我们会将
L
L
L层layers进行stack,使得每个节点能够对网络中的绝大数不同类型和关系的节点产生影响。HGT会对每个node产生上下文表达
H
(
L
)
H^{(L)}
H(L), 它可以输入到下游任务,用户节点分类和链路预测。
整个模型架构,为了学习各自的权重矩阵,我们非常依赖meta relation, − ⟨ τ ( s ) , ϕ ( e ) , τ ( t ) ⟩ -\langle\tau(s), \phi(e), \tau(t)\rangle −⟨τ(s),ϕ(e),τ(t)⟩。这使得我们在效果和效率之间进行平衡。和普通的Transformer相比,我们模型对不同关系进行建模。通过HGT的三元组构建,可以使得参数共享,使得少量样本能够快速收敛,增强样本泛化能力。
2.5 Relative Temporal Encoding
接下来,我们将HGT使用 the Relative Temporal Encoding (RTE) 技术处理图的动态性。
传统处理动态图的方法是根据时间构建多个图的切片。但是,这种处理方式会失去图之间的依赖性。同时,某个节点在时刻 t t t representation 依赖于其他时间切片。因此,我们设计合适方法能够刻画不同之间节点和边之间的相互影响。
我们采用the Relative Temporal Encoding (RTE) 刻画异构网络之间的动态依赖关系。RTB是受Transformer positional enconding method启发,已经证明,它能够捕捉文本之间的依赖关系。
特别地, 给定source node
s
s
s和 target node
t
t
t, 与之相对应的时间从
T
(
s
)
T(s)
T(s)到
T
(
t
)
T(t)
T(t), 相对之间差
Δ
T
(
t
,
s
)
=
T
(
t
)
−
T
(
s
)
\Delta T(t, s)=T(t)-T(s)
ΔT(t,s)=T(t)−T(s)作为relative temporal encoding
R
T
E
(
∆
T
(
t
,
s
)
)
RT E(∆T (t, s))
RTE(∆T(t,s))的index。训练集不能覆盖所有time gaps,因此,RTB需要对unseen times具备泛化能力。因此,我们采用正弦函数作为基础,使用线性变换
T-Linear
∗
:
R
d
→
R
d
\text{T-Linear}^*:\mathbb{R}^d\rightarrow \mathbb{R}^d
T-Linear∗:Rd→Rd 作为RTE:
Base
(
Δ
T
(
t
,
s
)
,
2
i
)
=
sin
(
Δ
T
t
,
s
/
1000
0
2
i
d
)
(6)
\operatorname{Base}(\Delta T(t, s), 2 i)=\sin \left(\Delta T_{t, s} / 10000^{\frac{2 i}{d}}\right)\tag{6}
Base(ΔT(t,s),2i)=sin(ΔTt,s/10000d2i)(6)
Base ( Δ T ( t , s ) , 2 i + 1 ) = cos ( Δ T t , s / 1000 0 2 i + 1 d ) (7) \operatorname{Base}(\Delta T(t, s), 2 i+1)=\cos \left(\Delta T_{t, s} / 10000^{\frac{2 i+1}{d}}\right)\tag{7} Base(ΔT(t,s),2i+1)=cos(ΔTt,s/10000d2i+1)(7)
R T E ( Δ T ( t , s ) ) = T-Linear ( Base ( Δ T t , s ) ) (8) R T E(\Delta T(t, s))=\text { T-Linear }\left(\operatorname{Base}\left(\Delta T_{t, s}\right)\right)\tag{8} RTE(ΔT(t,s))= T-Linear (Base(ΔTt,s))(8)
最后,我们将target node
t
t
t的 the temporal encoding relative和source node representation相加。
H
^
(
l
−
1
)
[
s
]
=
H
(
l
−
1
)
[
s
]
+
R
T
E
(
Δ
T
(
t
,
s
)
)
(9)
\widehat{H}^{(l-1)}[s]=H^{(l-1)}[s]+R T E(\Delta T(t, s))\tag{9}
H
(l−1)[s]=H(l−1)[s]+RTE(ΔT(t,s))(9)
通过这种法方式, the temporal augmented representation
H
^
(
l
−
1
)
\widehat{H}^{(l-1)}
H
(l−1)能够捕捉source node
s
s
s和 target node
t
t
t的 relative temporal information. RTE的整体流程如Figure 3。
3 WEB-SCALE HGT TRAININ
在本节,我们将说明HGT如何使用异构网络的动态信息进行训练,包括 HGSampling( Heterogeneous Mini-Batch Graph Sampling algorithm)和 inductive timestamp assignment method。
3.1 HGSampling
Full-batch GNN是指每个Layer学习所有的节点表示,它不适合Web-scale graphs。为了解决这个问题,出现了很多采样的方法,构建子图。由于异构网络节点类型和度的差异比较大,构建子图不均衡的,这些方法不适合异构网络。
我们使用HGSampling能够处理异构网络,存在两个优势:1)能够保证每种节点和边的类型有相似的数量。2) 能够最小化子图的信息损失和采样方差。
Algorithm 1描述了HGSampling算法,它的基本思想是将每个node type τ \tau τ分割成node budget B [ τ ] B[\tau] B[τ], 采用重要性采样策略减少采样方差,每个类型抽取相同的数量。如果 node t t t已经被采样,我们将它的直接邻居添加到budget,添加的方式如Algorithm 2,在line 8中,我们将node t t t的标准化degree应用到它的邻居.然后, 他们会用于抽样的概率。这种标准化方式会使得已经被抽样节点的邻居节点概率在随机游走的过程中得到累积,避免被high-degree nodes主导。这个概率越高,被抽样的概率越大。
budget 被更新后,我们在Algorithm 1中line 9计算抽样概率,然后对每个budget中每个node s s s计算累积标准化度的平方。已经被其他人证明,这种方式能够减少采样方差。然后,我们在type τ \tau τ中,使用计算的概率,抽取 n n n个节点,将抽样的节点添加到output node set,更新他们neighborhood到buget中,并将被抽样的节点在budget中移除,如lines 12-15。重复这个过程 L L L次,我们获得深度为 L L L的抽样子图。最后,我们重构抽样节点的临接矩阵。通过这种方式获得子图用于WEB-scale异构网络的GNN训练。
3.2 Inductive Timestamp Assignment
我们假设每个节点 t t t都会分配一个时间戳 T ( t ) T(t) T(t)。但是,现实世界很多节点都不是一个固定的时间。因此,我们需要给它分配不同的时间戳。我们称这些节点为plain nodes。例如 WWW会议在1974年和2019年分别举行一次,两次会议的主题差异非常大,因此,我们需要给WWW node分配一个时间戳。
如果存在异构网络中存在事件节点,它们会有明确的时间戳。例如,paper node应该依赖于出版社的出版日期。
我们建议对plain nodes基于关联的event nodes使用inductive timestamp assignment algorithm. 该算法如Algorithm 2中line 6。这个思想是指plain nodes继承事件时间戳。我们需要测试source node是都是event nodes。如果是事件节点, 例如论文的出版时间,我们保留他们的时间戳。如果不是,像会议这种plain node,我们分配与之相关节点的时间戳,例如,论文的出版时间。通过这种方式,我们可以对 sub-graph中每个节点分配一个时间戳。