Heterogeneous Graph Neural Network是发表在KDD 2019的一篇文章,提出了HetGNN模型,采用LSTM进行节点级别的聚合,采用注意力机制进行语义级别的聚合。

Motivation

作者认为现在的网络几乎都没有同时考虑异构网络的结构信息以及每个节点的异构内容信息(大概就是属性的意思吧)。

当前先进的GNNs并没有对异构图解决以下几个问题:

  • 很多异构图中节点也许并没有和其他所有类型的邻居节点,以及不同节点的邻居个数也许不同,这就有一个问题:C1:如何采样异构图中节点的邻居,使得被采样的邻居与节点的嵌入表示强相关
  • 不同类别的节点都有非结构化的内容信息,且这些信息可能都不在一个表示空间中,比如文本、图像。问题:C2:如何编码节点内容信息,以处理不同节点的内容异构性
  • 不同类型的邻居节点对于节点的嵌入表示贡献也不同。问题:C3:考虑到不同节点类型的影响,如何聚合异构邻居的特征信息

Definition

双层异构深度神经网络 异构图神经网络_双层异构深度神经网络

Model

总体来看,作者引入带有重启策略的随机游走方法为每个节点采样固定长度的异构邻居,然后利用节点异构内容编码器编码节点的异构内容,从而得到节点的初始嵌入表示,用LSTM作为聚合器聚合meta-path内的节点级信息,用注意力机制进行语义级别的聚合。

下面作者根据提出的三个问题一一给出了解决方案,最终提出了HetGNN模型。

双层异构深度神经网络 异构图神经网络_解决方案_02

Sampling Heterogeneous Neighbors(C1)

作者设计了一个异构邻居采样策略(RWR):

  • 1.从节点双层异构深度神经网络 异构图神经网络_双层异构深度神经网络_03出发,开始随机行走,迭代地以一定的概率遍历当前节点的邻居节点,或者返回到开始节点。直到成功采样到固定长度的节点。同时要保证在RWR(v)中,不同类别的节点都要被采样到。
  • 2.依据类别进行分组,对于每一个节点类型双层异构深度神经网络 异构图神经网络_机器学习_04,从RWR(v)中选择每个类别中出现频率双层异构深度神经网络 异构图神经网络_异构_05的节点,定为当前节点的邻居节点。

这个策略的好处是:

  • 每个节点都能收集到所有类别的邻居;
  • 每个节点的邻域大小是固定的,并且最经常访问到的被成功采样;
  • 同一个类别的被分在同一组,这样可以使用基于类别的聚合方式。

Encoding Heterogeneous Contents(C2)

对于节点双层异构深度神经网络 异构图神经网络_重启_06,其属性集双层异构深度神经网络 异构图神经网络_异构_07,对于双层异构深度神经网络 异构图神经网络_异构_07中第双层异构深度神经网络 异构图神经网络_双层异构深度神经网络_09个属性的表示,用双层异构深度神经网络 异构图神经网络_机器学习_10表示,双层异构深度神经网络 异构图神经网络_双层异构深度神经网络_11表示节点双层异构深度神经网络 异构图神经网络_重启_06的内容编码。
双层异构深度神经网络 异构图神经网络_机器学习_13作者认为属性集的遍历顺序并不重要。

Aggregating Heterogeneous Neighbors(C3)

聚合过程包括两个连续的步骤:(1)相同类型邻居节点聚合;(2)不同类型邻居节点聚合。

  • 相同类型节点聚合
    双层异构深度神经网络 异构图神经网络_机器学习_14节点双层异构深度神经网络 异构图神经网络_机器学习_15类别双层异构深度神经网络 异构图神经网络_解决方案_16的邻域表示为双层异构深度神经网络 异构图神经网络_解决方案_17双层异构深度神经网络 异构图神经网络_机器学习_18可以被理解成是泛化的关于类别双层异构深度神经网络 异构图神经网络_解决方案_16的聚合器,而这里作者采用Bi-LSTM:
    双层异构深度神经网络 异构图神经网络_机器学习_20
  • 不同类型邻居节点聚合
    不同类别的邻居会对节点双层异构深度神经网络 异构图神经网络_机器学习_15最终的表示起不同程度的作用,因而作者这里采用注意力机制。
    双层异构深度神经网络 异构图神经网络_双层异构深度神经网络_22节点本身的内容编码双层异构深度神经网络 异构图神经网络_重启_23和type-based聚合嵌入双层异构深度神经网络 异构图神经网络_双层异构深度神经网络_24放入一个结合双层异构深度神经网络 异构图神经网络_重启_25,最终节点双层异构深度神经网络 异构图神经网络_机器学习_15的表示可以写成:
    双层异构深度神经网络 异构图神经网络_重启_27