原论文地址:https://arxiv.org/abs/1903.07293
推荐一篇博客 https://zhuanlan.zhihu.com/p/346658317,讲HAN的,比较清晰。
推荐一个B站的视频讲解:【异构图注意力网络(3) HAN】https://www.bilibili.com/video/BV12a411b7BCvd_source=b32749aed2dd915ff00afa9b15fd3d32,讲的很清晰。
那我们接下来就开始吧!
GraphSAGE[1]和GAT[2]都是针对同构图(homogeneous graph)的模型,它们也确实取得了不错的效果。然而在很多场景中图并不总是同构的,例如图可能有种类型的节点或者节点之间拥有不同类型的连接方式,这种图叫做异构图(heterogeneous graph)。因为异构图含有了更多的信息,往往也比同构图有更好的表现效果。这里介绍的Heterogeneous Graph Attention Network(HAN)[3]便是经典的异构图模型,它的思想是不同类型的边应该有不同的权值,而在同一个类型的边中,不同的邻居节点又应该有不同的权值,因此它使用了节点级别的注意力(node level attention)和语义级别的注意力(semantic level attention)。其中语义级别的attention用于学习中心节点与其不同类型的邻居节点之间的重要性,语义级别的attention用于学习不同meta-path的重要性。HAN也是一个可以归纳的模型。
HAN 的策略是:通过元路径的方式,将一张异构图转化成多张同构图,接着使用attention机制分析每张同构图中节点之间的关系,更新每个节点特征向量;然后再使用attention机制分析每张同构图之间的关系。这样就可以很好地得到异构图中各个节点的特征向量,之后就可以使用常规方法处理这些向量,完成任务了。
HAN中元路径(meta-path)的选择是至关重要的,它决定了将异构图分成多少张同构图和每张同构图的结构。很大程度上影响了最终形成的特征向量,因此这也是HAN的一个缺点之一:
- 对元路径比较敏感,好的元组结构能得到很好地效果,不好的元组也会得到很差的结果。
另外,另一个缺点则是:
- 训练时间较长。(当然,可以叠卡解决)
既然元路径这么重要,我们接下来讲讲元路径的设置技巧(很奇怪的是所有博客或视频都没有介绍这点,因此我特地翻了下原论文,自己总结的可能有错误或不全):
- 头尾相同,对称结构。
这是我从原论文截下来的元路径设置,可以很明显的发现这两个特征。
2.元路径设置不要过长,短小精炼。
3. 当然最重要的还是根据实际数据,灵活考量。 若经过一次元路径,就可以使两个节点连接,则这两个节点在生成的子图中相邻连接(如在元组MAM生成的子图中的M1和M4)。若需要经过两次元路径顺序才能相连的两个节点,则在生成的子图中,之间会隔着一个节点(如在元组MAM生成的子图中的M1和M5)。
接下来就是节点层面的注意力计算了,这层注意力计算的意义是:捕获了异构图中同类节点之间的关系信息,然后将其融合入更新的各个节点特征向量中。
当然,这层中为了增加模型的表达能力还可以加入多头注意力机制。相当于设置多组不同向量,分别负责提取不同特征(类似于卷积神经网络中设置多个不同的卷积核)
之后 便是语义级别的注意力了,这层注意力计算的意义是:获得不同类型节点的权重(此处的权重是将一类节点作为一个整体计算得到的),然后每个节点乘上对应权重,得到最终特征向量(类似GCN的计算方法)。
最后我们能得到异构图中每个节点的特征向量表示,这个向量包含了 :1.它本身自己的信息。2.同类节点与它的关系信息。3.不同类节点与它的关系信息。
然后,我们就可以接上一个MLP,去实现任务了(如:分类,预测等)。