图神经网络学习笔记2.2-图游走算法(异构图)
deepwalk和node2vec针对同构图的游走,如果应用于异构图则会造成以下问题:
- 偏向于出现频率高的节点类型
- 偏向于相对集中的几点(即度数高的节点)
要了解异构图的游走,首先我们需要了解什么是异构图:
我们知道同构图G=(V,E),而异构图G=(V,E,T),T是节点V的类型
例如,学术网络:
在上图中,我们知道节点有四种不同的类型,而节点之间的边E也有三种不同的类型
在我们了解异构图之后,下面介绍metapath2vec
在metapath2vec算法中,提出了元路径(meta path)的概念
meta path:在图中选取的由节点类型构成的组合路径
例如:APA的含义为两个作者写了用一篇论文,又例如:APCPA,两个作者分别写的两篇论文在同一个会议发布
可见,元路径的选取都是有意义的,但是为什么要这么做呢?
因为我们会在选取出来的元路径上进行游走,如果选取出来的元路径没有什么意义,那么训练出来的模型的效果较差
基于meta path的随机游走:
对于选取节点A来说,每个节点有1/4的概率被选中,假设我们选取了节点A1,对于选取节点P,对应的有两个节点P1和P2,每个节点被选中的概率是1/2,我们选择P2,那么A节点则有A1、A3和A4三个选择
ps:只要首尾节点类型相同,就可以继续游走,元路径最好是对称的,这样可以方便我们对元路径做出扩展,不对称的元路径也是有意义的
停止游走的条件:
- 到达指定的最大游走程度
- 找不到符合要求节点类型的节点
metapath2vec的整体框架:
metapath2vec在随机游走的时候考虑了节点类型,但是在负采样的时候没有考虑节点类型:
可以看出负样本的节点类型和正样本不同,这样的负样本采集方式并不利于模型训练,我们应当采集同样的样本类型,因此提出了metapath2vec++算法,在负采样的时候,考虑节点类型
变种:multi-metapath2vec:利用元路径生成器,生成多条metapath
变种:side info + multi-metapath2vec:每个节点都有自己的特征表示,通过元路径生成器生成多条元路径,在实际训练过程中将特征融入矩阵中,让模型获得更多信息
图游走算法总结: