word2vec和word embedding

1.介绍

首先,word2vec 和 word embedding 两者并不是平级的,其都属于 语言表示(Representation)的范畴。
语言表示(Representation)是将人类的自然语言表示成计算机可以处理的数值形式,一般的方式有独热表示(one-hot Representation)、分布式表示(Distributed Reprensentation)等。
分布式表示(Distributed Reprensentation)又包括基于矩阵、基于聚类、基于神经网络的方式,一般将 基于神经网络的分布式表示 称为 词嵌入(word embedding)。
而 word embedding 又包括很多不同的算法集合,或者叫做实现工具,比如 SEENA、FastText、word2vec 等。
具体的关系如下:
Representation → Distributed Reprensentation → word embedding → word2vec

具体可参见如下文章word embeding
word embeding and word2vec
以及邱锡鹏《神经网络与深度学习》表示学习章节

2.word2vec

为什么要是用word2vec(相对于one-hot编码)

在这里插入图片描述

  • 更dence(与one-hot的sparse相对)
  • meaningful ,one-hot作为一个稀疏矩阵,我们无法得知连个向量之间的关系,而word2vec可以求出两个向量的关系,如上图,我们可以通过求距离的方式得知,machine 和learning的相关性更高。
  • 容量大:简单的来说及时,one-hot 一个单词可能需要一个维度,这就造成one-hot矩阵十分的巨大,然而,word2vec这种分布式表示方法,可以用有限的维度,表示无限的单词,因为向量里的数是实数。

3.怎们求

事实上,比较容易想到的直觉的方案,就是一句话中里的最近的一般相关性会高一些
比如下面这句话:

We are working on NLP project, it is interesting

对于这句话来说,we are 的相关性显然高于 we 和 NLP或者其他的词相关性。这也印证了上面说的直觉的方案,也为我们提供了思路:

1.Skip-Gram Mode

Skip-gram算法就是在给出目标单词(中心单词)的情况下,预测它的上下文单词(除中心单词外窗口内的其他单词,这里的窗口大小是2,也就是左右各两个单词,那么 NLP的上下文单词为:working,on,project,it)

对于如下:

We _working _ NLP project, it is interesting,在语料库的训练下,想要求的working两边的的词可能是什们(事实上还有一种CBOW的这里暂时不讲,有兴趣的可以参看论文链接)。
怎们求呢:
因为我们要求working两边的的词可能是什么,其实就是求和working相关的词,那么怎们才算相关度高(相邻的词),那就相当于在某种语料环境下(We are working on NLP project, it is interesting),让这个词working左右两边出现的词的概率最大max(P(xxx|working)),在概率最大的情况下进行一个softmax变换,在概率最大约束的情况下求出参数(u,v),求出词和词之间的word2vec向量,具体的形式就是如下图,根据条件概率转换为softmax,然后求Word2vec,

在这里插入图片描述

经过如上图的训练就出U,V矩阵,也就是word2vec

论文:
文章介绍了两种基本模型:CBOW和Skip-Gram模型的原理和求导的细节,之后介绍了优化模型的方法:分层softmax和负采样技术。是理解word2vec的非常好的资料
word2vec Parameter Learning Explained

译文