1. 前言
论文链接:https://dl.acm.org/doi/10.1145/3292500.3330961
github:https://github.com/chuxuzhang/KDD2019_HetGNN
该文提出了一种基于深层模型的异质网络表示学习的方法HetGNN。
异构图的表示学习旨在为每个节点寻求一个有意义的向量表示,以便于链接预测、个性化推荐、节点分类等下游应用。然而,这个任务是挑战不仅因为需求将异构结构(图)组成的多种类型的节点和边的信息,但也需要考虑异构属性或内容(文本或图像)与每个节点关联。尽管在同构(或异构)图嵌入方面已经做了大量的工作,
但是在属性图嵌入和图神经网络中,很少有网络能够有效地联合考虑异构结构(图)信息以及各节点的异构内容信息。本文提出一种异构图神经网络模型HetGNN来解决这一问题。具体来说,
- 首先引入了带重启策略的随机游走,为每个节点抽取固定大小的强相关异构邻居,并根据节点类型对它们进行分组。在此基础上,设计了一个具有两个模块的神经网络结构来聚合采样的相邻节点的特征信息。
- 第一个模块对异构内容的“deep”特征交互进行编码,并为每个节点生成嵌入内容。
- 第二个模块聚合不同相邻组(类型)的内容(属性)嵌入,并考虑不同组的影响对其进行组合,得到最终的节点嵌入。
- 最后利用图上下文丢失和一个小批量梯度下降过程,以端到端方式训练模型。
2. 异质图神经网络
异质图定义为包含多类节点或多类边,要保证边的类别数和节点类别数之和要大于2.
对于图(a)(左)来说表达了三种类型的关系分别为:
- 作者和论文之间的协作关系
- 论文和论文之间的引用关系
- 论文和机构的发表关系。
此外在(a)(左)图中的节点带有各自特有的属性,例如代表作者节点的作者 id 作为其属性、代表论文节点的摘要文本作为其属性。图(a)(右)表明了用户物品的交互关系。
对于图(b)主要揭示了异质图嵌入的几个难点:
- 挑战1是:如图1(b)中的C1所示,如何对HetG中每个节点的嵌入生成具有强相关性的异构邻居进行采样?
- 挑战2是:如图1(b)中的C2所示,如何设计节点内容编码器来解决HetG中不同节点的内容异构性?
- 挑战3是:如何在考虑不同节点类型影响的情况下聚合异构邻居的特征信息,如图1(b)中的C3所示。
现有的同质图卷积方法在处理异质图数据的局限性:
-
HetG中的许多节点可能无法连接到所有类型的邻居。此外,相邻节点的数量因节点而异。例如,在图1(a)中,任何作者节点都没有直接连接到机构节点。同时,在图1(b)中,节点a有5个直接邻居,而节点c只有2个。现有的 GNN 大多只聚合直接(一阶)邻居节点的特征信息,特征传播过程可能会削弱远邻节点的影响。此外,“hub”节点的嵌入生成受到弱相关邻居(“噪声”邻居)的影响,而“cold-start”节点的嵌入由于邻居信息有限而没有得到充分表示。因此,挑战1是:如图1(b)中的C1所示,如何对HetG中每个节点的嵌入生成具有强相关性的异构邻居进行采样?
-
一个节点在HetG可以携带非结构化异构内容,例如属性、文本或图像。此外,与不同类型的节点关联的内容可能不同。例如,在图1 (b), 1型节点(例如b或c)包含属性和文本内容,2型节点(例如f或g)携带属性和图片信息,k型节点(例如d或e)与文本和图像相关联。当前 GNN 的直接连接操作或线性转换无法建模节点异构内容之间的“深层”交互。此外,不能对所有节点类型使用相同的特性转换函数,因为它们的内容各不相同。因此,挑战2是:如图1(b)中的C2所示,如何设计节点内容编码器来解决HetG中不同节点的内容异构性?
-
不同类型的邻居对HetG中的节点嵌入的贡献是不同的。例如,在图1(a)的学术图中,作者和论文邻居对作者节点的嵌入应该有更大的影响,因为机构节点包含的类型比较多,因此嵌入的范围比较广。目前大多数 GNN 主要关注同构图,不考虑节点类型的影响。因此挑战3是:如何在考虑不同节点类型影响的情况下聚合异构邻居的特征信息,如图1(b)中的C3所示。
为了解决这些挑战,本文提出HetGNN,一个异构图神经网络模型,用于HetG的表示学习。
-
首先设计了一种基于重新启动的随机游走策略,对HetG中每个节点固定大小的强相关异构邻居进行采样,并根据节点类型进行分组。
-
接下来设计了一个包含两个模块的异构图神经网络体系结构来聚合前一步采样邻居的特征信息。
2.1 第一个模块采用递归神经网络对异构内容的“深度”特征交互进行编码,得到每个节点的嵌入内容。
2.2 第二个模块利用另一个递归神经网络来聚合不同邻近组的内容嵌入,再通过一个注意机制将其组合,以测量异构节点类型的不同影响,从而获得最终的节点嵌入。 -
最后利用图上下文丢失和一个小批量梯度下降过程来训练模型。
综上所述,作者将问题描述为,给出一个异质图 C-HetG G = ( V , E , O V , R E ) G=(V,E,O_V,R_E) G=(V,E,OV,RE) 其中节点信息集合为 C C C,具体任务为设计一个模型 F Θ \mathcal{F}_{\Theta} FΘ 其中 Θ \Theta Θ 表示模型参数来学习 d d d-维的嵌入 E ∈ R ∣ V ∣ × d \mathcal{E} \in \mathbb{R}^{|V|\times d} E∈R∣V∣×d。该模型可以在它们之间编码异构结构的紧密性和异构非结构化内容。最后生成的节点嵌入可以用于各种图挖掘任务,如链路预测、推荐、多标签分类、节点聚类等。
3.HetGNN
3.1 Sampling Heterogeneous Neighbors (C1)
为了解决传统同质图卷积操作仅聚合一节邻居节点的问题,本文提出一种带有重启机制的随机游走方法(RWR),具体分为两步:
- Step-1: Sampling fixed length RWR。首先从图中的一个节点( v ∈ V v \in V v∈V)开始随机游走,每一次随机游走走到当前节点的邻居节点或返回开始节点的概率为 p p p,RWR不断运行直到收集到规定个数的节点集,表示为 R W R ( V ) RWR(V) RWR(V) ,其中每一种节点在节点集中的数量被限制是为了保证所有种类的节点都被收集到
- Step-2: Grouping different types of neighbors。对于每个结点的类型 t t t ,基于根据频率我们从 R W R ( v ) RWR(v) RWR(v) 中选择前 k t k_t kt 个节点,取其为节点 v v v 的 t t t 型相关邻居的集合。
该策略能够避免上述问题,原因是:
- (1)RWR收集每个节点的所有类型的邻居;
- (2)固定每个节点的抽样邻居大小,选择访问次数最多的邻居;
- (3)对相同类型(具有相同内容特性)的邻居进行分组,这样就可以部署基于类型的聚合。
3.2 Encoding Heterogeneous Contents (C2)
与GraphSAGE和GAT 直接连接不同种类的特征信息或将它们线性转换为统一的向量表示不同,本文设计了一个基于双向LSTM (Bi-LSTM) 的新架构,以捕获“深层”特性交互,并获得更大的表达能力。形式上,
v
v
v 的嵌入内容计算如下:
其中
f
1
(
v
)
∈
R
d
×
1
f_1(v) \in \mathbb{R}^{d \times1}
f1(v)∈Rd×1 (
d
d
d 代表特征嵌入维度),
F
C
θ
x
\mathcal{F}C_\theta{_x}
FCθx 代表特征转换方法,可以为恒等映射、全连接神经网络等,其中参数为
θ
x
\theta_x
θx。操作
⊕
\oplus
⊕ 代表级联操作。LSTM具体公式为:
其中
h
i
∈
R
(
d
/
2
)
×
1
h_i \in \mathbb{R}^{(d/2)\times1}
hi∈R(d/2)×1 代表属性集中第
i
i
i 个属性的隐藏状态输出,
∘
\circ
∘ 代表哈达玛内积也就是两矩阵元素对应相乘,这里要保证两矩阵的维度相同。
U
j
∈
R
(
d
/
2
)
×
d
f
\mathcal{U}_j \in \mathbb{R}^{(d/2)\times d_f}
Uj∈R(d/2)×df,
W
j
∈
R
(
d
/
2
)
×
(
d
/
2
)
W_j \in \mathbb{R}^{(d/2)\times(d/2)}
Wj∈R(d/2)×(d/2),
b
j
∈
R
(
d
/
2
)
×
1
(
j
∈
{
z
,
f
,
o
,
c
}
)
b_j \in \mathbb{R}^{(d/2)\times1} (j \in\{z,f,o,c\})
bj∈R(d/2)×1(j∈{z,f,o,c}) 代表可学习的参数。
z
i
z_i
zi,
f
i
f_i
fi,
o
i
o_i
oi 分别为属性集中第
i
i
i 个属性的遗忘门向量、输入们向量和输出门向量。
对整个过程进行概括:
-
第一步,一个节点具有的不同属性集合 C v C_v Cv ,那就对每个属性分别进行encoding。如对于text就用预训练的word embedding进行encode,对于image可以用CNN进行encode,其实就是 F C θ x \mathcal{F}C_\theta{_x} FCθx特征转换方法。总之最后得到每个attribute的embedding表示 x i x_i xi 。
-
第二步,将embedding后的feature按照某个顺序输入到BiLSTM中进行deep encode,至于顺序其实不在乎,类似于graphsage一样不在乎顺序。再接一个mean pooling得到该节点的表示。
上述过程中对应图2(b)
这种编码架构有三个主要优点:
- (1)结构简洁,复杂度相对较低(参数较少),模型实现和调优相对容易;
- (2)能够融合异构内容信息,表达能力强;
- (3)灵活添加额外的内容特性,方便模型扩展。
3.3 Aggregating Heterogeneous Neighbors (C3)
为了对每个节点聚合异构邻居的内容嵌入(经过LSTM编码模块得到了不同类型属性的嵌入输出,下一步应该结合属性的差异进行邻居特征的聚合),本文设计了另一个基于类型的神经网络模块。它包括两个连续的步骤:
- (1)同类型邻居的聚合;
- (2)不同类型的组合。
3.3.1 Same Type Neighbors Aggregation
在3.1中使用基于重启的随机游走方法(RWR)得到了固定大小的邻居集合,其中包含了不同种类的多个节点,基于此我们可以表示第
t
t
t 类的采样邻居集合为
N
t
(
v
)
N_t(v)
Nt(v),之后采用一个神经网络
f
2
t
f_2^t
f2t 来聚合同一种类中不同节点的特征信息,具体公式为:
其中
f
2
t
(
v
)
∈
R
d
×
1
f_2^t(v) \in \mathbb{R}^{d \times 1}
f2t(v)∈Rd×1
d
d
d 表示特征嵌入维度,
f
1
(
v
′
)
f_1(v^{'})
f1(v′) 是经过3.2中模型的道德嵌入结果。
A
G
t
\mathcal{AG}^t
AGt 代表第
t
t
t 种邻居聚合方法,可以为全连接神经网络或者卷积神经网络或者时序神经网络,本文中作者采用Bi-LSTM,因为它在训练中会产生更好的效果。因此我们结果可以表达为:
本文使用Bi-LSTM来聚合所有t型邻居的内容嵌入,并使用所有隐藏状态的平均值来表示一般的聚合嵌入,如图2(c)所示。我们使用不同的Bi-LSTMs来区分邻居聚合的不同节点类型。注意,Bi-LSTM操作针对的是一个无序的邻居集,受GraphSAGE启发的。
3.3.2 Types Combination
对于考虑不同种类节点信息的聚合,作者引入了注意力机制。动机是不同类型的邻居对
v
v
v 的最终表示会做出不同的贡献,因此可以将输出嵌入表示为:
其中
E
b
∈
R
d
×
1
\mathcal{E}_b \in \mathbb{R}^{d \times 1}
Eb∈Rd×1
d
d
d 表示输入的嵌入维度。
α
v
,
∗
\alpha^{v,*}
αv,∗ 表明不同嵌入的重要性。
f
1
(
v
)
f_1(v)
f1(v) 是经过3.2中生成的基于
v
v
v 节点的特征嵌入
f
2
t
(
v
)
f_2^t(v)
f2t(v) 是基于节点属性种类
t
t
t 在3.3中生成的聚合嵌入结果。因此定义嵌入集合为
F
=
{
f
1
(
v
)
∪
(
f
2
t
(
v
)
,
t
∈
O
V
)
}
\mathcal{F}=\{f_1(v) \cup (f_2^t(v),t \in O_V)\}
F={f1(v)∪(f2t(v),t∈OV)}基于此输出
v
v
v 的嵌入表达为:
其中
u
∈
R
2
d
×
1
u \in \mathbb{R}^{2d \times1}
u∈R2d×1 代表注意力参数。对应于图2(d)
在该框架中,为了使嵌入维度一致,便于模型调优,对3.2节的内容嵌入使用相同的维度 d d d,对3.3节的内容嵌入使用聚合的维度 d d d,对3.3节的输出节点嵌入使用输出节点 d d d。
3.4 Objective and Model Training
优化目标还是以无监督的形式,即节点间对。对于给定节点 v v v ,与其一阶和二阶邻居都可以认为有边,而其他点则认为是无边。注意的是,节点对是按照类型区分,负样本也是与正样本属于同类型的节点。
参数
Θ
\Theta
Θ:
其中
C
N
v
t
CN_v^t
CNvt 是
v
v
v 的
t
t
t 型上下文节点的集合,图中的一/二阶邻居或短随机游动中的局部邻居。条件概率
p
(
v
c
∣
v
;
Θ
)
p(v_c|v;\Theta)
p(vc∣v;Θ) 被定义为异质 softmax函数:
采用负采样形式,可以改写为:
其中
M
M
M 是负采样集合的大小
P
t
(
v
c
′
)
P_t(v_{c^{'}})
Pt(vc′) 是预先定义的是否是
t
t
t 型节点的噪声分布,在模型中将
M
M
M 具体设置为1.基于此(9)可以更新为:
相当于每次训练有当前节点
v
v
v ,正样本
v
c
v_c
vc ,按照采样分布
P
t
P_t
Pt 采样得到的负样本
v
c
′
v_{c^{'}}
vc′ ,那么损失函数可以进一步写为:
4. 实验
在本节中,我们进行了广泛的实验,目的是回答以下研究问题:
•(RQ1) HetGNN与最先进的Baseline相比,对于各种图挖掘任务,如链路预测(RQ1-1)、个性化推荐(RQ1-2)和节点分类与聚类(RQ1-3), HetGNN的表现如何?
•(RQ2) HetGNN与最先进的基线相比,如何执行归纳图挖掘任务,如归纳节点分类和聚类?
•(RQ3)如何不同的组件节点异构内容编码器或异构邻居聚合器,影响模型性能?
•(RQ4)如何各种hyper-parameters,嵌入维数或采样的异构邻居集的大小,影响模型性能?