DeepWalk论文精读
原文链接:DeepWalk: Online Learning of Social Representations
手动防爬虫,作者优快云:总是重复名字我很烦啊,联系邮箱daledeng123@163.com
阅读前的建议
对Word2Vec和自然语言处理词嵌入过程有一定的了解,如果之前不了解,直接阅读我的系列文章NLP从零开始直到编码部分内容结束。
背景知识
DeepWalk诞生背景和想要解决的问题
在DeepWalk诞生之前,往往是通过人工干预,创造的特征工程来进行图机器学习,在这种情况下面临两个问题:
(1)特征工程的好坏决定模型的好坏。并且特征工程并没有统一的标准,对于不同的数据集所需要做的特征工程是不一样的,因此图数据挖掘的模型的稳定性并不好。
(2)人工特征工程无非关注节点信息、边信息、图信息,且不论是否全部关注到,假设可以做到所有信息全部兼顾(实际上不可能)这样近乎完美的特征工程,但是节点的多模态属性信息无法得到关注。这意味着,即使是完美的特征工程,仍然只能兼顾到有限信息,数据挖掘的深度被严重限制。
DeepWalk想要通过这么一种算法,把图中每一个节点编码成一个D维向量(embedding过程),这是一个无监督学习。同时,embedding的信息包含了图中节点、连接、图结构等所有信息,用于下游监督学习任务。
为什么可以借鉴NLP里面的方法?
图数据是一种具有拓扑结构的序列数据。既然是序列数据,那么就可以用序列数据的处理方式。这里所谓的序列数据是指,图网络总是具有一定的指向性和关联性,例如从磨子桥到火车南站,就可以乘坐3号线在省体育馆转1号线,再到火车南站,也可以在四川大学西门坐8号线转。这都是具备指向关系。那么,我们把“磨子桥-省体育馆-倪家桥-桐梓林-火车南站”就看作是一个序列。当然,这个序列是不唯一的,我们可以“四川大学望江校区-倪家桥-桐梓林-火车南站”。也可以再绕大一圈,坐7号线。总之,在不限制最短路径的前提下,我们从一个点出发到另外一个点,有无数种可能性,这些可能性构成的指向网络,等价于一个NLP中的序列,并且在这个图序列中,相邻节点同样具备文本信息类似的相关性。
Embedding编码应该具有什么样的特性?
在前文已经有过类似的一句话,embedding的信息包含了图中节点、连接、图结构等所有信息,用于下游监督学习任务。 其实这个更是一个思想,具体而言,在NLP领域中,我们希望对文本信息,甚至单词的编码,除了保留他单词的信息,还应该尽可能保留他在原文中的位置信息,语法信息,语境信息,上下文信息等。因为只有这个基向量足够强大,用这个向量训练的模型解码出来才能足够强大。例如这么两句话:
Sentence1:今天天气很好,我去打篮球,结果不小心把新买的水果14摔坏了,但是没关系,我买了保险,我可以免费修手机。
Sentence2:我今天去修手机。
很显然,第一句话包含的信息更多,我们能够更加清晰的理解到这个事件的来龙去脉。对计算机而言也是一样,只有输入的信息足够完整,才能有更好的输出可靠性。
放到图网络里,假设有两个节点u和v,他们在图空间的信息应该和在向量空间的信息保持一致,这就是embedding最核心的特征(假设u和v在图空间是邻接点,那么在向量空间他们也应该是距离相近的;如果八竿子打不着关系,那么在向量空间应该也是看不出太多联系)。把映射的向量放在二维空间或者更高维空间进行下游任务的设计,会比图本身更加直观,把图的问题转化成了不需要特征工程的传统机器学习或者深度学习问题。
什么是随机游走(Random Walk)
首先选择一个点,然后随机选择它的邻接节点,移动一步之后,再次选择移动后所在节点的邻接节点进行移动,重复这个过程。记录经过的节点,就构成了一个随机游走序列。
Question:为什么要随机游走?
Answer:一个网络图实际上可能是非常庞大的,通过无穷次采样的随机游走(实际上不可能无穷次),就可以”管中窥豹,可见一斑“。从无数个局部信息捕捉到整张图的信息。
Random Walk的假设和Word2Vec的假设保持一致,即当前节点应该是和周围节点存在联系。所以可以构造一个Word2Vec的skip-gram问题。

思考:
1、实际上这个Totally Random Walk并不是一个最优解,因为节点之间的权重不一样,实际上在游走的过程中可以加一些规则干预,让游走得到的序列看上去更有道理。但是DeepWalk是完全均匀随机游走的,Node2Vec在这方面做了改进,后续会看到。
2、由于计算量的限制,这个随机游走的长度并不是无限,所以对于一个巨大的网络,虽然管中窥豹可见一斑,但这也注定了当前位置和距离非常远的位置是完全无法构成任何联系信息的,这和Word2Vec的局限性是一致的,在图神经网络GCN中,解除了距离限制,好像Transformer解除了RNN的距离限制一样,极大释放了模型的潜力,后续也会讲到。
3、DeepWalk是一个非常成功的思想试验,但是它无法解决多模态的信息表达,因此没有真正踏入深度学习的蓝海,仍然是传统机器学习的向前优化迈出的伟大一步。
DeepWalk的整体流程
Step1: 输入一个图
Step2: 采样一个随机游走序列
Step3: 训练Node2Vec模型(构造skip-gram任务)
Step4: 霍夫曼编码(一种softmax方式,解决分类过多的问题,一种工程trick,并不算DeepWalk的理论核心)
Step5: 得到最终每个节点的图嵌入向量
因此DeepWalk一共有2个模型。其一是skip-gram的词嵌入模型,需要训练一个词嵌入表(skip-gram损失函数);其二是霍夫曼编码涉及到的每一个二叉树的权重参数(交叉熵损失函数)。
论文精读
Title and Authors

论文的题目是DeepWalk: Online Learning of Social Representations,用于图节点嵌入的在线表示学习算法。那么其实就有两个信息,一个是Online Learning,一个是Social Representations。
对于Online Learning的理解,个人认为应该是它已经训练好了一个embedding模型,如果有新增节点,只需要把新增节点再导入重新训练一下就行,不需要对整张图重新学习。
对于Social Representations,所谓表示学习,其实就是把图节点表示成向量投喂给后面的模型学习,也就是图节点嵌入的学习,也是一种机器学习(参考类似的embedding模型,属于是一类无监督学习)。
第二作者是早期深度学习框架Theano的作者之一,所以这篇文章能够借鉴到一些深度学习的思路也不奇怪啦。
Abstract

首先,文章说,这个DeepWalk算法,是常见统计模型的拓展。所谓统计模型,其实就是机器学习,统计了大量数据的分布情况和内在联系,构建了一个空间映射关系。所以作者也认为,DeepWalk也属于机器学习的拓展。
第二段第三段提到,DeepWalk是一个随机游走的方法去学习,这表示这个图嵌入的过程是机器学习得到的,而不是人工去设置特征,并且在稀疏矩阵的情况表现比其他常规的模型好很多(而统计模型其实最讨厌的就是稀疏矩阵,等于是迎难而上),此外还具备并行化的特点。
所以总而言之,DeepWalk想要做的,是一个表示学习的问题,它认为多模态数据无法直接导入统计机器学习进行分类或者其他下游任务,必须要把他们表示成向量的形式。并且利用它这个方法encoding出来的向量是一个非常强大的向量,用少的数据就可以达到之前模型的效果,并且在一些常规模型不好处理的场景下它具备优势。

Fig1是这篇论文最经典的一张图,属于是开幕暴击。首先它选择了空手道俱乐部的数据集,这个数据集的每个节点实际上有很多的信息,它通过一种聚类的方法把这个空手道俱乐部各个节点做了个分类并且用不同颜色表示出来。然后它用embedding的方法把这些节点表示成向量,并且绘制在了二维图表中,可以发现embedding出来的向量空间分布其实和真实数据分布是类似的。但是统计机器学习是可以学习向量数据的,就好像打破了次元壁,可以通过对向量的空间切割,把这些节点做一个分类,实现了图节点级别的操作朝向量级别操作可靠转移。
1. Introduction
Introduction还是会介绍一些背景的东西,好好阅读有助于我们理解这篇文章的创新到底在哪。

首先,作者说,图网络一般来说都是比较稀疏的,这种稀疏的特性有好处也有坏处,好处在于如果你想要做最短路径计算(用邻接矩阵)就非常方便;坏处在于如果你想用机器学习去做图信息的学习和挖掘,这会遇到不小的阻力,因为机器学习最怕的就是稀疏矩阵。文章认为在图网络的分类任务中,包括推荐,异常检测,连接预测之类的,都必须解决矩阵稀疏性的问题。
【拓展】我们在做机器学习的时候,最容易遇到过拟合的情况,因此在对模型进行优化的时候,我们通常是加入一个正则化在里面。正则化一般有L1正则和L2正则。通俗易懂的来讲,加入正则化项之后可以让模型出错的时候受到惩罚,迫使模型朝着正确的方向发展。实际上,正则化的加入在数据层面是使得学习矩阵变得稀疏,帮助模型进行更好的特征筛分。例如文本处理时,如果将一个词组作为一个特征,那么特征数量会达到上万个。在预测或分类时,那么多特征显然难以选择,但是如果代入这些特征得到的模型是一个稀疏模型,表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,或者贡献微小(因为它们前面的系数是0或者是很小的值,即使去掉对模型也没有什么影响),此时我们就可以只关注系数是非零值的特征。这就是稀疏模型与特征选择的关系。但是,如果模型本身就全是0,这个时候是明显欠拟合的,这意味着我们花费大量的计算资源开销去计算很多无关紧要的东西。因此,机器学习在原则只允许我们把稠密矩阵变的稀疏,而不允许我们直接利用稀疏矩阵。
然后,文章说可以借鉴NLP里面已经相当成功的word2vec方法,用一种随机游走的方法找到节点序列,把这个序列看作是NLP里文本序列,这样就可以把节点映射成一个连续稠密低维的向量空间。实际上这里的低维是相较于一言不合数十万几十万的节点数量而言,在使用的时候一般是映射成128 256 512维这样。

作者用异质图(heterpgenous graph)的分类任务来证明这个方法的潜力,异质图就是这个图的节点和边有很多类别,拳击俱乐部数据级是这样,或者电商数据,用户 商品 卖家这些节点也是不同类别。具体而言,作者在图中embedding了一些节点,然后用这些标注的数据来预测未标注的节点。
作者在这里还提出了这么做的一个关键好处。传统机器学习一般需要数据满足独立同分布假设,所谓独立同分布,就是数据和数据之间不存在关联,他们是独立存在的,例如房价,这个房子就是这个价格,他旁边的房子是另外的价格,这两个房价之间不存在互相影响的关系。但是对于图网络而言,节点之间相互连接,是不满足独立性假设的,并且同分布也无法论证。因此,机器学习直接学习节点在根本上来说是有巨大理论缺陷的。作者总结了DeepWalk之前人们通常用一种相似推理的技术做这样一件事情(言外之意就是我的DeepWalk来了你就歇菜了),然后作者用了一个及其猖狂的表达:We distance ourselves,意思就是,“我们觉得你们这些方法用来用去都是在一个思维怪圈里,你们没有找到最根本的突破口,我们根本不参与你们的这些讨论,我们直接用表示学习来做。”然后作者说DeepWalk是一个无监督学习,与节点的label无关,只和图的结构和节点连接信息有关。本质上这是因为他所有的计算都是基于随机游走序列做的,所以图的拓扑结构会得到极大表示。
在Introductio部分最后,文章说embedding之后接一个简单的线性分类器就可以完成分类任务,类似Fig1那样,并且提出了本文的三个贡献。主要是第一点,文章借鉴了深度学习表示学习的方法,用随机游走序列实现了词嵌入向量计算。第二点就是自卖自夸。第三点表示还做了一些改进,对于DeepWalk而言,无需知晓图的全貌,管中窥豹可见一斑就是对这个模型最大的诠释啦。
2. Problem definition
这里开始,除了要学习论文算法的思想,还需要学习实际问题的数学抽象表达。

首先,一个图最基本可以表示成节点和连接的关系,并且根据节点连接的关系可以写出一个邻接矩阵,由于每个节点有自己的特征和类别,所以图可以抽象成如下函数表达:
G = ( V , E , X , Y ) G=(V,E,X,Y) G=(V,E,X,Y)
这里存在两个大写的Y,为了区分,作者在表示所有节点labels信息集合时使用 Y Y Y,在表示每个节点对应的具体label使用 Y \mathcal Y Y。
接下来,作者介绍了传统机器学习实际上就是构建一个 H ( X ) → Y H(X) \rightarrow \mathcal Y H(X)→Y这样的映射关系,在图机器学习中,其实就是要充分学习节点的依赖关系。

作者接下来介绍了常见的图网络中关系分类或者集体分类方法。所谓关系分类或者集体分类,其实就是群体的多标签或者双标签分类任务,通过训练集训练一个标签预测模型,然后输出未标注数据的标签类别。由于前文说过,图的学习并不能直接使用传统机器学习的方法,因此在图节点关系的建模中,传统方法是通过一个无向马尔可夫链,迭代近似推理,配合吉布斯采样的一种方式。感兴趣的可以去了解一下吉布斯采样,这是专门服务于马尔可夫链的一种采样技巧。但是显然文章认为基于无向马尔可夫链的方式是有问题的,作者认为最大的问题在于马尔可夫链如果一步错,就会满盘皆属步步皆错,存在很大的错误积累风险。针对这样的问题,作者表示,可以不把标签和连接特征混合,只用embedding的信息表示拓扑结构和空间位置信息即可,这样等于把一步计算拆分成了两步,可以增加一定容错。
最后一段作者对这样一个说法进行了补充,完整的任务流程应是:获取Embedding Vector来表示结构特征,再融合节点的信息特征,最后输入一个简单模型完成分类任务。
3. Learning social representations
整个第三节其实也都是一些综述类的东西,让我们更好的理解他提出一些概念。

这一部分就是简单介绍了一下这个embedding应该具备什么样的特性。或者说,什么样的embedding才是好的embedding。那么作者给出了4个关键词。
1、灵活可变,适应能力强。这是因为图网络往往伴随着动态变化,如果我们对当前时刻训练出来的词嵌入模型只能对当前时刻有效,那么无时无刻更新的网络就没办法进行词嵌入编码了。因此,首先这个编码过程必须是一个训练好一个模型,然后来新的,就在旧模型基础上更新,无需对整张图进行重新学习。
2、社群信息,反应聚类关系。这点其实就和Fig1对应,即embedding出来的节点向量把他映射到空间部分时应该保持和原图网络相类似的空间信息。
3、低维度。由于他训练出来的是一个稠密的矩阵,即每一个数值都有一定的客观意义,因此如果维度过高,则会过量抽取图节点信息,低维度是为了避免过拟合。
4、连续。这一点说明embedding出来的节点向量在空间的分布应该有一个平滑的决策边界,我们进一步去说,应该是一个非凸、低维、平滑的决策边界。关于凹凸性,数学证明的过程非常繁琐,在数学推论部分会补充这部分的推论,这里直接说结论,凸函数是只要沿着梯度方向走到底,就一定是最优解,大部分传统机器学习的问题都是凸函数;非凸更符合实际的情况,意味着沿着梯度方向走到底,只能说明是局部最优,不一定是全局最优,大部分深度学习都是非凸。这里我想要强调非凸主要是给后续讲到图深度学习埋下一个伏笔。
3.1 Random Walks

第一段说的是随机游走的过程。当他走到Vn这个节点,想要走到下一个时,就在Vn节点的相邻节点随机选择一个作为下一个的目的地,并且V1,V2,…,Vn…这串节点序列被保存下来用作后续的学习输入。作者并不是第一个提出随机过程的人,因此他也说了一下随机过程算法的一些应用,包括在内容推荐和社群检测都有使用的先例。并且作者提到随机游走有两种方式,一种是遍历全图的,一种是不需要遍历全图的。DeepWalk就属于不需要遍历全图的。
第二段作者提出随机游走过程有两个好处。其一是可以并行化处理。文章的语言来解释,就是这个随机的过程可以同步进行,你走你的,我走我的,我们互不影响,我们都记录下各种遍历的节点序列就可以。其二就是对之前说过的在线增量学习做了更详细的解释,是一个sub-linear的过程,所谓sub-linear,就是当出现新增节点的时候,只需要对新增节点附近的子图做一个新的学习即可,不需要对全图进行全部重新学习。
3.2 Connection: Power laws

在3.2部分,文章再次把图和NLP进行了比较。文章说文本材料是符合幂律分布的。这里结合Fig2来看。

左侧是图网络的连接频率图,右图是维基百科文本信息的词频图。这两个在分布规律上是保持一致的。我们发现他的坐标轴都是科学计数法,因此我们把它改写成对数坐标轴,单词数为y,词频为x,那么这样的线性关系可以写成:
l n y = − k l n x + l n a lny=-klnx+lna lny=−klnx+lna
还原成普通表示:
y = a x − k y = ax^{-k} y=ax−k
这就是幂函数的表示方式,因此叫做幂律分布。
这个分布表示,小部分的节点拥有大部分的连接。这个也很好理解,举个具体的例子,假如这是一个门户网站的图,那么Google,baidu等是不是拥有绝大多数的访问量,一些小网站则鲜有访问。在文本中也是一样的道理,例如a the and这类词,他们出现的频率会远远大于power-law这种词汇。正是节点和文本有这种相似性,因此把NLP的编码思路套用在图编码中是存在可行性的。
3.3 Language Modeling
这部分其实主要就是介绍Word2Vec模型,并且把Word2Vec的似然估计放到了图中。

在这一节开始,作者说最开始语言模型的目标,就是构造一个似然函数来估计一句话的最大似然概率,也就是用前n个词去预测第n+1个词,这在自然语言处理部分叫做N-Gram模型,这个N就是前面多少个词。在NLP系列文章机械分词和隐马尔可夫链(HMM)部分有关于这个N-Gram的具体计算规则,感兴趣的可以点超链接去看看。
近年的一些表示学习的工作(主要就是Word2Vec和Glove)把这个语言模型的目标改变了。并且DeepWalk认为,可以用随机游走获得的节点序列前面i-1个节点去预测第i个节点,这样就和语言模型对应上了。但是和自然语言一样,我们不能用节点本身去预测,要用一个embedding成向量的输入模型。
最下面一段就是说如何进行这样一个过程。首先DeepWalk要提出一个 Φ \Phi Φ函数,这个函数其实就是一个向量Query表,里面是每一个节点V对应的向量d。我们在进行模型输入的时候,可以查询这个向量表找到这个节点的d维向量,然后用向量把他表示出来,这样预测节点的问题就变成了基于向量的联合概率模型。

在这种情况下(用i-1个节点预测i个节点,暂且叫他i-Node模型?吧),需要优化的目标函数变成了:
F = P (

DeepWalk是一种无监督学习算法,通过随机游走序列对图中的节点进行编码,将图数据转换为连续的低维向量表示。这种方法借鉴了NLP中的词嵌入思想,将图网络的结构信息和节点间的关联捕获到向量中,适用于下游的监督学习任务。随机游走序列模拟了图的局部结构,通过Skip-Gram模型训练得到节点的向量表示。文章强调了DeepWalk的灵活性、社群信息保留、低维度和连续性等特性,并探讨了其在大规模图数据上的并行处理能力。实验表明,DeepWalk在图分类等任务上表现出优于传统方法的性能。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



