Bootstrap 插件

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/bootstrap-scrollspy-plugin.html

NLP word2vec 词向量原理实例详解


word2vec 是一群用来产生词向量的相关模型,它是 2013 年 Tomas Mikolov 领导的谷歌研究团队发表的词向量工具。word2vec 工具主要包含两个模型:连续词袋模型continuous bag of words,简称 CBOW)和跳字模型skip-gram),以及两种高效训练的方法:负采样negative sampling)和层序softmaxhierarchical softmax)。

概念

word2vec 全称 word 2 vector,顾名思义指词的向量化,一般来讲,词向量主要有两种形式,分别是稀疏向量稠密向量

  • 稀疏向量,又称为 one-hot representation,独热表示,就是用一个很长的向量来表示一个词,向量的长度为词典的大小 N,向量的分量只有一个 1,其它全为 0,1 的位置对应该词在词典中的索引。
  • 稠密向量,又称为 distributed representation,即分布式表示,它是通过训练将每个词映射成一个固定长度的短向量,所有这些向量就构成一个词向量空间,每一个向量可视为该空间上的一个点。此时,向量长度可以自由选择,与词典规模大小无关。

模型

word2vec 一般分为 CBOW(Continuous Bag-of-Words)与 Skip-Gram 两种模型:

  1. CBOW:根据中心词周围的词(上下文词)来预测中心词(通俗地讲,用上下文预测这个词)。
  2. Skip-Gram:与 CBOW 正好相反,根据中心词来预测周围词(通俗地讲,预测一个词的上下文)。

二者的结构十分相似,理解了 CBOW,对于 Skip-Gram 也就基本理解了。

CBOW

CBOW 模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。比如下面这段话,我们的上下文大小取值为 4,特定的这个词是 "Learning",也就是我们需要的输出词向量,上下文对应的词有 8 个,前后各 4 个,这 8 个词是我们模型的输入。由于 CBOW 使用的是词袋模型,因此这 8 个词都是平等的,也就是不考虑他们和我们关注的词之间的距离大小,只要在我们上下文之内即可。

这个 CBOW 的例子里,我们的输入是 8 个词向量,输出是所有词的 softmax 概率(训练的目标是期望训练样本特定词对应的 softmax 概率最大),对应的 CBOW 神经网络模型输入层有 8 个神经元,输出层有词汇表大小个神经元。隐藏层的神经元个数我们可以自己指定。通过 DNN 的反向传播算法,我们可以求出 DNN 模型的参数,同时得到所有的词对应的词向量。这样当我们有新的需求,要求出某 8 个词对应的最可能的输出中心词时,我们可以通过一次 DNN 前向传播算法并通过 softmax 激活函数找到概率最大的词对应的神经元即可。