了解Word2Vec的Skip-Gram结构和输出

时间:2015-12-18 20:12:09

标签: vector machine-learning nlp word2vec

我的问题有两方面,但希望不要太复杂。这两个部分都特别适用于Word2Vec中的Skip-Gram模型:

  • 第一部分是关于结构:据我所知,Skip-Gram模型基于一个神经网络,一个输入权重矩阵 W ,一个隐藏的大小层N和C输出权重矩阵 W'各自用于产生C输出向量之一。这是对的吗?

  • 第二部分是关于输出向量:据我所知,每个输出向量的大小为V,是Softmax函数的结果。每个输出向量节点对应于词汇表中单词的索引,并且每个节点的值是对应单词出现在该上下文位置(对于给定输入单词)的概率。然而,即使训练实例是,目标输出矢量也不是单热编码的。这是对的吗?

我想象的方式是以下几行(构成示例):

假设词汇['quick','fox','jumped','lazy','dog']和C = 1的上下文,并假设对于输入词'jumped',我看到两个输出看起来像这样的矢量:

[0.2 0.6 0.01 0.1 0.09]

[0.2 0.2 0.01 0.16 0.43 ]

我认为这是'狐狸'是最有可能在'跳跃'之前出现的词(p = 0.6),而'狗'最有可能出现在它之后(p = 0.43)。

我有这个权利吗?还是我完全脱了?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

这是我在SO的第一个答案,所以在这里......

根据这篇论文,你对这两个部分的理解似乎是正确的:

http://arxiv.org/abs/1411.2738

本文详细解释了word2vec,同时保持了它非常简单 - 值得阅读,以便全面了解word2vec中使用的神经网络架构。

  • Skip Gram的结构确实使用单个神经网络,输入为单热编码目标词,预期输出为单热编码上下文词。在文本语料库上训练神经网络后,输入权重矩阵 W 用作语料库中单词的输入向量表示和输出权重矩阵 W'在所有 C 输出中共享(问题术语中的输出向量,但避免这种情况以防止与下一个使用的输出向量表示混淆..),成为输出向量单词的表示。通常忽略输出向量表示,并且输入向量表示 W 用作单词嵌入。为了进入矩阵的维数,如果我们假设词汇量 V ,隐藏层的大小为 N ,我们将 W 作为(V,N)矩阵,每行代表词汇表中索引词的输入向量。 W'将是(N,V)矩阵,每列代表索引字的输出向量。通过这种方式,我们得到了单词的N维向量。
  • 正如您所提到的,每个输出(避免使用术语输出向量)的大小为 V ,并且是softmax函数的结果,输出中的每个节点都给出了概率单词作为给定目标字的上下文字出现,导致输出不是单热编码。但是预期输出确实是单热编码的,即在训练阶段,通过减去一个热编码来计算误差。发生在该上下文位置的实际单词的向量,从神经网络输出,然后使用梯度下降更新权重。

参考你提到的例子, C = 1,词汇为['quick','fox','jumped','lazy','dog']

如果skip-gram的输出为[0.2 0.6 0.01 0.1 0.09],正确的目标词为'fox',则错误计算为 -

[0 1 0 0 0] - [0.2 0.6 0.01 0.1 0.09] = [-0.2 0.4 -0.01 -0.1 -0.09]

并更新权重矩阵以最小化此错误。

希望这有帮助!

答案 1 :(得分:0)

没有。 您可以自由设置矢量的长度。

然后,矢量是什么?

它是该词含义的分布式表示。

我不确切地知道如何训练它。但是,受过训练的人的意思如下。

如果有一个这样的矢量表示,

[0.2 0.6 0.2]

比[0.7 0.2 0.5]更接近[0.2 0.7 0.2]。

这是另一个例子。

CRY [0.5 0.7 0.2]

HAPPY [-0.4 0.3 0.1]

SAD [0.4 0.6 0.2]

' CRY'更接近SAD'比起快乐'因为当词的含义(或句法位置)相似时,方法(CBOW或SKIP-GRAM等)可以使向量更紧密。

实际上,准确性取决于很多事情。选择方法也很重要。还有大量的好数据(语料库)。

如果你想检查一些单词的相似性,你先制作单词的向量,然后检查单词的余弦相似度。

论文(https://arxiv.org/pdf/1301.3781.pdf)解释了一些方法并列出了准确性。

你可以理解c代码,word2vec程序(https://code.google.com/archive/p/word2vec/)很有用。它实现了CBOW(Continuous Bag-Of-Words)和SKIP-gram。

ps)请纠正我的坏英语。 ps)评论,如果你有问题,那么。