Graph Embedding和 word2vec嵌入的关系

几种常见的Graph Embedding方法_RecDay2018's Blog-CSDN博客_edge embedding图(Graph)是一个常见的数据结构,现实世界中有很多很多任务可以抽象成图问题,比如社交网络,蛋白体结构,交通路网数据,以及很火的知识图谱等,甚至规则网络结构数据(如图像,视频等)也是图数据的一种特殊形式。针对graph的研究可以分成三类:1.简单的graph算法:如生成树算法,最短路算法,复杂一点的二分图匹配,费用流问题等等;2.概率图模型:将条件概率表达为图结构,并进一步挖掘,典型的有条件随...https://blog.csdn.net/Super_Json/article/details/83589889深度学习中不得不学的Graph Embedding方法 - 知乎这里是 「王喆的机器学习笔记」的第十四篇文章,之前已经有无数同学让我介绍一下Graph Embedding,我想主要有两个原因:一是因为Graph Embedding是推荐系统、计算广告领域最近非常流行的做法,是从word2vec等一路…https://zhuanlan.zhihu.com/p/64200072embedding的方法有很多,而且不同的数据结构也有对应的不同embedding方法。但是当你细看这些算法之间的关系时,你会发现有些算法是基础或基石,其他的算法就是在这些基石算法之上封装或拼接了其他处理算法,使之能够适应不同的数据结构或场景。

就比如Graph Embedding图嵌入算法中的DeepWalk 本质上是使用了word2vec嵌入算法,为了使图结构数据适用NLP短语文本数据结构而加入了随机游走算法。node2vec也是类似的思想。

理解到了算法之间的这层关系,那么对于系统的掌握embedding算法、算法间关系、在不同数据结构上的应用及其发展就非常有帮助了。本文的主要目的就是揭示了这种关系。


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

Graph Embedding

Graph Embedding 的中心思想就是找到一种映射函数,该函数将网络中的每个节点转换为低维度的潜在表示。利于计算存储,不用再手动提特征(自适应性),下图是graph embeding的几种常见分类

DeepWalk

DeepWalk 通过将节点视为单词并生成短随机游走作为句子来弥补网络嵌入和单词嵌入之间的差距。然后,可以将诸如 Skip-gram 之类的神经语言模型应用于这些随机游走以获得网络嵌入。其优点是首先其可以按需生成随机游走。由于 Skip-gram 模型也针对每个样本进行了优化,因此随机游走和 Skip-gram 的组合使 DeepWalk 成为在线算法。其次,DeepWalk 是可扩展的,生成随机游走和优化 Skip-gram 模型的过程都是高效且平凡的并行化。最重要的是,DeepWalk 引入了深度学习图形的范例。

  用SkipGram的方法进行网络中节点的表示学习。那么,根据SkipGram的思路,最重要的就是定义Context,也就是Neighborhood。​NLP中,Neighborhood是当前Word周围的字,本文用随机游走得到Graph或者Network中节点的Neighborhood。

(1)随机游走随机均匀地选取网络节点,并生成固定长度的随机游走序列,将此序列类比为自然语言中的句子(节点序列=句子,序列中的节点=句子中的单词),应用skip-gram模型学习节点的分布式表示,skip-gram模型详见:http://blog.csdn.net/u013527419/article/details/74129996
(2)前提:如果一个网络的节点服从幂律分布,那么节点在随机游走序列中的出现次数也服从幂律分布,并且实证发现NLP中单词的出现频率也服从幂律分布。

Network/graph ---------random walk ---------得到节点序列(representation mapping)-------- 放到skip-gram模型中(中间节点预测上下        文节点)--------- output:representation

​​​​​​​

node2vec

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。​​​​​
 

Graph Embedding(图嵌入)和Graph Neural Network(图神经网络)是两种不同的方法用于处理图数据。 Graph Embedding是指将图数据中的节点和边转化为低维向量表示的过程。它的目的是通过学习节点和边的向量表示,将图数据转化为高效且可用于机器学习算法的数值特征。Graph Embedding可以通过多种方式来实现,如DeepWalk、Node2Vec、Line等。它们通常是基于节点之间的邻近关系来学习节点的向量表示,即节点的向量表示尽可能地保留与其邻居节点的相似性。Graph Embedding可以用于图数据的聚类、相似度计算、可视化等任务。 Graph Neural Network是一种基于神经网络的模型,专门用于处理图结构化数据。GNN模型可以通过学习节点的向量表示,并利用节点之间的关系进行信息传递和更新。GNN通过定义节点的邻居节点和自身的聚合函数,将节点信息进行传递和更新。GNN的核心思想是通过多次迭代聚合节点的邻居信息,最终获取节点的全局信息。GNN可以进行节点分类、图分类、链接预测等任务。 因此,Graph EmbeddingGraph Neural Network有一些区别。Graph Embedding是一种将图数据转化为低维向量的过程,而GNN是一种通过学习图结构信息进行节点特征传递和更新的模型。Graph Embedding在表示学习上更加注重将节点和边的信息转化为向量形式,而GNN在聚合和传递信息时更加注重节点之间的相互影响。两者可以结合使用,将Graph Embedding的低维向量作为GNN的输入,进一步提高图数据的表示和处理能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值