几种常见的图形嵌入方法

在介绍图嵌入之前,我们先来回顾一下什么是嵌入。嵌入是数学中的一个函数,将一个空间中的点映射到另一个空间,通常是从高维的抽象空间映射到低维的具体空间。嵌入的意义是将高维数据转化为低维数据进行算法处理;同时解决了一热向量长度随样本变化而变化,无法表达两个实体间相关性的问题。

最常见的嵌入方法是word2vec,根据语料库中单词的* * *关系计算每个单词的嵌入量。常用的word2vec模型有两种:cbow和skip-gram。cbow根据上下文预测中心词,skip-gram根据中心词预测上下文(详见word2vec中的数学原理)。所以,既然自然语言中的词可以通过* * *存在关系进行嵌入,那么我们是否也可以通过将图与整个语料库进行对比,将图中的节点与词进行对比,通过* * *存在关系来嵌入图中的节点呢?对于word2vec,语料库中的每一句话都可以描述词与词之间的* * *关系。对于graph,如何描述这种* * *关系?接下来,我们将扩展各种不同的图嵌入方法。

图嵌入的中心思想是找到一个映射函数,将网络中的每个节点转换成低维的势表示。便于计算和存储,不需要手动提特征(自适应性)。下图显示了图形嵌入的几种常见分类:

DeepWalk通过将节点视为单词,并将短的随机行走生成为句子,弥补了网络嵌入和单词嵌入之间的差距。然后,可以将神经语言学模型(如Skip-gram)应用于这些随机游走,以获得网络嵌入。它的优点是:第一,可以按需生成随机游走。因为Skip-gram模型也针对每个样本进行了优化,所以随机行走和Skip-gram的结合使得DeepWalk成为一种在线算法。其次,DeepWalk是可扩展的,生成随机漫步和优化Skip-gram模型的过程是高效和普通的并行化。最重要的是,DeepWalk引入了深度学习图形的范式。

SkipGram方法用于学习网络中节点的表示。然后按照SkipGram的思路,最重要的是定义上下文,也就是邻域。?在NLP中,邻域是当前单词周围的单词。本文使用随机游走来获得图或网络中节点的邻域。

(1)随机游走随机均匀选择网络节点,生成固定长度的随机游走序列。将这个序列比作自然语言中的一个句子(节点序列=句子,序列中的节点=句子中的单词),使用skip-gram模型来学习节点的分布式表示。

(2)前提:如果一个网络的节点服从幂律分布,那么随机游走序列中节点的出现次数也服从幂律分布,发现NLP中的词频也服从幂律分布。

预测上下文节点)-输出:演示

Node2vec在DW的基础上定义了一个偏向随机游走的策略生成序列,仍然使用skip gram进行训练。

本文对BFS和DFS进行了分析,保留的网络结构信息是不同的。在DeepWalk中,根据边的权重进行随机行走,而node2vec增加了一个权重调整参数α: T为最后一个节点,V为最新节点,X为候选下一个节点。D(t,x)是从t到候选节点的最小跳数。通过设置不同的P和Q参数,可以保存不同的信息。当p和q都是1.0时,相当于DeepWalk。

使用SkipGram方法提取网络的表示。那么,自然,按照SkipGram的思路,最重要的是定义这个语境,或者说邻域。?从文本上看,这个邻域当然是当前词周围的词,这个定义很自然。但是对于图形或者网络来说就没那么容易了。

(1)首先区分两个概念:

一阶相似度:直接相连的节点,如6和7。

节点vi和vj之间的联合概率被定义为

v代表节点,u代表节点的嵌入。上式的意思是两个节点越相似,内积越大,sigmoid映射后的值越大,也就是这两个节点之间的连接的权重越大,也就是这两个节点之间发生的概率越大?。

二阶相似度:由其他中间节点连接的节点之间,如5和6。

使用条件概率

(2)目标是保持NRL前后节点的相似度不变,即如果学习前两个节点相似,那么嵌入后的两个节点也应该有相似的表示向量。本文使用-KL散度来度量两个概率分布之间的距离。

以保证其一阶相似性为例:

嵌入前;节点vi和vj之间的经验联合概率为

因此,尽量减少:

前面已经提到了很多GE模型,从经典方法到只考虑结构的模型,到考虑节点和变量额外信息的模型,到深度模型。大家可能会眼花缭乱,不知道实际应该用哪个模型。

我在这里提一下,你选择的模型必须和你的实际问题有关:

1.比如你的问题比较注重内容相似度(局部邻域相似度),那么你可以选择node2vec、LINE、GraRep等。

2.如果你的问题更注重结构相似性,可以选择struc2vec。这里可以简单说一下为什么struc2vec在蚂蚁金服风控模型中比node2vec有质的提升。这是因为在风控领域,你的可信并不代表你的邻居可信(有些“大V”节点有很多邻居),一个直观的感觉是,如果两个人在图中的位置差不多(比如两个“大V”)

3.再者,如果你的模型需要考虑节点和边的附加信息,那么你可以选择凯恩、CENE、跨网等。

4.如果要处理大规模的变量图,可以用Graphage,或者先用其他的ge方法,再用Graphage进行归纳学习;

如果想对模型进行微调,可以选择GraphGAN;

你甚至可以选择很多GE方法,聚合嵌入向量,比如concat。

作为知识图谱的经典方法之一,图嵌入被广泛应用。如今,国内外的互联网搜索引擎公司已经意识到知识地图的战略意义,纷纷建设知识地图,如Google知识图谱、百度知心、搜狗知识魔方等,以提高搜索质量。知识地图对搜索引擎的形式产生了越来越重要的影响。

了解更多知识图谱和图嵌入干货,锁定8月20日周四下午14:00公开课!