之前说了那么多,现在我们正式开始接触word2vec中涉及到的两个模型,CBOW模型(Continuous Bag-Of-Words Model)和Skip-gram模型(Continuous Skip-gram Model)。CBOW是已知当前词的上下文,来预测当前词,而Skip-gram则相反,是在已知当前词的情况下,预测其上下文。二者的模型结构如下图所示:
![](http://upload-images.jianshu.io/upload_images/4155986-b178fa035a6875b0.png)
对于上面提到的两个模型,word2vec分别给出了两套框架,分别基于Hierarchical Softmax 和 Negative Sampling来进行设计,接下来,我们会分别对这两种CBOW模型进行讲解。
1、基于Hierarchical Softmax的CBOW模型
1.1 模型说明
之前我们提到过,基于神经网络的语言模型的目标函数通常取为如下的对数似然函数:
![](http://upload-images.jianshu.io/upload_images/4155986-ee3c968681543178.png)
其中的关键是条件概率p(w|Context(w))的构造。基于Hierarchical Softmax的CBOW模型优化的目标函数也形如上面的样子。
首先,我们来看一下CBOW的网络结构,它包括三层,分别为输入层,投影层和输出层,假设Context(w)是由词w的前后各c个词组成,下面的图对这三层做了相应的说明:
![](http://upload-images.jianshu.io/upload_images/4155986-82f9d5d986060856.png)
对比之前提到过的神经概率语言模型,CBOW主要在以下三点上与之区别:
1)从输入层到投影层的操作上,神经概率模型通过拼接的方式,而CBOW采用累加的方式
2)从有无隐藏层来看,神经概率模型有隐藏层,而CBOW没有隐藏层
3)从输出层来看,神经概率模型的输出层是线性结构,而CBOW是树形结构
所以,针对神经概率模型大规模的矩阵运算和softmax归一运算,CBOW对其作出了优化,首先去掉了隐藏层,同时输出层改用Huffman树,从而为利用Hierarchical Softmax技术奠定了基础。
1.2 梯度计算
Hierarchical Softmax技术是word2vec中用于提高性能的一项关键技术,为描述方便起见,在具体介绍这个技术之前,先引入若干相关记号,考虑Huffman树中的某个叶子结点,假设它对应词典D中的词w,记:
![](http://upload-images.jianshu.io/upload_images/4155986-8d234a8fbe94e3ac.png)
引入了这么多符号,我们举一个例子来说明上面这些符号,考虑我们在第一讲中提到了巴西世界杯的例子,它构造的Huffman树如下图所示