连续词袋模型(Continous bag of words, CBOW)

将高维度的词表示转换为低纬度的词表示方法我们称之为词嵌入(word embedding)。

CBOW是通过周围词去预测中心词的模型。(Skip-gram是用中心词预测周围词)

连续词袋模型(Continous bag of words, CBOW)_第1张图片

CBOW模型的结构

 连续词袋模型(Continous bag of words, CBOW)_第2张图片

 最左边为上下文词,这些词用One-hot编码表示,维度为1*V(上图容易让人理解错误)

每个上下文的词向量都需要乘以一个共享的矩阵W,由于整个模型是一个神经网络结构,我们将这个存入输入层和隐藏层之间的矩阵定义为W,矩阵的维度为V*N(N是我们自己定义的一个维度)。

One-hot编码矩阵乘以矩阵W得到的是一个1*N的向量。

因为一个中心词会有多个上下文词,而且每个上下文词都会计算得到一个1*N向量,将这些1*N的向量相加取平均,得到中间层(隐藏层)的向量,这个向量也是1*N,之后这个向量需要乘以一个N*V的矩阵W2,最终得到的输出层维度为1*V。

然后将1*V的向量softmax处理得到新的1*V向量,在V个取值中概率值最大的数字对应的位置所表示的词就是预测结果。

上述就是CBOW模型的前向计算过程。

那个这个模型的训练过程如下:

1.当前词的上下文词语的独热编码输入到输入层;

2.这些词分别乘以同一个矩阵W1后分别得到各自的1*N向量

3.将这些1*N向量相加取平均得到一个1*N向量

4.将这个1*N向量乘以矩阵W2,称为一个1*V向量

5.将1*V向量softmax归一化后输出取每个词的概率向量1*V

6.将概率值最大的数对应的词作为预测词。

7.将预测的结果1*V向量和真实标签1*V向量计算误差,一般是交叉熵

8.在每次前向传播之后反向传播误差,不断调整w1和w2的值。

预测的时候,做一次前向传播即可得到预测的中心词结果。

其实,我们在做CBOW时,最终要的是W1这个V*N矩阵。

你可能感兴趣的:(自然语言处理,人工智能,深度学习,word2vec)