Heterogeneous Graph Neural Network

摘要

挑战:不仅是因为需要合并由多种类型的节点和边组成的异质结构(图)信息,而且还因为需要考虑与每个节点相关联的异质属性或内容(例如,文字或图像)。

方法:C1引入了一种带重启的随机游走策略,对每个节点的固定大小的强相关异构邻居进行采样,并根据节点类型对它们进行分组。

接下来,设计一个包含两个模块的神经网络体系结构,用来聚合那些采样的相邻节点的特征信息。

第一个模块C2:对异构内容的“深度”特征交互进行编码,并为每个节点生成内容Embedding。

第二个模块C3:聚合不同相邻组(类型)的内容(属性)嵌入,并通过考虑不同组的影响来进一步组合它们,以获得最终的节点嵌入。

HetGNN用途:在边链接预测、推荐、节点分类和聚类以及归纳节点分类和聚类等各种图挖掘任务

异质图

学术图中,

关系:作者与论文(写作)、论文与论文(引文)、论文与期刊(出版)

此外,该图中的节点携带属性 如作者有id属性、文本有论文摘要属性。

挑战

  • 1:现有的GNN大多只聚合直接(一阶)相邻节点的特征信息,特征传播过程可能会削弱远邻节点的影响。此外,“中心”节点的嵌入生成受到弱相关邻居(“噪声”邻居)的影响,“冷启动”节点的嵌入由于邻居信息有限而没有得到充分的表示。因此,挑战1是:如何为HetG中的每个节点采样与嵌入生成密切相关的异构邻居。如上图C1。(信息聚合考虑的信息不够多)

    方法:基于重启策略的随机游走,采样固定大小强相关异构邻居,并根据节点类型进行分组。

  • 2:HETG中的一个节点可以携带非结构化的异构内容。如上图C2,type1有属性+文本,type2有属性+图片。因此挑战2是:如何设计节点内容编码器来解决HetG中不同节点的内容异构性。(异构属性信息如何嵌入)

    方法:聚合模块1,用RNN对异构内容的“深层”特征交互进行编码,得到每个节点的内容嵌入。

  • 3:不同类型的邻居对HetG中节点嵌入的贡献不同。目前的GNN主要集中在齐次图上,没有考虑节点类型的影响。因此,挑战3是:如何通过考虑不同节点类型的影响来聚合异构邻居的特征信息,如图上图C3。(不同类型节点如何聚合)

    方法:聚合模块2,利用另一个RNN聚合不同邻域组的内容嵌入,并进一步通过注意力机制进行组合,以度量异构节点类型的不同影响,并获得最终的节点嵌入。

和其他模型对比

C-HetG

内容关联异质图

定义为有多种类型的节点V和边E的图。$G=(V,E,O_V,R_E)$。

$O_V$ 和 $R_E$ 分别表示对象类型的集合和关系类型的集合。

此外,每个节点与不同种类的内容相关联(例如,属性、文本或图像)。

基于重启策略的随机游走 C1

和GAT/GCN采样一阶邻居不一样。他们不能聚合多种类型节点的信息,并且采样信息不完整。

HetGNN用这个方法采样。

Step1:采样固定大小长度的随机游走路径$RWR(v)$ 。以概率p决定是走到当前节点还是返回上一节点。 v是起始节点,$RWR(v)$ 中不同类型节点的数量受到限制,以确保可以采样所有节点类型。

Step2::对不同类型的邻居进行分组。对于每个节点类型t,根据频率从 $RWR(v)$ 中选择前kt个节点,并将它们作为节点v的t型相关邻居的集合。

保证了手机每个节点都有所有类型邻居的信息,并且对相同类型的邻居进行分组,以便后续任务。

异质内容编码 C2

对于第二个挑战,设计此模块去提取图中的异质内容$C_v$ ,编码为固定大小的embedding。

定义$C_v$ 中的第i个特征表达为 $x_i \in R^{d_f\times 1}$

$xi$ 可以根据不同类型的内容采用不同的技术进行预训练。例如,可以利用Par2Vec来预先训练文本内容,或者使用CNNs来预先训练图像内容。 下面的 $FC{\theta_x}$ 就代表不同的特征转换器,参数为$\theta_x$。

采用双向LSTM学习深度特征:

$\oplus$ 链接操作。LSTM公式:

聚合异构邻居 C3

包含两个步骤:

  • 同类邻居聚合
  • 类型邻居聚合

同类型聚合

使用随机游走对每个节点的不同节点类型的固定大小邻居进行采样后。

将$v∈V$ 的t类型抽样邻居集表示为$N_t(v)$

经过上面的内容嵌入后变为$ v’ \in N_t(v)$

然后使用神经网络$f_2^t$ 来聚合得到的内容嵌入。

聚合嵌入公式为:

还是使用的Bi-LSTM:

使用Bi-LSTM来聚集所有t型邻居的内容嵌入,并使用所有隐藏状态的平均值来表示一般的聚集嵌入。我们使用不同的Bi-LSTM来区分邻居聚合的不同节点类型。Bi-LSTM对无序邻域集进行操作,该集合的灵感来自于GraphSAGE

类型邻居聚合

上一步为节点v生成$|O_v|$ 聚集嵌入 (图中的节点类型集)。

为了将这些基于类型的邻居嵌入与v的内容嵌入相结合,采用了注意机制。

其动机是不同类型的邻居将对v的最终表示做出不同的贡献。因此,输出嵌入被表示为:

$\epsilon_v \in \Re^{d\times 1}$ , d 是嵌入维度

$f_1(v)$ 是获得v的内容嵌入

$f_2^t(v)$ 是类型聚合嵌入

$\alpha^{v,*}$ 表示不同嵌入的重要性

定义:$F(v) ={ f_1(v) \bigcup (f_2^t(v) ,t\in O_v)}$

HetGNN

四个组成部分

  • 采样异质邻居
  • 编码节点的异质内容
  • 聚合异质邻居
  • 制定目标函数,设计训练过程。