Word Embedding和Word2Vec简介

此篇文章原文在此

Word Embedding是文档词彙表中最受欢迎的表示之一。它能够捕获文档中单词的上下文,语义和句法相似性,与其他单词的关係等。

什幺是 word embedding?鬆散地说,它们是特定单词的向量表示。话虽如此,接下来是我们如何生成它们?更重要的是,他们如何捕捉内文?

Word2Vec是使用浅层神经网络学习word embeddings的最流行的技术之一。它由 Tomas Mikolov于2013年在谷歌开发

让我们逐一解决这个问题。

我们为什幺需要它们?

请考虑以下类似的句子: Have a good day and Have a great day. 它们几乎没有不同的含义。如果我们构建一个详尽的词彙表(让我们称之为V),它将具有V = {Have,a,good,great,day}。

现在,让我们为V中的每个单词创建一个 one-hot encoded vector。我们的 one-hot encoded vector的长度将等于V(= 5)的大小。除了表示词彙表中相应单词的索引处的元素外,我们将得到一个零向量。那个特定元素就是一个。下面的编码可以更好地解释这一点。

Have = [1,0,0,0,0]`; a=[0,1,0,0,0]` ; good=[0,0,1,0,0]` ; great=[0,0,0,1,0]` ; day=[0,0,0,0,1]` (` represents transpose)

如果我们试图想像这些编码,我们可以想到一个5维空间,其中每个单词佔据其中一个维度,与其余维度无关(沿其他维度没有投影)。这意味着 ‘great’和 ‘good’与 day’和 ‘have’不同,这是不正确的。

我们的目标是使具有相似内容的词语佔据紧密的空间位置。在数学上,这些向量之间角度的余弦应接近1,即角度接近0。

谷歌图片

这是生成 分布式表示 的想法。直觉上,我们引入了一个词对其他词的 依赖性 dependence 。在这个词的上下文中的单词将获得这种 依赖 dependence 的更大份额 在一个 one hot encoding representations中,所有的字是 独立 彼此的 如前面提到的。

Word2Vec如何工作?

Word2Vec是一种构造这种embeddimg的方法。它可以使用两种方法(均涉及神经网络)获得:Skip Gram和Common Bag of Words(CBOW)

CBOW模型: 此方法将每个单词的上下文作为输入,并尝试预测与上下文对应的单词。考虑我们的例子: Have a great day.

让神经网络的输入成为单词, great. 请注意,我们在这里尝试使用单个上下文输入字来预测目标字( d ay )。 更具体地说,我们使用输入字的一个 one hot encoding,并测量与目标字( d ay)的一个one hot encoding相比的输出误差。 在预测目标词的过程中,我们学习了目标词的向量表示。

让我们深入了解实际架构。

CBOW模型

输入或上下文字是大小为V的一个 one hot encoded vector。隐藏层包含N个神经元,输出又是V长度向量,其中元素是softmax值。

让我们得到右图中的术语:

– Wvn是将输入x映射到隐藏层的权重矩阵(V * N维矩阵)

W`nv是将隐藏层输出映射到最终输出层的权重矩阵(N * V维矩阵)

我不会进入数学。我们只是想知道发生了什幺。

隐藏层神经元只是将输入的加权和复製到下一层。没有像sigmoid,tanh或ReLU那样的激活。唯一的非线性是输出层中的softmax计算。

但是,上述模型使用单个上下文词来预测目标。我们可以使用多个上下文单词来做同样的事情。

谷歌图片

上面的模型採用 C context words。当 Wvn 用于计算隐藏层输入时,我们对所有这些C上下文字输入 平均值。

因此,我们已经看到了如何使用上下文单词生成单词表示。但是还有一种方法可以做同样的事情。我们可以使用目标词(我们想要生成它们的表示)来预测上下文,并且在过程中,我们生成表示。另一个名为Skip Gram模型的变体就是这样做的。

Skip-Gram模型:

这看起来像多上下文CBOW模型刚刚被翻转。在某种程度上这是事实。

我们将目标词输入网络。该模型输出C概率分布。这是什幺意思?

对于每个上下文位置,我们得到V概率的C概率分布,每个单词一个。

在这两种情况下,网络都使用反向传播来学习。详细的数学可以在 这里 找到

谁赢?

两者各有利弊。根据Mikolov的说法,Skip Gram可以很好地处理少量数据,并且可以很好地代表罕见的单词。

另一方面,CBOW更快,并且对更频繁的单词具有更好的表示。

什幺在前面?

以上解释是非常基本的。它只是让您高度了解嵌入字是什幺以及Word2Vec如何工作。

还有很多东西。例如,为了使算法在计算上更有效,使用诸如Hierarchical Softmax和Skip-Gram Negative Sampling之类的技巧。所有这些都可以在 这里 找到。