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

图游走类算法

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

目标

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

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

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

在这里插入图片描述

基本思路

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

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

Word2vec

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

算法思想

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

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

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

在这里插入图片描述

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

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

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

整体架构

在这里插入图片描述
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。
在这里插入图片描述

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

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

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

Negative Sampling——负采样

假设,给定中心词 orange,预测其上下文词中的 juice:
在这里插入图片描述
Softmax 层在 Skipgram 模型中是用来计算词表的概率的。

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

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

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

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

应用到图嵌入领域

在这里插入图片描述
我们有一句古话,近朱者赤,近墨者黑。

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

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

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

DeepWalk

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

整体架构

在这里插入图片描述

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

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

Random Walk

在这里插入图片描述

具体过程

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

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

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

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

在这里插入图片描述

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

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

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 点我我会动 设计师:上身试试 返回首页