论文链接:https://doi.org/10.1145/3292500.3330961
代码链接:https://github.com/chuxuzhang/KDD2019_HetGNN
ABSTRACT
针对异构图的表示学习问题,提出HetGNN。
- 采用基于重启的RW算法,为每个节点采样固定size的强相关异构邻居
设计含两个模块的神经网络
- 对异构内容的特征进行编码,为每个节点生成embedding
- 聚合不同类型的邻居节点,并对不同类型赋予不同权重,组合它们得到最后的embedding
- 构建损失函数,通过mini-batch梯度下降端到端训练model
HetGNN用于下游任务性能优于baseline,link prediction, recommendation, node classification & clustering and inductive node classification & clustering
INTRODUCTION
目前的SOTA GNN也难以解决异构图的以下Challenges
- 在异构图中,对每个节点如何采样对embedding生成强相关的异构邻居?每个节点的邻居数、邻居类型都不同
- 如何对不同节点的内容异构性进行编码?节点承载的内容不同,如文字或图片。此外不同节点关联的内容也不同。
- 如何考虑不同类型节点的影响来聚合邻居节点的信息?不同类型的节点影响不同。
为此,提出HetGNN。
HetGNN
HetGNN分为三部分分别应对三个Challenges
1) sampling heterogeneous neighbors
2) encoding node hetero-geneous contents
3) aggregating heterogeneous neighbors
Sampling Heterogeneous Neighbors (C1)
多数GNN是直接从一阶邻居采样,但是放在异构图上会有这么几个问题
- 难以捕捉不同类型邻居的信息。如作者-论文-会议图中,作者之间不相连,会议和作者也不相连,但不能忽视它们的关系。
- 邻居节点数目不同。中心节点可能会受到弱相关邻居节点的影响,冷启动节点的embedding无法很好表示。
- 不适合聚合不同类型的邻居节点。需要对不同的特征类型和维度进行不同的转换。
为此采用random walk with restart(RWR),包含两步
- 从节点v开始随机游走,有p概率访问邻居节点或回到初始节点。一直运行直到采样到固定数量。为确保每种类型的节点都被采样到,每种类型节点采样数固定。
- 对不同类型的邻居节点分组,对于每个节点v,每个类型t都根据采样频率返回顶部的$k_t$个节点,并将它们作为节点v的t-type邻居集
这样每种类型节点都采样到了;每种类型节点数相同,并且选择了高频节点;相同类型的邻居节点分组,便于type-based aggregation
Encoding Heterogeneous Contents (C2)
对于节点的多个特征,先对其进行预训练,如利用par2vec训练文本,用cnn训练图片,得到各个特征的向量表示,然后通过Bi-LSTM聚合所有特征表示得到节点v的向量表示
其中LSTM如下
模型该部分架构为
Aggregating Heterogeneous Neighbors (C3)
为了解决C3,设计了type-based neural network,包含两部分
- same type neighbors aggregation
- types combination
Same Type Neighbors Aggregation
在采样时已经按照节点类型进行固定采样,上一步得到了每个节点的特征。现在需要对类型相同的节点信息进行聚合,采用Bi-LSTM
模型结构为
Types Combination
上一步得到了每种类型节点的向量表示,现在需要对其进行聚合,但是由于不同类型的邻居节点贡献不同,因此采用注意力机制来学习不同类型的邻居节点的权重
模型结构为
Objective and Model Training
设置目标函数