轻松理解CBOW模型
引言
前面我分析了Word2vec的一种模型叫做skip-gram模型。在这篇文章中,我将讲述另一个word2vec模型——连续词袋模型(CBOW)模型。如果你理解skip-gram模型,那么接下来的CBOW模型就更好理解了,因为两者模型互为镜像。我们先来看看CBOW模型与skip-gram模型对比图:
如何,这是不是镜像关系?所以接下来的讲解也会和skip-gram那篇文章极其类似。
前向传播
接下来我们来看下CBOW神经网络模型,CBOW的神经网络模型与skip-gram的神经网络模型也是互为镜像的
在上图中,该模型的输入输出与skip-gram模型的输入输出是相反的。这里输入层是由one-hot编码的输入上下文{
接下来,我们假设我们知道输入与输出权重矩阵的大小。
- 第一步就是去计算隐藏层
h 的输出。如下:h=1CW⋅(∑i=1Cxi)(1)
该输出就是输入向量的加权平均。这里的隐藏层与skip-gram的隐藏层明显不同。- 第二部就是计算在输出层每个结点的输入。如下:
uj=v′Twj⋅h(2)
其中v′Twj 是输出矩阵W′ 的第j 列。- 最后我们计算输出层的输出,输出
yj 如下:yc,j=p(wy,j|w1,...,wc)=exp(uj)∑Vj′=1exp(u′j)(3)
通过BP(反向传播)算法及随机梯度下降来学习权重
在学习权重矩阵
具体推导步骤就不详写了:
- 首先就是定义损失函数,这个损失函数就是给定输入上下文的输出单词的条件概率,一般都是取对数,如下所示:
E=−logp(wO|wI)(4) =−vTwo⋅h−log∑j′=1Vexp(vTwj′⋅h)(5)
接下来就是对上面的概率求导,具体推导过程可以去看BP算法,我们得到输出权重矩阵W′ 的更新规则:w′(new)=w′(old)ij−η⋅(yj−tj)⋅hi(6)
同理权重W 的更新规则如下:w(new)=w(old)ij−η⋅1C⋅EH(7)
参考文献
[1] Mikolov T, Chen K, Corrado G, et al. Efficient Estimation of Word Representations in Vector Space[J]. Computer Science, 2013.(这篇文章就讲了两个模型:CBOW 和 Skip-gram)
[2] Mikolov T, Sutskever I, Chen K, et al. Distributed Representations of Words and Phrases and their Compositionality[J]. 2013, 26:3111-3119.(这篇文章针对Skip-gram模型计算复杂度高的问题提出了一些该进)
[3] Presentation on Word2Vec(这是NIPS 2013workshop上Mikolov的PPT报告)