几种常见的Graph Embedding方法

图(Graph)是一个常见的数据结构,现实世界中有很多很多任务可以抽象成图问题,比如社交网络,蛋白体结构,交通路网数据,以及很火的知识图谱等,甚至规则网络结构数据(如图像,视频等)也是图数据的一种特殊形式。针对graph的研究可以分成三类:1.简单的graph算法:如生成树算法,最短路算法,复杂一点的二分图匹配,费用流问题等等;2.概率图模型:将条件概率表达为图结构,并进一步挖掘,典型的有条件随机场等;3.图神经网络:研究图结构数据挖掘的问题,典型的有graph embedding,graph CNN等。

总览

在介绍Graph Embedding之前,我们先回顾什么是Embedding?Embedding在数学上是一个函数,将一个空间的点映射到另一个空间,通常是从高维抽象的空间映射到低维的具象空间。Embeding的意义将高维数据转换到低维利于算法的处理;同时解决one-hot向量长度随样本的变化而变化,以及无法表示两个实体之间的相关性这一问题。

最常见的embeding方法是word2vec,根据语料库中单词的共现关系求出每个单词的embedding,常用的word2vec模型有cbow和skip-gram两种,cbow根据上下文预测中心词,skip-gram根据中心词预测上下文(详见word2vec 中的数学原理详解)。因此既然自然语言中的单词可以通过共现关系进行embedding,那么将graph类比成整个语料库,图中的节点类比成单词,我们是否也可以通过共现关系对graph中的node进行embedding?对于word2vec而言,语料库中的每个句子都可以描述单词之间的共现,对于graph,这种共现关系如何描述呢?接下来我们将对多种不同的graph embedding方式进行展开。

Graph Embedding

由于信息网络可能包含数十亿个节点和边缘,因此在整个网络上执行复杂的推理过程可能会非常棘手。因此有人提出了用于解决该问题的一种方法是网络嵌入(Network Embedding)。NE 的中心思想就是找到一种映射函数,该函数将网络中的每个节点转换为低维度的潜在表示

总的来说,NE 具有如下几个特征: 

适应性(Adaptability)- 现实的网络在不断发展;新的应用算法不应该要求不断地重复学习过程。 

可扩展性(Scalability)- 真实网络本质上通常很大,因此网络嵌入算法应该能够在短时间内处理大规模网络。 

社区感知(Community aware)- 潜在表示之间的距离应表示用于评估网络的相应成员之间的相似性的度量。这就要求同质网络能够泛化。 

低维(Low dimensional)- 当标记数据稀缺时,低维模型更好地推广并加速收敛和推理。 

持续(Continuous)- 需要潜在的表示来模拟连续空间中的部分社区成员资格。 

一个典型的例子就是 DeepWalk。其学习 Zachary’s Karate network 网络中的拓扑结构信息并转换成一个二维的潜在表示(latent representation)。

图嵌入,即用一个低维,稠密的向量去表示图中的点,该向量表示能反映图中的结构,本质上就是说,两个点其共享的(n阶)邻近点越多,即两个点的上下文越相似,两个对应向量距离越近。而图嵌入的最大好处自然是得到的向量表示可以输入任何的机器学习模型去解决具体面对的问题。同时对比一些传统的方法有对应的优势,比如基于矩阵分解(MF)的方法计算量太大;构造人工特征需要领域知识和较大的工作量。

图嵌入可用于推荐,节点分类,链接预测(link prediction),可视化等场景

Network Embedding 简史 

传统意义上的 Graph Embedding 被看成是一个降维的过程,而主要的方法包括主成分分析(PCA)和多维缩放(MDS)。所有的方法都可以理解成运用一个 n × k 的矩阵来表示原始的 n × m 矩阵,其中 k << n。

在 2000 年代早期,又提出了其他方法,如 IsoMap 和 LLE,以保持非线性流形的整体结构。总的来说,这些方法都在小型网络上提供了良好的性能。 然而这些方法的时间复杂性至少是二次的,这使得它们无法在大规模网络上运行。

另一类流行的降维技术使用可从图中导出的矩阵的光谱特性(例如,特征向量)来嵌入图的节点。拉普拉斯特征映射(Laplacian eigenmaps)通过与其k个最小非平凡特征值相关联的特征向量表示图中的每个节点。 

Deep Learning 

DeepWalk [1] 是第一个被提出来使用表示学习(或深度学习)社区的技术的网络嵌入方法。DeepWalk 通过将节点视为单词并生成短随机游走作为句子来弥补网络嵌入和单词嵌入之间的差距。然后,可以将诸如 Skip-gram 之类的神经语言模型应用于这些随机游走以获得网络嵌入。

DeepWalk 的优点可以概括为:首先其可以按需生成随机游走。由于 Skip-gram 模型也针对每个样本进行了优化,因此随机游走和 Skip-gram 的组合使 DeepWalk 成为在线算法。其次,DeepWalk 是可扩展的,生成随机游走和优化 Skip-gram 模型的过程都是高效且平凡的并行化。最重要的是,DeepWalk 引入了深度学习图形的范例

Unsupervised Network Embeddings

1.deepwalk

Deepwalk[2014] : DeepWalk: online learning of social representations

2.node2vec(Scalable Feature Learning for Networks)

node2vec在DW的基础上,定义了一个bias random walk的策略生成序列,仍然用skip gram去训练。

论文分析了BFS和DFS两种游走方式,保留的网络结构信息是不一样的。 DeepWalk中根据边的权重进行随机游走,而node2vec加了一个权重调整参数α:t是上一个节点,v是最新节点,x是候选下一个节点。d(t,x)是t到候选节点的最小跳数。 通过不同的p和q参数设置,来达到保留不同信息的目的。当p和q都是1.0的时候,它等价于DeepWalk。

这篇文章来自于Jure Leskovec的组。文章所提出的方法软件实现

文章的主要想法就是,利用SkipGram的方法,来为Networks抽取Representation。那么,自然,根据SkipGram的思路,最重要的就是定义这个Context,或者说是Neighborhood。​从文本的角度来说,这个Neighborhood当然就是当前Word周围的字,这个定义非常自然。但是对于Graph或者Network来说就来得没那么容易了。

文章阐述了一般所采用Depth-First Search或者是Breadth-First Search来Sample一个Node的周边Node的问题。简单来说,BFS比较容易有一个Microscopic的View而DFS容易有一个Macro-view,两者都有Representative的问题。

文章的核心思想是采用Random Walk来代替DFS或者BFS。文章定义了一种二阶的Random Walk,拥有两个参数,来控制多大的概率反复经过一些Node和控制所谓的Inward和Outward。总之,整个Random Walk的目的就是在DFS和BFS之间采取某种平衡。

文章虽然提出的是关于Node Feature提取的算法,但是Edge Feature也可以很容易从Node Feature导出。

总体感觉是,硬要用SkipGram或者WordVec的想法在Networks上做,还显得比较牵强。因为有这个Neighborhood的概念,在Graph上,反而不是那么直观得定义,因此所有类似的工作都显得比较别扭。当然,这篇文章也不失为一种不错的Heuristic。​​​​​

具体应用可以参考腾讯lookalike算法。

3.

猜你喜欢

转载自blog.csdn.net/Super_Json/article/details/83589889