对DeepWalk的理解

article/2025/10/21 20:10:08

DeepWalk的理解

如今我们都处于大数据时代,同时我们也身处于各个网络当中,列如通信网络,交通网络等等。我们如何将网络中的信息用我们计算机能懂的方式展现出来,这就是网络表示。而deepwalk主要是用来表示网络的一种方式,让网络能够方便我们的模型进行学习。类似的方法还有很多比如line,node2vec等等

Deepwalk的主要算法

DeepWalk的伪代码
Skip-gram的伪代码
如以上图片所示,deepwalk主要是利用了自己的随机游走的方法在与word2vec中的skip-gram方法相结合,而skip-gram是2013年的word2vec中的主要方法,其中还有一种高效的训练方法叫做负采样方法(Negative Sampling)

随机游走

随机行走被用作各种问题的相似性度量。它们也是一类输出敏感算法的基础,这些算法利用它们来计算局部的社区结构信息,其时间线性小于输入图的大小正是这种与局部结构的联系促使我们使用短随机游动流作为从网络中提取信息的基本工具。除了捕获社区信息外,使用随机游动作为我们算法的基础,还提供了另外两个需要的特性。首先,本地勘探很容易并行化。几个随机漫游者(在不同的线程、进程或机器中)可以同时探索同一图的不同部分。其次,依靠从短随机游动中获得的信息,可以适应图结构中的小变化,而不需要全局重新计算。我们可以用新的随机游动从时间亚线性的变化区域迭代更新到整个图。

def build_deepwalk_corpus(G, num_paths, path_length, alpha=0,rand=random.Random(0)):walks = []nodes = list(G.nodes())for cnt in range(num_paths):rand.shuffle(nodes)for node in nodes:walks.append(G.random_walk(path_length, rand=rand, alpha=alpha, start=node))return walks

如上图所示,在建立深度游走前首先需要获得随机游走的队列,所以将图中所拥有的节点带入随机游走中进行计算,然后将返回的序列添加到walk当中。

 def random_walk(self, path_length, alpha=0, rand=random.Random(), start=None):""" Returns a truncated random walk.path_length: Length of the random walk.alpha: probability of restarts.start: the start node of the random walk."""G = selfif start:path = [start]else:# Sampling is uniform w.r.t V, and not w.r.t Epath = [rand.choice(list(G.keys()))]while len(path) < path_length:cur = path[-1]if len(G[cur]) > 0:if rand.random() >= alpha:path.append(rand.choice(G[cur]))else:path.append(path[0])else:breakreturn [str(node) for node in path]

如上图所示,程序获得局部变量node,然后根据随机游走的长度进行随机游走,随机过程主要是利用random生成一个随机数让它和0进行比较,如果结果大于0,就在他的邻居节点当中进行一个随机choice选取随机邻居,如果结果小于0就选取它自身加入随机游走的序列。

  print("Number of nodes: {}".format(len(G.nodes())))num_walks = len(G.nodes()) * args.number_walksprint("Number of walks: {}".format(num_walks))data_size = num_walks * args.walk_lengthprint("Data size (walks*length): {}".format(data_size))if data_size < args.max_memory_data_size:print("Walking...")walks = graph.build_deepwalk_corpus(G, num_paths=args.number_walks,path_length=args.walk_length, alpha=0, rand=random.Random(args.seed))print("Training...")model = Word2Vec(walks, size=args.representation_size, window=args.window_size, min_count=0, sg=1, hs=1, workers=args.workers)

通过上面的两段代码,我们成功得到了随机游走产生的序列,然后我们将序列带入word2vec当中进行一个训练。

Word2vec的理解

word2vec主要是用于NLP当中进行语言处理的,它主要有两种方式一个是skip-gram利用中心词预测周围的邻近词,还有一个是Continuous Bag-of-Word Model,利用邻近词预测中心词,接下来我将从这两个模型对word2vec进行理解

Skip-gram模型

Skip-gram模型
如上图所示,skip-gram模型是利用中心词预测邻近词的模型,我们可以首先将中心词进行一个one-hot编码,one-hot编码就是将单词用0,1表示出来,例如我爱你的我可以表示为100,爱为010,你为001。我们类似的将我们需要处理的内容进行一个one-hot编码后进行带入。首先回进行一个降维的操作,就是将用one-hot编码表示的词与一个V*N的矩阵相乘,其中N<V,一般取128或300。这样我们就得到了维度为N的隐藏层,且隐藏层也不需要激活。然后我们再将隐藏层乘以一个N ∗ * V的转移矩阵得到输出层,然后需将输出层进行一个softmax。
skip-gram
如上图公式所示,skip-gram是利用中心词预测邻近词的模型,故求的是在wt为中心词的条件下他的邻近词为wt+j的概率,其中m是滑动窗口大小。这里利用了极大似然估计,我们假设每一个词成为中心词的概率是一样的,所以我们将这些概率进行了一个连乘。而我们的目的是要让这个公式实现概率最大化。
最小化损失函数
如上图所示,我们最大化公式1的概率就可以等价为最小化这个loss函数,而我们的输出层是经过了softmax的,所以
输出层函数
上图是一个进行了softmax的输出层函数,我们现在需要把他带入进行求导,从而使得损失函数最小化。其中o表示邻近词,c表示中心词。
带入公式求导
如上图所示,我们将P带入公式求导可以得出以上公式,且我们发现要让函数最小化我们的时间复杂度和我们的V有关,但是一旦我们有许多词向量的话,这个复杂度是相当高的,所以我们需要对它进行优化。

连续词袋模型cbow

连续词袋模型其实和skip-gram类似,只不过它是根据邻近词对中心词进行预测,它所对应的模型是
cbow
我们将多个邻近词和一个V*N的转移矩阵相乘,得到从而得到多个N维的向量,这里需要注意的是我们把这多个向量进行了一个sum然后求平均,而不是把他们拼接在一起。
cbow公式
如上图所示,我们可以得到连续词袋模型的公式。即在邻近词的条件下,得到的中心词概率。
cbow损失函数
如上图所示,我们需要最小化损失函数。
softmax
如之前所描述的那样,我们是对它的向量进行了一个求和再取平均,从而他的向量表示需要除以2m,其中m是窗口大小。
进行求导
我们很容易对它进行求导,然后我们可以看出cbow模型的时间复杂度也是和我们的V相关,当语料库很大时这是十分不好的。

负采样(Negative Sampling)

正如之前所说,虽然每个模型都能进行优化,但是它所需要的时间复杂度过高,所以我们需要对它进行优化,因此word2vec论文提出了负采样的优化方法。就是通过噪声词的加入从而对复杂度进行优化。简单来说就是将中心词wc生成背景词wo用一下两个相互独立的事件联合组成来近似。
1.即中心词wc和背景词wo同时出现在该训练窗口
2.即中心词和第K个噪声词不同时出现在训练窗口
同时出现
如上图所示,我们表现的是背景词和中心词同时出现在训练窗口的概率,并用sigmod函数进行表示。
联合概率
如上图所示,表示的是背景词和中心词同时出现并且噪声词和中心词不同时出现的概率,此概率即等价为在中心词为wc的时候邻近词为wo的概率。
带入公式
带入公式
如上图所示,我们需要最小化此函数。类似的连续词袋模型公式如下
词袋模型
从以上公式可以看出,我们已经成功地将复杂度从O(V)下降到了O(K),从而实现了训练优化。

层序softmax

层序softmax主要是利用了二叉树帮助我们进行计算
二叉树模型

其中的概率公式如下图所示
层序softmax公式
即判断当前节点的下一个节点是不是左孩子节点,如果是的话就设为1不是则设为-1,一次类推
w3公式
词向量详解链接(B站大佬): B站词向量
DeepWalk论文链接: DeepWalk
Word2vec论文链接:Word2vec


http://chatgpt.dhexx.cn/article/i69vXMWd.shtml

相关文章

KDD 2014 | DeepWalk: 社会表征的在线学习

目录 前言Abstract1.Introduction2.Problem Definition3.Learning Social Representations3.1 Random Walks3.2 Connection: Power laws3.3 Language Modeling 4.Method4.1 Overview4.2 Algorithm&#xff1a;DeepWalk4.2.1 Skip-Gram4.2.2 Hierarchical Softmax4.2.3 Optimiza…

DeepWalk

原文 《DeepWalk: Online Learning of Social Representations》 亮点 In this paper we introduce deep learning (unsupervised feature learning) techniques, which have proven successful in natural language processing, into network analysis for the first time.…

【论文精读实战】DeepWalk: Online Learning of Social Representations

DeepWalk: Online Learning of Social Representations 本文是我参加Datawhale的CS224W图机器学习时的笔记&#xff0c;第一次学习图机器学习&#xff0c;对DeepWalk这篇开山之作的理解。 论文的三位作者均来自纽约州立大学石溪分校&#xff0c;杨振宁和丘成桐也曾在此教学。 …

Deepwalk深度游走算法

主要思想 Deepwalk是一种将随机游走和word2vec两种算法相结合的图结构数据的挖掘算法。该算法可以学习网络的隐藏信息&#xff0c;能够将图中的节点表示为一个包含潜在信息的向量&#xff0c; Deepwalk算法 该算法主要分为随机游走和生成表示向量两个部分&#xff0c;首先…

DeepWalk阅读笔记

DeepWalk是一种学习网络中节点的表示的新的方法&#xff0c;是把language modeling的方法用在了social network里面&#xff0c;从而可以用deep learning的方法&#xff0c;不仅能表示节点&#xff0c;还能表示出节点之间的拓扑关系&#xff0c;也就是表现出社会网络的社会关系…

论文阅读|DeepWalk: Online Learning of Social Representations

论文阅读|DeepWalk: Online Learning of Social Representations 文章目录 论文阅读|DeepWalk: Online Learning of Social RepresentationsAbstractIntroductionProblem DefinitionLearning Social RepresentationsMethod实验设置Related Work我的看法参考资料 Abstract Deep…

大致了解一下DeepWalk

大致了解一下DeepWalk 讲到DeepWalk&#xff0c;不得不说的Word2VecCBOW模型CBOW模型的理解CBOW模型流程举例 Skip-Gram模型模型假任务模型细节隐层输出层直觉下一步 一些常用的trick词组降采样常用词采样率Negative Sampling选择 negative samples DeepWalk步骤相关算法 转载于…

[论文阅读] (25) 向量表征经典之DeepWalk:从Word2vec到DeepWalk,再到Asm2vec和Log2vec(二)

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提升&#xff0c;所以还请大家批评指正&#xff0c;非常欢迎大家给我留言评论&#xff0c;学术路上期…

DeepWalk论文详解

DeepWalk算法报告 Deepwalk是网络表示学习的经典算法之一&#xff0c;是用来学习网络中顶点的向量表示&#xff08;学习学习图的结构特征即属性&#xff0c;并且属性个数为向量的维数&#xff09;。 该算法通过截断随机游走学习出一个网络的社会表示&#xff0c;输入是一张图…

DeepWalk原理理解:DeepWalk: online learning of social representations

文献&#xff1a;DeepWalk: online learning of social representations 对比阅读了几篇关于网络表示学习的文献&#xff0c;其中一篇包括DeepWalk的提出&#xff0c;下面将自己对于论文的理解和论文的笔记组织好记录下来。 deep walk 的提出是针对网络表示学习的稀疏性提出来…

DeepWalk模型的简介与优缺点

1、DeepWalk [DeepWalk] DeepWalk- Online Learning of Social Representations (SBU 2014) word2vec是基于序列进行embedding&#xff1b;但是&#xff0c;实际上实体之间的关系越来越复杂化、网络化。这个时候sequence embedding------>graph embedding。 图的定义&…

[论文阅读] (24) 向量表征:从Word2vec和Doc2vec到Deepwalk和Graph2vec,再到Asm2vec和Log2vec(一)

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提升&#xff0c;所以还请大家批评指正&#xff0c;非常欢迎大家给我留言评论&#xff0c;学术路上期…

PyG基于DeepWalk实现节点分类及其可视化

文章目录 前言一、导入相关库二、加载Cora数据集三、定义DeepWalk四、可视化完整代码前言 大家好,我是阿光。 本专栏整理了《图神经网络代码实战》,内包含了不同图神经网络的相关代码实现(PyG以及自实现),理论与实践相结合,如GCN、GAT、GraphSAGE等经典图网络,每一个代…

【图嵌入】DeepWalk原理与代码实战

DeepWalk 基础理论 了解过 NLP 的同学对 word2vec 应该不陌生&#xff0c;word2vec 通过句子中词与词之间的共现关系来学习词的向量表示&#xff0c;如果你忘记了&#xff0c;可以看看我之前的博客&#xff1a; 【word2vec】篇一&#xff1a;理解词向量、CBOW与Skip-Gram等知…

DeepWalk算法(个人理解)

DeepWalk 什么是网络嵌入 将网络中的点用一个低维的向量表示&#xff0c;并且这些向量要能反应原先网络的某些特性。 一种网络嵌入的方法叫DeepWalk&#xff0c;它的输入是一张图或者网络&#xff0c;输出为网络中顶点的向量表示。DeepWalk通过截断随机游走(truncated rando…

deepwalk详解

目录 1. 算法思想2. 随机游走3. 如何把随机游走中得到的信息用来点表示学习&#xff1f;4.适用场景5. 不足和改进 1. 算法思想 源于word2vec,word2vec通过语料库中的句子序列来描述词与词的共现关系&#xff0c;进而学习到词语的向量表示。deepwalk则使用图中节点与节点的共现…

论文|DeepWalk的算法原理、代码实现和应用说明

万物皆可Embedding系列会结合论文和实践经验进行介绍&#xff0c;前期主要集中在论文中&#xff0c;后期会加入实践经验和案例&#xff0c;目前已更新&#xff1a; 万物皆可Vector之语言模型&#xff1a;从N-Gram到NNLM、RNNLM万物皆可Vector之Word2vec&#xff1a;2个模型、2…

泛运筹理论初探——DeepWalk算法简介

图论-图论算法之DeepWalk Graph-Embedding和DeepWalk算法 在之前的图算法介绍里&#xff0c;我们探讨了部分比较简单和经典的图算法&#xff0c;比如PageRank、最短路径、深度优先搜索等方法。在某些场景&#xff0c;之前介绍的一些算法虽然很经典&#xff0c;逻辑很清晰&…

推荐系统中的常用算法——DeepWalk算法

1. 概述 DeepWalk算法是在KDD2014中提出的算法&#xff0c;最初应用在图表示&#xff08;Graph Embedding&#xff09;方向&#xff0c;由于在推荐系统中&#xff0c;用户的行为数据固然的可以表示成图的形式&#xff0c;如下图所示&#xff1a; 通过Graph Embedding得到图中每…

DeepWalk(深度游走)算法

整理自&#xff1a; Deepwalk(深度游走)算法简介_Mr.Cheng1996的博客-CSDN博客 【论文笔记】DeepWalk - 知乎 DeepWalk是一种将随机游走(random walk)和word2vec两种算法相结合的图结构数据挖掘算法。该算法能够学习网络的隐藏信息&#xff0c;能够将图中的节点表示为一个包…