0
点赞
收藏
分享

微信扫一扫

图神经网络之图游走类模型算法——DeepWalk


目录

  • ​​图游走类算法​​
  • ​​目标​​
  • ​​基本思路​​
  • ​​Word2vec​​
  • ​​算法思想​​
  • ​​整体架构​​
  • ​​Skip Gram——根据中心词预测上下文​​
  • ​​Negative Sampling——负采样​​
  • ​​应用到图嵌入领域​​
  • ​​DeepWalk​​
  • ​​整体架构​​
  • ​​Random Walk​​
  • ​​具体过程​​

图游走类算法

图游走算法可以理解为一个人在图上行走,最后能得到一条走过的路径

目标

图游走类算法的目标,就是学习出图中每一个节点的低维表示,称为 Node Embeddings

在得到这些 embeddings 之后,就可以利用这些低维表示来进行接下来的下游任务,比如节点分类之类的等等。

为什么可以用这个低维表示来做下游任务呢?
因为可以利用一些方法,使得每个节点的 embeddings 可以学习到节点跟它的邻居的关系,更好的表示图结构和图特征的信息。

图神经网络之图游走类模型算法——DeepWalk_DeepWalk

基本思路

  1. 通过在图进行某种方式的游走,得到多个序列,利用这些序列进行图表示学习。
  2. 通过图表示学习,利用节点之间的关系,学习到节点的低维表示(Node Embedding),
  3. 之后利用这些Embeddings做下游任务。

节点可以看做 NLP 中的词,而节点序列进而就可以联想到句子。接下来就要引入 NLP 领域中的一个算法——Word2vec

Word2vec

图游走类模型最开始参考的就是 NLP 领域中的 Word2vec 模型

算法思想

假设,如果只给出苹果这一个词,而没有其他的信息,那么,这个词的词义其实是模糊的。

因为苹果可能指的是水果,又或者是手机

但如果给出有关于苹果的很多个句子:

图神经网络之图游走类模型算法——DeepWalk_图游走_02

通过多个句子的上下文,其实可以大概了解到,上面所展示的苹果这个词的语义,是一种水果、一种食物。

通过这个例子,可以得出这样的一个结论,即词的语义由其上下文决定

Word2vec 其实就是利用了这样的一个思想。

整体架构

图神经网络之图游走类模型算法——DeepWalk_DeepWalk_03


Word2vec 模型,可以简单的理解为 Skip Gram + 负采样

Skip Gram——根据中心词预测上下文

在Word2vec 中,提出了两种模型结构用于学习词向量,分别是 CBOWSkip Gram

由于图游走类算法用的多是 skip-gram 模型,因此这里只介绍 skip-gram 模型。

Skip Gram的目的很简单,就是根据中心词,预测对应中心词的上下文词

这样做不仅仅能够利用了词共现关系,同时也体现了 Word2vec的本质,即词的语义由其上下文来决定

以下面这张图片的句子为例,假设 neighbors 为中心词,同时我们设置了window size为3. 这个窗口大小表示左右两边的上下文词数,因此 neighbors 的 context 为 uniformly from the,以及 of the last。

图神经网络之图游走类模型算法——DeepWalk_算法_04

Skip gram 的模型结构很简单,输入层就是中心词的 one hot 表示,经过中间一个投影层后,在输出层预测对应的context word,因此最后一层就是一个softmax分类层。

需要补充的一点是,使用 Skipgram语言模型的本质并不是为了说多么准确的预测 context words,而是为了得到模型的副产物,也就是词向量

通常在训练结束后,隐层的权重 W 会作为词向量矩阵。

Negative Sampling——负采样

假设,给定中心词 orange,预测其上下文词中的 juice:

图神经网络之图游走类模型算法——DeepWalk_DeepWalk_05


Softmax 层在 Skipgram 模型中是用来计算词表的概率的。

为了能够预测出 juice,不仅要预测它的概率,还要预测整个词表中所有单词的概率。但这样做的计算量是非常大的,因此,这里使用负采样的方法进行优化。

负采样的思想很简单。将中心词和对应的上下文词作为正样本,比如这里的 (orange, juice)。同时,选取一定数量的负样本,比如3个。

确定要正样本和负样本之后,就不再需要计算所有词的概率,而只需要对这几个样本进行分类,如果 Y=1,意味着是正样本,Y=0,意味着是负样本。从而减少了计算量。

也就是把 softmax 层修改为了多个 sigmoid 函数,从而大大减少了计算量和参与权重更新的参数数目。

应用到图嵌入领域

图神经网络之图游走类模型算法——DeepWalk_算法_06


我们有一句古话,近朱者赤,近墨者黑。

也就是说,周遭的环境对于我们来说会有一定的影响,因此也可以表现为,图中的节点会受到其邻居的影响。

当然,这种情况也不仅仅只存在社交网络这个范围内,在很多其他的图,比如推荐系统等等,节点都会受到邻居的影响。

这也是为什么可以将Word2vec这个方法迁移到图嵌入领域的原因

DeepWalk

游走模型的鼻祖是DeepWalk模型,它也是第一个将 NLP 领域的思想运用到图嵌入领域的模型。

整体架构

图神经网络之图游走类模型算法——DeepWalk_DeepWalk_07

与 Word2vec 的不同,其实就是多了一个采样节点序列的随机游走部分。因此这两者实现起来其实是非常类似的。

另外,大部分的图游走类算法,都是在随机游走这一块做比较多的创新和改动,而在后续的训练方法上则和 Word2vec 基本保持一致。

Random Walk

图神经网络之图游走类模型算法——DeepWalk_算法_08

具体过程

从图中的某个节点出发,游走的每一步都从与当前节点相连的边中随机选择一条,沿着选定的边移动到下一个顶点,不断重复这个过程,直到得到的序列无法继续往下走或者到达指定最大长度。

在走了多趟之后,便可以得到多个游走序列,此时就可以类比 NLP 中的句子了。

随机游走的本质,其实就是可以“回头”的深度优先搜索

将随机游走表示成公式的话,可以得到下面的这个式子。

图神经网络之图游走类模型算法——DeepWalk_算法_09

DeepWalk选取随机游走序列中下一个节点的方式是均匀随机分布的,因此对于与当前节点有边相连的节点,都有相同的概率被选择。

在 DeepWalk 中,会针对图中的每个节点采样多条序列,得到这些节点序列之后,就可以直接套用 Word2vec 模型了。


举报

相关推荐

图神经网络

0 条评论