word2vec是一个产生词向量的模型,是一个双层的神经网络 。非常善于找出词汇的相似度,同时可用于处理之前的技术(像one-hot编码和WordNet)处理不了的语义关系。它可以利用神经网络从大量的无标注的文本中提取有用信息。我们也可以将它看成是一个工具,它里面包含了三种重要的模型:
(1)NNLM (神经网络语言模型)
(2)C&W
(3)CBOW和Skip-gram
其中CBOW(跳妖式模型)和Sikp-gram(连续式模型)尤为重要 它们用于神经网络语言模型
CBOW模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。比如下面这段话,我们的上下文大小取值为4,特定的这个词是"Learning",也就是我们需要的输出词向量,上下文对应的词有8个,前后各4个,这8个词是我们模型的输入。由于CBOW使用的是词袋模型,因此这8个词都是平等的,也就是不考虑他们和我们关注的词之间的距离大小,只要在我们上下文之内即可。
这样我们这个CBOW的例子里,我们的输入是8个词向量,输出是所有词的softmax概率(训练的目标是期望训练样本特定词对应的softmax概率最大),对应的CBOW神经网络模型输入层有8个神经元,输出层有词汇表大小个神经元。隐藏层的神经元个数我们可以自己指定。通过DNN的反向传播算法,我们可以求出DNN模型的参数,同时得到所有的词对应的词向量。这样当我们有新的需求,要求出某8个词对应的最可能的输出中心词时&