本文是精读DeepWalk后做出了一些简略说明与解读。
原文链接:DeepWalk: Online Learning of Social Representations。
文章中的图片均来自论文原文。
依据NLP和Random-Walk提出了一种对社交关系网络进行隐编码的方法:DeepWalk。
DeepWalk利用随机游走形成的局部信息(将每一次游走得到的信息看成是一个句子)来学习网络的表示。
作者通过DeepWalk做了一些图的多分类问题,得到的效果非常好。
该算法有以下几个优点:
通过随机游走结合NLP相关的处理,提出了DeepWalk,将该方法运用到Karate network(一个空手道俱乐部的人员关系网络)中,将每个节点编码成一个二维的向量,可以得到Figure 1的结果,(a)代表输入的网络,不同的颜色代表不同的类别,(b)代表的是将节点的向量表示绘制到一个平面图上,可以看到同一类节点的编码在图中相对比较密集。
文章进行了一些实验,实验中作者将DeepWalk应用到大量不同图的多分类问题上。
在关系分类(Relational Classification)问题中,之前的方法违背了i.i.d.(独立同分布)假设,解决方法一般是使用近似推理(Approximate Inference,进行近似推理的原因是:Exact Inference是NP-hard问题)。而Deep Walk并不使用近似推理,而是学习图的标签独立表示。
当被标记的节点是稀疏的时候,DeepWalk能够取得特别好的效果(通过后续的实验可以看到,当DeepWalk仅获得部分信息时能够获得很好的效果)。同时Deep Walk可以很容易的和其他的分类算法进行混合使用,同时可以很容易的实现并行。
本文的贡献:
注1:文章并没有说明什么是web-scale,只是举例YouTube是web-scale图,这里网上也没有找到定义。
考虑二分类或者多分类问题。首先给出一些定义:
V V V:代表图的顶点;
E E E:代表图的连接关系(边);
G = ( V , E ) G=(V,E) G=(V,E):代表一张图,顶点为 V V V边为 E E E;
X X X: X ∈ R ∣ V ∣ × S X\in R^{|V|\times S} X∈R∣V∣×S(其中 S S S是特征的维度)是属性(features);
Y Y Y: Y ∈ R ∣ V ∣ × ∣ y ∣ Y \in R^{|V| \times |y|} Y∈R∣V∣×∣y∣(其中 y y y是输出(labels)的集合)代表输出;
G L = ( V , E , X , Y ) G_L=(V,E,X,Y) GL=(V,E,X,Y):一个带有标记的社交网络。
该分类问题即关系分类,传统的解决方法是通过将问题看成一个非直连的马尔可夫网络,使用迭代近似推理或者根据给定的网络计算输出的后验分布。
本文采用的方法不需要考虑输出的分布,能够直接从图的结构中学习到特征(无监督学习)。
目标:学习 X E ∈ R ∣ V ∣ × d X_E \in R^{|V|\times d} XE∈R∣V∣×d,其中 d d d是一个比较小的数。可以用该向量和各类分类算法一起完成分类任务。
模型学习遵循的特点:
随机游走(Random Walk):从一个起始结点开始,随机地到达邻居结点,一共执行 k k k次叫做 k k k-随机游走,期间会形成顶点序将此顶点序列记作: W v i = [ W v i 1 , W v i 2 , . . . , W v i k ] W_{v_i} = [W_{v_i}^1,W_{v_i}^2,...,W_{v_i}^k] Wvi=[Wvi1,Wvi2,...,Wvik]其中 v i v_i vi为起始节点。
使用随机游走的好处:
power law distribution(i.e. scale-free):某个量是另一个量的幂次方,文章这里指的是平时所熟知的二八定律,以经济占有为例:即 20 % 20\% 20%(少量)的人掌握了 80 % 80\% 80%(大量)的财富,剩下 80 % 80\% 80%(大量)的人掌握了剩下 20 % 20\% 20%(少量)的财富。
作者发现:如果节点度数的分布符合power law分布(指某些少量节点的度数很大,而大量节点的度数很小),那么一个节点在随机游走中出现的频率也符合power law分布(少量节点的出现次数很多,大量节点出现次数很少),这一点与自然语言中词语使用频率类似。
Figure 2展现了随机游走序列中的二八定律与NLP中的二八定律类似(纵坐标代表出现的频率,可以看到少部分的点(词语)出现的频率很高,而大部分的点(词语)出现的频率很低)。
本文的重要贡献之一就是发现了NLP利用“二八定律”的方法可以被用在处理社交网络中。
语言模型的目标是评估对于给定一个序列下一个单词的可能性(例如翻译模型就是给定一个序列根据输出的可能性,选择下一个词语)。
而本文中作者将随机游走序列转换成一个语言处理模型:给定一个随机游走序列,需要计算出到达每个节点的可能性。
除了需要计算可能性之外,还需要学习每个节点的表示,于是作者提出了一个映射函数 Φ \Phi Φ: v ∈ V − > R ∣ V ∣ × d v\in V->R^{|V|\times d} v∈V−>R∣V∣×d(将顶点映射成一个向量,该函数通过矩阵乘法实现),上面提到的预测问题变为给定顶点向量预测下一个顶点向量的可能性。
近期语言模型发生了改变:由原来的的给定上下文预测单词,变成了给定单词预测上下文(此处的上下文包括上文和下文)。对应在随机游走中的预测就是给定一个点,改点作为随机游走中的一个节点预测整个随机游走序列,即:
m i n i m i z e Φ { − l o g P r ( { v i − w , . . . , v i + w \ v i } ∣ Φ ( v i ) ) } ( 3 ) \underset {\Phi}{minimize}\{ -logPr(\{v_{i-w},...,v_{i+w}\backslash v_i\}|\Phi(v_i))\}\quad (3) Φminimize{−logPr({vi−w,...,vi+w\vi}∣Φ(vi))}(3)
这样的任务非常适用于社交网络,这是因为:
需要的输入是语义表(或者词汇) V V V。DeepWalk将顶点看成是词汇。作者指出一开始知道每个词语的频率(在随机游走序列中的频率)是有好处的,但是本文的算法可以在不知道频率的情况下进行。
算法由两部分组成:随机游走生成器和更新的过程。
实际中进行 γ \gamma γ轮的随机游走,每一轮都在每个节点开始长度为 t t t的随机游走。
算法过程如Algorithm 1所示。
LIne 3的概率通过Hierarchical Softmax获取概率。
这里实际上不需要掌握Hierarchical Softmax具体怎么计算,文章直接给出整个过程中使用的详细公式。
Figure 3是整个DeepWalk的过程,(a)是随机游走的过程,(b)对随机游走产生的序列进行处理,(c)是通过Hierarchical Softmax计算条件概率。
本文提到使用Hierarchical Softmax将上下文问题转换成在路径上走向某个叶节点的概率(每个叶节点代表一个顶点,组成一课完全二叉树)。直接按照如下公式即可获得概率:
P r ( b l ∣ Φ ( v j ) ) = Π l P r ( b l ∣ Φ ( v j ) ) l 表示树上路径经过的点 P r ( b l ∣ Φ ( v j ) ) = 1 1 + e − Φ ( v j ) Ψ ( b l ) Ψ ( b l ) ∈ R d 代表 b l 的父亲的向量表示 \begin{align*} &Pr(b_l|\Phi(v_j)) = \Pi_lPr(b_l|\Phi(v_j))\\ &l表示树上路径经过的点\\ &Pr(b_l|\Phi(v_j))=\frac 1 {1 + e^{-\Phi(v_j)\Psi(b_l)}}\\ &\Psi(b_l)\in R^d代表b_l的父亲的向量表示 \end{align*} Pr(bl∣Φ(vj))=ΠlPr(bl∣Φ(vj))l表示树上路径经过的点Pr(bl∣Φ(vj))=1+e−Φ(vj)Ψ(bl)1Ψ(bl)∈Rd代表bl的父亲的向量表示
这样做可以将复杂度变成 l o g ∣ V ∣ log|V| log∣V∣级别。
同时为了进一步提升速度可以使用哈夫曼编码树(将出现频率作为编码依据)。
使用SGD和反向传播,初始学习率是0 . 025 .025 .025,学习率随着已知节点(迭代过程中会逐渐遍历到节点)的增加而减少。
可以使用异步SGD,由于更新会很稀疏(因为power law的原因,大部分节点出现的次数很少)在访问共享参数时可以不需要锁。
Figure 4展现了并行的结果,不同颜色的线条代表不同的任务;(a)的横坐标代表线程数(可以认为处理器数量大于线程数量)随着线程数量的增加,训练时间下降;(b)代表使用并行后的效果和串行的效果对比,图像表示效果基本没有变化。
在获得随机游走序列时立即进行概率的计算和更新而不是知道整张图的随机游走序列再进行更新。
该方法与Algorithm 1的不同之处:
不再使用随机游走,而是按照某些提示进行特定的跳动获取序列。这样做能够提取网页中的特定信息,同时该方法可以和Streaming进行结合。
介绍本文使用的数据集:
作者将自己的方法和以下的方法进行的对比(注2):
注2:这些方法不是本篇论文的重点,这里不做介绍。
直接给出在三个数据集上不同的方法训练结果:
(表格中Labeled Nodes表示将图中多少的数据用于训练,剩下的数据用于测试;图中的Micro-F1与Macro-F1均是越高代表效果越好)
Table 2表示在Blob Catalog上的训练结果,可以看到DeepWalk在获得 10 10% 10数据的时候训练结果比一些模型获得 90 90% 90数据的训练结果还好。
Table 3表示在Flickr上的训练结果。
Table 4表示在YouTube上的训练结果。
该部分说明参数的不同对实验效果的影响。
Figure 5是改变参数后的实验结果。
d d d代表的是表示向量的维度, γ \gamma γ是Algorithm 1中的迭代次数。
图中的Training和 T R T_R TR代表用于训练的样本占比。
从图中可以看出来该算法对于 d d d不那么敏感而对于迭代次数 γ \gamma γ是比较敏感的。
本文的方法与之前方法不同可以总结为以下几点:
介绍了一下Relational Learning使用的方法。
介绍了无监督学习近年来在CV,speech recognition,NLP的应用。
总结了文章提出的方法的特点:在线,可扩展,NLP模型,随机游走。
未来打算的工作:提升语言处理,加强该方法的理论的证明。