图表征对于知识图谱是很重要的,如何将图进行embedding,并输入到深度学习模型中,是一个热点问题。
1. GraphSage模型
主要应用于同构图中,是一种归纳式的图表征模型,首先从一个图中训练出embedding方法,在图更新频率高,出现未知的节点时,能够基于邻居节点快速对未知节点进行embedding,而不必对全图进行重新训练。
源码:pytorch版:https://gitcode.com/mirrors/twjiang/graphsage-pytorch/tree/master
tensorflow版:https://github.com/williamleif/GraphSAGE
模型原理:1)先随机采样1层或2层邻居节点,通常k=2;2)从采样的最外层(一般是第2层)向内聚合,可以采用mean、max、lstm等聚合函数将邻居节点进行聚合,再将聚合后的邻局embedding与下一层的节点进行拼接concat,再通过激活函数得到下一层节点的embedding;3)重复步骤2,直到得到目标节点的embedding。
模型训练:
- 无监督:假设节点的相似性与其距离呈正相关,邻近节点应当相似,不相邻节点应当不相似
- 有监督:更换损失函数,例如交叉熵损失函数。
2. metapath2vec模型
可以用于异构图网络,先人为设计一些metapath(元路径),例如一个金融诈骗图中有人员person、手机号Tel、邮箱email,人为设计元路径:PTP,即2人共用一个号码,采样时从一个person出发,只会walk到邻接的tel上,再从tel走到下一个person上,不会随机乱走到其它类型的节点上。
得到节点的游走序列,再将序列输入到skip-gram中以得到每个节点的嵌入表示。
源码:https://github.com/PaddlePaddle/PGL/tree/main/examples/metapath2vec