HAN(Heterogeneous Graph Attention Network)
包含不同类型节点和连接的异构图
异构图的定义
定义如下图
V代表顶点,A是顶点所属的类别,ε代表边,R是边所属的类别,当A和R的数量相加大于2的时候就叫做异构图,即边或者顶点不止一种,或者两个都不止一种。
元路径的定义
定义如下图
元路径是连接两个对象的复合关系,是一种广泛使用的捕获语义的结构
如下图的几种meta-path:M-A-M
, M-D-M
元路径下的邻居节点
定义如下图
比如下图中,m1
和a1
、m2
是一条meta-path
,所以m1的邻居是m2,同样,m1
和a2
、m3
是一条meta-path
,所以m1的邻居是m3,而且,邻居是包括自己本身的。
attention
分为节点级别的注意力和语义级别的注意力
举例
Node-level attention算法
从一个异构图得到元路径下的邻居节点,然后邻居之间连边构成一个图,如下图所示,上方是一个异构图,有红色和蓝色两种节点,通过meta-path得到每个节点的邻居,然后得到下方的图
然后计算节点级别的注意力
公式如下图所示
h
是在异构图中节点的表示,h'
是节点映射到邻居图后的表示
公式(2):比如要计算节点i
和节点j
的节点级注意力,要将二者在邻居图中的向量输入一个网络,得到一个注意力值
公式(3):将2中得到的值丢进softmax
层,其实就是对2中得到的注意力值归一化,分母是计算所有和i相连的节点拼接后经过激活函数和exp得到的值,分子是节点i和节点j拼接经过激活函数和exp得到的值
公式(4):将所有和结点i相连的节点做一个加权求和,每个节点都用自己的向量表示乘上(2)中计算出的自己的节点的attention
值
对每个节点都重复此步骤,便得到了所有节点的特征表示,也可以得到每个meta-path下的节点的特征表示。
Semantic-level attention算法
公式如下图所示
前面已经得到了每个节点的特质值,每个meta-path的特征值就是该meta-path下所有节点的特征值的构成的。
得到每个meta-path
的特征表示之后,按照下图公式(7) 遍历每个meta-path下的节点特征表示,对每个节点乘W+b后经过tanh激活函数再乘上一个可学习参数q,然后所有节点求出的值相加后除以V,V即使节点个数,所以也是求平均值,最后求出了每个meta-path下的W
值 公式(8) 就是一个softmax,也就是归一化,就求出了每个meta-path下的β值,然后用 公式(9) 求每个节点的embedding,即遍历所有元路径,用7求出的βi乘上节点在元路径i下的特征表示求和
算法流程: