Deepwalk: Online Learning of Social Representations
论文地址:[1403.6652] DeepWalk: Online Learning of Social Representations (arxiv.org)
摘要
本文提出一种学习网络中节点表示的新方法,DeepWalk。该表示能够将节点的社会关系编码到连续向量空间内,易于被各种统计模型使用。
DeepWalk 借用了最近语言模型和无监督学习中对单词序列处理的思路,将节点嵌入问题转为词嵌入问题。
DeepWalk 使用截断随机游走方法获取包含局部信息的路径,将其作为句子,并通过词嵌入模型学习节点嵌入。
本文将 DeepWalk 方法用在一些社交网络多标签分类任务上进行测试,如 BlogCatalog、Flickr、YouTube。结果显示该方法性能明显优于基准模型,特别是在部分信息缺失的情况下。
在标签数据稀疏的情况下,DeepWalk 的 F1 值比基准模型高 10% 以上。在仅使用 60% 数据时,DeepWalk 的性能甚至高于所有基准模型。
DeepWalk 方法是可伸缩的。它是一种在线学习算法,可以并行地构建增量结果。该特性使其可应用于一大批真实应用场景,如网络分类、异常检测。
简介
网络表示的稀疏性既是优点也是缺点。稀疏性使离散算法更高效,但却限制了统计学习方法的使用。机器学习方法在网络数据上的应用需要去除网络表示的稀疏性。
本文介绍一种深度学习(无监督特征学习)方法,该方法已经广泛应用于自然语言处理领域,现在首次将其应用到网络分析领域。
本文研究的 DeepWalk 算法能够基于随机游走得到的序列,学习图中节点社交信息表示。
节点社交信息表示是指能够包含节点邻居相似度和社群关系的向量表示。该表示能将社交关系编码到低维度连续向量空间。
DeepWalk 将处理语言序列的神经网络模型泛化到随机生成的路径序列上,该神经网络模型原本用于捕获自然语言中的语法结构和语义信息。
DeepWalk 接收一个图做输入,产生向量表示做输出。将该方法用于著名的 Karate 网络的结果如图所示。左图为该图的强连通布局,右图为该方法输出的 2 维特征表示。
可以看到两个图有惊人的相似性,还可以看到在数值向量空间中的线性划分结果,能够表示社区结构,即拓扑图中的模块度划分。
为了展示真实场景中 DeepWalk 的潜力,我们计算了该模型在解决大规模异构图上多标签网络分类问题的性能。在关系分类问题上,两特征向量之间的关系违反传统 i.i.d. 假设。
处理上述问题的传统方法是估计推断技术,通过减少信息依赖来提升分类结果质量。而我们的方法是学习图中节点的特征表示,该表示本身就是互不依赖的,即表示的质量不受标签的选择影响,因此可用于所有任务。
DeepWalk 创建了社交关系维度,因此其表示效果强与其他方法,尤其在标签节点稀缺的情况下。基于 DeepWalk 的向量表示,使用简单的线性分类器也可以具有很好的效果。该向量表示是通用的,可以和任何分类方法结合。同时 DeepWalk 也具有在线算法的并行化能力。
本文的贡献如下:
-
我们提出了一种对图数据分析的深度学习方法,可以生成强健的向量表示,适用于统计模型。DeepWalk 通过简短的随机游走来学习结构规律。
-
我们在多个基于社交网络的多标签分类任务上测试了我们的向量表示,发现在标签稀少的情况下,分类性能显著提升 5%-10%,而在只使用少于 60% 训练数据的情况下,分类性能甚至大于所有基准算法。
-
我们使用并行实现方式,演示了构建向量表示算法的伸缩性。然后,我们介绍了流式实现的最小需要改动。
本文其余部分安排如下,在第 2,3 节,我们讨论网络数据上分类问题的公式,并介绍本文如何使用该公式。第 4 节里,介绍 DeepWalk 算法细节。第 5 节里,介绍对比试验方案。第 6 节里,介绍试验结果。第 7 节为总结。
问题定义
我们讨论社交网络中节点多标签分类问题。形式化地,有 , 是网络中的节点集, 是网络中的关系集,且有 。给定部分节点有标签的社交网络 , 其中 , 是节点特征空间大小。, 是标签集。
在传统的机器学习分类器里,我们期望学习 中元素对应 中标签的概率函数 。在本文的方法里,我们使用包含图结构信息的嵌入向量,利用向量之间的相关性来提升之前方法的性能。
在各种文献的描述里,该问题被称为关系分类。传统处理该问题的方法有,使用无向马尔可夫网络进行推理,然后使用迭代估计推理算法计算给定网络结构中标签的后验概率。
我们提出一种捕获网络拓扑信息的新方法。不需要把标签空间混合到特征空间,我们的无监督方法可以学习包含图结构的特征信息,且该特征与标签分布无关。
将特征表示与标签分离,可以避免级联误差,该误差通常发生在迭代算法里。而且,同样的表示可以被用于不同的标签分类任务中。
我们的目标是学习 , 是小的特征维度。这些低维向量表示是足够分布的,意味着每种社会现象都可以被维度的子集表示,每个向量维度可以影响多个社会概念的取值。
通过结构化特征,我们增强了属性空间,用以辅助分类决策。这些特征是通用的,可以被用于任何分类算法。然而,我们认为这些特征的最优使用方案是搭配简单的机器学习模型就好,该方案可以很方便地扩展到真实网络上。
学习社交表示
我们通过以下特性学习社交表示:
-
适应性。真实网络是不断变化的,新的节点表示的学习不应重新处理全部数据。
-
可识别社区。维度之间的距离应该表示社会相似性的某种指标,该特征可以将表示泛化到同构网络中。
-
低维度。当标签数据稀缺时,低维度方法的泛化性更强,可以加速收敛与推理。
-
连续性。我们需要把社会关系映射到连续空间,除了可以在该空间查看社会关系之外,还要平滑不同关系之间的决策划分间隔,以支持划分的健壮性。
DeepWalk 方法从短距离随机游走中学到的节点特征表示满足以上特性,并使用了原本为语言模型设计的优化技术。下面,我们回顾随机游走和语言模型相关概念,并解释它们的结合是如何满足上述需求的。
随机游走
我们将以节点 为起点的随机游走标记为 ,它是个随机的过程,生成的路径为 ,其中 表示随机从节点 k 的邻居中选择某个节点加入路径里。
随机游走经常在内容推荐和社区检测领域中用作相似性度量技术。它们也作为一类输出敏感性算法的基础,这些算法使用随机游走计算局部社区结构信息。
由于随机游走涉及局部结构,且计算时间很短,这激发我们使用该系列方法作为我们算法的基础工具,用以从网络中抽取局部信息。
除了捕获社区信息之外,在我们的算法中使用随机游走还带来了两个理想的特性。首先,图中的局部探索操作很容易并行化,可以对同一个图的不同部分同时做随机游走处理。其次,基于随机游走获取的信息,可以适应图结构的微小变动,而不用再次计算全图数据。因此可以在变更区域做随机游走,迭代更新模型,这样耗时非常短。
联通性:幂律分布
如果联通图的度分布符合幂律,我们将会观察到,节点在短随机游走路径上出现的频率也符合幂律分布。
神经网络中的词频也属于幂律分布,因此语言模型均考虑该分布特性。下图展示了路径节点频率与词频的相似性。
本文的核心贡献是,用于自然语言的模型也可以用于建模网络社区结构。
本节的剩下部分将回顾语言模型的发展,然后将其迁移到满足我们需要的节点表示学习上。
语言模型
语言模型的目标是估计某单词序列在语料库中出现的概率。形式化描述为,给定单词序列 , ,需要最大化在整个语料库上的概率 。
表示学习的最新研究集中于使用概率神经网络构建通用单词表示,该方法扩展了语言模型的处理范围。
本文将展示语言模型泛化到图上随机游走路径的探索。这些路径可被认为是某种语言中的短句。然后计算在给定节点 在序列里的所有先序节点的情况下,估计节点 出现的概率。
我们的最终目的是学习节点的隐藏表示,而不只是节点共现的概率分布,因此引入映射 将节点映射到向量。那么上述问题就成了下式。
然而,随着游走路径长度的增长,该公式将变得不可计算。
最近语言模型的研究兴趣转到预测问题上了,首先,不再是通过上下文预测缺失单词,而是用给定单词预测上下文。然后,上下文的单词也变为由给定单词的左右两侧单词构成。最后,移除了问题的顺序约束,使用最大化单词对共现概率作为目标函数。
将该方法用到节点表示建模上,目标函数如下。
我们发现该转变对于社交表示学习相当理想。首先,顺序无关假设更契合随机游走的邻居含义。而且,该方法的训练时间大大减少。
解决上式表示的最优化问题的同时,也完成了图局部结构相似度的向量表示学习。具有相似邻居的节点也会具有相似特征表示。该表示可以泛化到各种机器学习任务上。
通过结合截断随机游走和语言模型,我们设计了一种满足之前提到的所有需求的方法。该方法生成社交网络的低维特征表示,该特征共存在连续向量空间中。该表示编码了节点的社区关系,可适应网络拓扑的变动。
方法
本节介绍 DeepWalk 算法主要组成部分,也展示算法的不同变体,并讨论其指标。
概述
在任何语言建模算法中,唯一需要的输入是语料库 ,DeepWalk 将一批截断随机游走路径视为其语料库。在训练之前了解节点在随机游走路径上的频率分布很有必要,这样就不需要算法去现场计算该频率。
算法:DeepWalk
该算法由两部分构成,第一部分是随机游走生成器,第二部分是更新处理过程。
随机游走生成器接受输入图 ,从中均匀采样出随机的节点 作为随机游走的出发点。在每一步游走时,对当前节点的邻居均匀采样出随机节点加入游走路径中,重复此过程,直到游走路径长度达到最大值。
在实验中,我们将随机游走的最大路径长度设置为某固定值。游走过程中可能出现回路,但我们的实验中没有展示这点。
具体地,我们对每个节点都执行多次长度为 t 的随机游走。下图展示了随机游走的核心过程。
外部循环设置了每个节点生成的随机游走路径数。进入循环后打乱节点顺序,然后进入内部循环,对每个节点进行随机游走,生成固定长度的游走路径。
我们使用 SkipGram 算法来根据前边介绍的目标函数的结果,更新节点表示矩阵。
SkipGram
SkipGram 是一个语言模型,用来最大化单词序列中窗口内单词的共现概率。
该算法把路径中的所有节点对作为概率空间,迭代游走路径上的每个节点,把该节点和窗口 中的各节点构成的节点对视为正样本,窗口外节点与该节点构成的节点对视为负样本,将节点映射为节点向量 后计算各节点对的相似度作为共现概率,最终计算目标函数,以最大化该节点邻居出现的概率。然后用梯度下降方法优化目标函数。
在计算概率时,要把节点映射为向量表示。
我们可以使用一些分类器来学习该后验概率分布,比如逻辑回归。但逻辑回归等分类算法需产生与节点总量 |V| 一样的的目标标签,有可能是上百万个。因此这种模型需要海量计算资源,可能是一整个计算机集群。
为了加速目标函数的计算,我们使用 Hierarchical Softmax 来估计概率分布。
层级 Softmax
给定节点 ,计算 是不可行的。计算分布函数非常耗时,如果我们将节点当作二叉树的叶子,那么预测问题将变成最大化树中路径的概率问题。
如果通向 的路径由一系列树中节点组成 ,那么有如下公式成立。
现在,该概率可以被其在树上的父节点的二元分类器计算。
该方法将计算复杂度由 降到 。
我们可以进一步加速训练过程,给游走路径中的高频节点之间设置更短的二叉树路径,Huffman 编码可以被用来实现该二叉树。
优化目标函数
模型的参数集为 ,每个元素的大小都是 。
随机梯度下降 Stochastic Gradient Descent SGD 方法被用来优化这些参数。使用反向传播算法计算各参数的偏导数。SGD 的学习率在训练开始时设置为 2.5%,然后随着处理的节点数量增大线性衰减。
并行化
前边提过随机游走路径上的节点频率分布和语言中单词的频率分布都符合幂律分布。这导致大量低频节点构成长尾,因此更新 的操作自然也会是稀疏的。
这允许我们使用异步版本的随机梯度下降 ASGD 在多个处理器上训练。
假设我们的更新操作是稀疏的,并且处理模型共享参数时不需要加锁,那么 ASGD 会快速收敛。
我们的实验运行在单机多线程环境中,这说明该技术具有高度伸缩性,可以用大规模机器来学习。
算法变体
此处讨论一些我们提出的方法的变体,它们很可能具有特殊性能。
流式
一个有趣的变体是流式方法 Streaming Approach,可以在不需要整个图信息的情况下执行计算。在该方法中,随机游走路径之间传给表示学习代码进行计算,模型实时更新。这需要对模型代码做一些必要的修改。
首先,衰减学习率的使用不再需要,取而代之的是一个很小的常数学习率。这将会增加学习时间,但在某些应用上非常有用。
然后,我们不再需要构建参数二叉树,如果量基 |V| 未知,我们可以构建最大整数值的层级 Softmax,节点首次进入训练时分配一个叶子。如果我们有能力估计节点的先验频率,我们仍然可以使用 Huffman 编码来减少高频元素获取时间。
非随机游走
一些图产生自用户交互行为,本身具有序列元素的倾向性。在这类图上使用非随机游走,可以按照用户逻辑产生序列路径,输入给训练代码。
这种方式生成的特征表示不再包含网络结构信息,只有路径中的节点频率信息。
在我们看来,这种变体也包括语言建模功能。句子可以被视为具有用户逻辑的固定路径,类似 SkipGram 的模型就在捕获该信息。
这种方式可以结合流式变体,训练持续变化的网络,而不需要显式构建全图信息。
维护该方法产生的向量表示能够允许网页规模的图的分类,而不需要预先构建全网页图。
实验设计
本节提供数据集和实验方法的概览。
数据集
实验使用以下三个数据集。
-
BLOGCATALOG 一个博客作者的社交关系网,标签标识作者话题分类。
-
FLICKR 一个照片分享网站的用户联系人网络,标签标识用户兴趣组。
-
YOUTUBE 著名视频网站的用户社交网络,标签标识用户兴趣组。
基准方法
为了验证我们方法的性能,我们对以下基准方法做了比较。
-
SpectralClustering 谱聚类,该方法从输入图的标准拉普拉斯矩阵中获取最小的 d 个特征向量,产生 d 维向量表示。使用拉普拉斯矩阵的特征向量,隐式假设图划分对分类有用。
-
Modularity 模块度,该方法生成 d 维向量表示,先计算输入图的模块度矩阵 B,然后选择 B 的最大 d 个特征向量。B 的特征向量编码了图划分模块度信息。
-
EdgeCluster 边聚类,该方法对图的邻接矩阵使用 k-means 聚类,通常见于模块度方法的测试方案中。
-
wvRN,权重投票的相关邻居 weighted-voted Relational Neighbor 是一种关系分类。给定某节点邻居,估计该节点对于目标关系的概率。在真实网络中有非常好的性能,经常作为关系敏感分类基准方法。
-
Majority,原始的选择输入序列节点中最高频标签的方法。
实验
略
相关研究
本文方法与之前研究的主要不同点总结如下。
-
我们学习社交关系表示,而不是计算中心度或者划分统计量。
-
我们并不扩展分类处理过程。
-
我们提出了一种可伸缩的在线方法,只利用局部信息,而大多数方法需要使用全局图信息,并且需要离线计算。
-
我们在图上使用无监督表示学习。
本节讨论网络分类与无监督特征学习的相关研究。
关系学习
关系分类方法使用数据项之间的链接作为处理过程的一部分。
数据抽取推理属于 NP 问题,解决方法通常是一些估计推理算法,并不保证收敛。
大部分与本文研究相关的关系分类算法,需要合并社区信息,或者给相邻节点添加关系,或者使用 PageRank,或者扩展关系分类器以纳入额外特征。
本文的算法使用一种非常不同的方案,不再是一种估计推理算法,而是提出一种学习网络结构的关系表示,然后将该表示用于推理过程。
有许多新的生成图特征的技术,总结下来,相当于我们的算法将其特征创建过程纳入了表示学习任务中。
图核也是一种使用关系型数据解决分类问题的方法,但是计算速度太慢,如果不用估计方式计算的话。我们的方法更完善,不再需要构造编码图结构的核函数,学习到的向量表示直接可以作为分类方法的特征使用。
无监督特征学习
分布式的特征表示用于建模概念之间的关系,这种表示向量通过反向传播和梯度下降的方法来训练,计算代价与数值不稳定性导致该方法被废弃了几乎十年。直到最近,分布式计算才能训练更大的模型,同时无监督学习算法相关数据大量涌现。
分布式表示通常使用神经网络,这种方法在不同领域中都大有进展,如计算机视觉、语音识别、自然语言处理。
总结
我们提出了 DeepWalk 算法,一种新的节点社交关系表示方法。使用截断随机游走的局部信息作为输入,模型学习能够编码图结构规律的表示向量。在不同图数据上的实验,展示了算法在多标签分类任务上的优异性能。
作为一种在线算法,DeepWalk 是可伸缩的。实验结果展示了我们可以在不能运行谱方法的大规模图上学习到有意义的节点表示。在这种大规模图中,我们方法的性能显著优于其他处理稀疏数据的方法。我们也显示了该算法的并行性,允许同时更新模型的不同部分。
出了性能与伸缩性,该算法也可用于语言建模。这两个领域之间的联系是互相有益的。语言建模领域的发展可以持续地提升网络表示效果。在我们看来,语言建模其实是在不可见的语言图上采集信息。我们相信在可见图上建模的进展会反过来提升不可见图上建模的效果。
我们未来的研究重点会是这种二重性,使用我们的成果提升语言建模效果,增强该方法的理论依据。
引用
略