node2vec应用,node2vec算法

一、简述 1.1 Network Embedding

基于一个Graph,将节点或者或者边投影到低维向量空间中,再用于后续的机器学习或者数据挖掘任务。

1.2 DeepWalk(Online Learning of Social Representations.)

1. DeepWalk简述:

Network/Graphrandom walk节点序列skip-gramout

2. DeepWalk算法思路:对图从一个节点开始使用random walk来生成类似文本的序列数据,然后将节点id作为一个个「词」,使用skip gram训练得到「词向量」。 这样做其实等价于特殊矩阵分解(Matrix Factorization)。

1.3 node2vec(Scalable Feature Learning for Networks)

1. node2vec在DW的基础上,定义一个bias random walk策略生成序列,采用BFS和DFS两种游走方式,仍用skip gram训练。 

Network/Graphbias random walk节点序列skip-gramout

(1)bias random walk

通过不同的p和q参数设置,来达到保留不同信息的目的。当p和q都是1.0的时候,它等价于DeepWalk。 

DeepWalk中根据边的权重进行随机游走,而node2vec加了一个权重调整参数α:t是上一个节点,v是最新节点,x是候选下一个节点。d(t,x)是t到候选节点的最小跳数。 从节点t走到v以后,返回t的超参数为p,到其他节点的参数为q。p和q共同控制着重新访问节点(t)、走向前面的节点(x1)、走向更远节点(x2,x3)的概率。

(2)skip-gram

训练一个带有单个隐藏层的简单的神经网络来完成某个任务,但是实际上我们并没有将这个神经网络用于我们训练的任务。相反,目标实际上只是为了学习隐藏层的权重 – 我们会看到这些权重实际上是我们试图学习的“单词向量”。

二、详说skip-gram

参考博客:读懂Word2Vec之Skip-Gram

2.1 假任务

给定一个句子中的特定单词(输入单词),查看附近的单词并随机选择一个单词。网络将告诉我们,我们词汇表中每个单词是我们选择的“邻近单词”(“window size”参数)的概率。

上图采用了一个小的窗口大小为2,标为高亮蓝色的是输入单词。

2.2 模型细节

输入层:一个one-hot向量(10000个元素)

隐藏层:没有激活函数

输出层:使用softmax,一个单独的向量(10000元素,一个概率分布–浮点),包含了随机选中词典单词的概率。

2.3 隐藏层

隐藏层:一个10,000行(每一行都针对的是词汇表中的每个单词)和300列(每个隐藏的神经元一个列)的权重矩阵

最终目标实际上只是为了学习这个隐藏的层权重矩阵 – 当我们完成时,我们就会抛弃输出层!

隐藏层实际上只是作为一个查找表来操作,隐藏层的输出只是输入单词的“word vector”

2.4 输出层

输出层:一个softmax分类器。每个输出的神经元(一个在字典中的单词向量)将会产生一个输出值,该值在0-1之间,并且所有的输出值求和之后是1.

2.5 创新

1,将常见单词对或短语视为单个“单词”

2,对频繁的词进行抽样以减少训练样例的数量

3,使用“负抽样”技术来修改优化目标,使每个训练样本只更新模型权重的一小部分

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注