DeepWalk:Online Learning of Social Representations论文阅读笔记

摘要

文章提出的Deepwalk结合了自然语言处理模型和无监督特征学习(或者深度学习)的技术,将词序思想用到图上,利用随机截断游走算法获得的局部信息,将游走序列看成词序,来学习潜在表示。
实验证明:deepwalk is better:将F1规范提高到10%以上,和其他先进的方法相比,少用了60%的数据就达到了一样的效果(甚至更好)。
Deepwalk也是可扩展的(一种在线学习算法),可以扩展到现实中大型的高维网络。

关键词

社交网络,深度学习,潜在表示,半监督学习,网络分类,在线学习

1. 引言

数据稀疏性对离散算法来说是好的,但是很难应用到统计学习中。因此,数据稀疏性问题是机器学习中必须要解决的问题。文中提出的deepwalk首次将自然语言处理的思想运用到图上,通过建模流式的随机游走来学习图顶点的社交表示。社交表示是顶点的潜在特征,用来获得邻接点的相似度和社区成员,这些特征在一个连续的向量空间中(低纬度)编码社交关系。
deepwalk将图(graph)作为输入(input),输出(output)是特征表示。如图所示
图a是强连接的,图b是二维空间中的特征表示。两幅图有着极强的相似性。
为了证明deepwalk在实际中运用的可能性,作者在多标签大型网络分类中评估它的性能。
假设:顶点间独立同分布。使用近似推理,利用信息依赖来提高分类结果。标签之间独立,表示质量不收被标记顶点的选择。

2. 问题定义

在这里插入图片描述
在传统的机器学习中,我们的目标是学习一种假设:H:X->Y。关于本文的情况,依然可以利用样本中相互独立来嵌入图。
与传统的关系分类问题处理不同,作者没有将标记空间和向量特征空间混合,而是使用一种无监督的方法来学习捕捉与标签分布无关的图结构的特征,这样避免了级联错误(可能会发生在迭代方法中)。此外,同一表示可以用在与该网络有关的多分类问题中。
目标学习到(d:低维度)在这里插入图片描述
这样的低维表征是分布的,意味着每一种社交现象都可以被其子集表示,而每个维度都是空间所表达的社交概念的子集。

3. 学习社交表示

网络表示性质:适应性(可以适应不断演化的社交关系),社区意识(同个社区中的结点有相似的表示),低维度,连续性(连续向量空间)。deepwalk都满足以上特性。

3.1随机游走(获得图的结构)

截断随机游走:长度固定的随机游走,k为长度。Vi为根节点(起点),每一步随机选择一条与当前节点相连的边,沿着选定的边移到下一个节点,不断重复此过程,直到走完k步。
在这里插入图片描述
随机游走获得的是局部的结构信息,使用随机游走有两个好处:可以同步进行多个随机游走(在同个网络上),允许局部上发生小的变化而不需要重新计算全局信息。

3.2连接:幂律分布

顶点的度服从幂律分布,那么顶点在随机游走中出现的频率也服从幂律分布。单词在自然语言出现的频率服从一个相似的分布,如图
在这里插入图片描述
关于幂律分布度数大的节点比较少,度数小的节点比较多(个人理解)。

3.3 语言模型

语言模型:估计特定序列的单词在词库中出现的概率,而作者将随机游走的序列看成单次序列,计算顶点vi出现的可能(条件概率)在这里插入图片描述
本文的目标还是学习一个潜在的表示,一种映射:图中顶点的表示在这里插入图片描述
于是,问题变成了:在这里插入图片描述
但是,计算这样的条件概率是不能轻易实现的。有一种方法可以解决:①不是使用上下文来预测一个丢失的单词,而是使用一个单词来预测上下文②上下文包括左边也包括右边③不受顺序的影响,最大化任何一个单词出现在上下文的概率而无需知道当前单词的偏移(相对于所给词),于是优化问题变成了:在这里插入图片描述
给定顶点vi,计算出现在当前窗口范围内顶点的概率。这样的公式可以建立图局部结构上顶点的表示,相似的节点其表示也相似

4方法

4.1 overview

在这里插入图片描述

4.2算法deepwalk

在这里插入图片描述
算法分为两个部分:①随机游走②更新表示(使用skip-gram算法,根据第三个公式)

4.2.1skipgram(Word2vec)

在这里插入图片描述

首先需要了解one-hot编码
举个例子:词库中现在有五个单词:the,small,dog,is,cute。(V=5)
the的one-hot编码为:[1,0,0,0,0]
small的onehot编码为:[0,1,0,0,0]
dog的one-hot编码为 :[0,0,1,0,0]
is的onehot编码为:[0,0,0,1,0]
cute的onehot编码为:[0,0,0,0,1]
一个单词有特定的一个向量来表示,即:有多少个不同的词,就会创建多少维的向量,有V个不同的词就创建V维向量,其中单词出现的位置是1,其他位置全部为0。**需要注意的是特征排列的顺序不同,对应的二进制向量表示也不同,所以必须事先约定特征排列的顺序。**但是one-hot编码有缺陷:每个单词在空间上都是正交向量,无法计算相似度,同时如果词汇量过多,而向量中有太多的0,浪费空间,计算量增大。
skipgram(跳字模型)三层结构
在这里插入图片描述
在这里插入图片描述

说明:隐藏层中没有激活函数,隐藏层到输出层全连接,最后使用softmax输出概率。
同样的词库:the,small,dog,very,cute(V=5).假设窗口大小w=2,中心词是"dog",那么上下文的词(背景词)是:“the”,“small”,“is”,“cute”。而skipgram模型要做的就是生成与中心词距离不超过窗口值的背景词的条件概率:P(“the”,“small”,“is”,“cute”|“dgo”),因为背景词之间彼此独立,所有又可以写成:P(“the”|“dog”)P(“small”|“dog”)P(“is”|“dog”)P(“cute”|“dog”)。

  1. one-hot编码:上述内容以讲述
  2. 词嵌入(Word embedding:one-hot编码有稀疏性,需要将词语映射到低维的向量表示)获得中心词向量矩阵W(Vd) 。
    假如词库有10000个单词(V=10000),分别用300个特征来表示(d=300),那么隐藏层就有300个神经(为什么是300,这是根据经验得出数据:300-500)。如图,左右两个图从不同的角度代表了输入层-隐藏层的权重矩阵。左边:每一列代表一个10000维的词向量和隐层单个神经元连接的权重向量,右边:每一行代表了每个单词的词向量。在这里插入图片描述
    同样使用例子:现在已经有一个学习好的权重W(v
    d:5*3)
    在这里插入图片描述
    中心词“dog”的one-hot编码向量和共享矩阵相乘就得到它的词向量。用Vc表示,然后再进行归一化得到Vc=(0.46,0.15,0.39)
    在这里插入图片描述
  3. 上下文向量矩阵
    同样假设已经有学习好上下文向量矩阵(每一个词都有一个对应的上下文矩阵) 在这里插入图片描述
    中心词的词向量和学习好的权重矩阵中的其他词做内积,此时得到每个词的计算结果:
    在这里插入图片描述
  4. softmax
    接下来就是计算每个背景词的softmax计算结果在这里插入图片描述
    Wc是中心词,背景词为W0。整个过程的输入是(中心词向量,背景词向量)整个时候可以写成连乘的形式:
    在这里插入图片描述
    T代表窗口中心词的位置,m表示窗口的大小,我们需要最大化背景词的输出概率即可。可以使用极大似然估计,但是使用对数函数进行变换更容易计算:在这里插入图片描述
    定义损失函数:
    在这里插入图片描述
    如何最小化损失函数?梯度下降法,参数为中心词和背景词。使用链式求导法则,可以得到:
    在这里插入图片描述
    同理可求得背景词的梯度,然后进行迭代更新:
    在这里插入图片描述

4.2.2 层次softmax

在softmax中,每次都需要计算所有的词softmax概率,再去找概率最大的值,计算量很大,有两种方法可以优化解决:负采样和层次softmax,作者采用的是层次softmax。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页