人工智能A7论坛 >> Tensorflow和深度学习笔记_论坛版 >> 4.深度学习预备知识 >> 4.4 Word embedding

4.4.1 word2vec

    Word2vec 是 Google 在 2013 年年中开源的一款将词表征为实数值向量的高效工具其通过神经网络训练,把对文本内容的处理简化为 维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似度。Word2vec输出的词向量可以被用来做很多 NLP 相关的工作,比如聚类、找同义词、词性分析等等。如果换个思路, 把词当做特征,那么Word2vec就可以把特征映射到 维向量空间,可以为文本数据寻求更加深层次的特征表示 。

    与潜在语义分析(Latent Semantic Index, LSI)、潜在狄立克雷分配(Latent Dirichlet AllocationLDA)的经典过程相比,Word2vec利用了词的上下文,语义信息更加地丰富。

 

Distributed representation

Word2vec 使用的是 Distributed representation 的词向量表示方式。Distributed representation 最早由 Hinton在 1986 年提出。其基本思想是 通过训练将每个词映射成 维实数向量(一般为模型中的超参数),通过词之间的距离(比如 cosine 相似度、欧氏距离等)来判断它们之间的语义相似度.

 

Word2vec的神经网络结构

Word2vec采用一个三层的神经网络 ,输入层-隐层-输出层。有个核心的技术是 根据词频用Huffman编码 ,使得所有词频相似的词隐藏层激活的内容基本一致,出现频率越高的词语,他们激活的隐藏层数目越少,这样有效的降低了计算的复杂度。而Word2vec大受欢迎的一个原因正是其高效性,Mikolov 在论文中指出,一个优化的单机版本一天可训练上千亿词。

这个三层神经网络本身是 对语言模型进行建模 ,但也同时 获得一种单词在向量空间上的表示 ,而这个副作用才是Word2vec的真正目标。

 

神经网络语言模型

    神经网络语言模型NNLM(Neural Network Language Model)方面最值得阅读的文章是Deep Learning二号任务Bengio的《A Neural Probabilistic Language Model》,JMLR 2003

NNLM采用的是Distributed Representation,即每个词被表示为一个浮点向量。

其模型图如下:

     目的是学到一个模型:

 

    需要满足的约束为:

CBOW:

CBOWContinuous Bag-of-Words Model的缩写,是一种与前向NNLM类似的模型,不同点在于CBOW去掉了最耗时的非线性隐层且所有词共享隐层。如下图所示。

Skip-Gram

    Skip-Gram模型的图与CBOW正好方向相反,从图中看应该Skip-Gram应该预测概率p(wi|wt)wt),其中��−��≤��≤��+����tc是决定上下文窗口大小的常数,c越大则需要考虑的pair就越多,一般能够带来更精确的结果,但是训练时间也会增加

   CBOW类似,Skip-Gram也有两种可选的算法:层次SoftmaxNegative Sampling