文章目录
在上一篇学习笔记《 word2vec学习笔记之文本向量化概述》中介绍了word2vec提出的一些背景(当然,除了该篇文章中所说的一些向量化方法之外,在word2vec之后,还有fasttext,glove等其他方法,但在
word2vec学习笔记系列中不对这些新的方法进行介绍)。本文将详细针对word2vec中的CBOW和skip-gram这两种形式进行详细介绍。本文主要是学习《word2vec Parameter Learning Explained》进行笔记。
word2vec的两个模型与 上一篇笔记中提到的NNLM相似,均是在训练语言模型的过程中,使用语言模型的中间产物来得到词表的词向量。
1. Continuous Bag-of-Word Model(CBOW)

上图是连续词袋模型CBOW的结构图。该模型中,是使用上下文词汇来预测中间词。下面将与《word2vec Parameter Learning Explained》相同,分别从一个词的上下文和多个词的上下文来进行介绍。
1.1 One-word context(一个词的上下文)
这里是先简单的从一个词的输入上下文开始介绍,即假设输入侧只有一个词。此时CBOW模型的结构如下

上图中,输入层是一个词的one-hot形式,假设词表大小为V,那么输入是一个大小为V维的one-hot向量,该one-hot向量中,仅有所对应的词的下标处为1,其他位置均为0,我们可以将输入向量记为 x x x。
输入层经过与一个 V ∗ N V*N V∗N大小的矩阵 W V ∗ N W_{V*N} WV∗N相乘后,得到N维大小的隐藏层的向量 h h h,从输入层到隐藏层可以理解为是一个全连接过程,但是跟平时的全连接不同的是,这里没有进行非线性函数的处理。并且,由于输入是一个one-hot向量,因此相乘后的结果实际上是从矩阵 W V ∗ N W_{V*N} WV∗N中取出第 k k k行的向量(one-hot向量中1的下标为k),也就是词 w I w_I wI所对应的词向量。即 h = W T x = W k , ⋅ T : = v w I T h=W^Tx=W^T_{k,·}:=v^T_{w_I} h=WTx=Wk,⋅T:=vwIT
隐藏层再经过与一个 N ∗ V N*V N∗V大小的矩阵 W ′ W' W′相乘后,得到V维大小的输出层的向量 u u u。其中输出层向量中的第 j j j个元素 u j u_{j} uj就是矩阵 W ′ W' W′中的第 j j j列向量 v w j ′ v'_{ w_j} vwj′与隐藏层向量 h h h的乘积 u = h W ′ u=hW' u=hW′ u j = v w j ′ T h u_{j}={v'_{w_j}}^{T}h uj=vwj′Th然后将输出的向量 u u u进行softmax处理,得到此表中每一个词的预测概率,而输出概率最大的词即为本次预测的结果。即,输入 w I w_I wI输出 w j w_{j} wj的概率为 p ( w j ∣ w I ) = y j = e x p ( u j ) ∑ j ′ = 1 V e x p ( u j ′ ) p(w_j|w_I)=y_j=\frac{exp(u_j)}{\sum^V_{j'=1}exp(u_{j'})} p(wj∣wI)=yj=∑j′=1Vexp(uj′)exp(uj)
隐藏层到输出层之间的权重更新
在模型训练过程中,假设当输入的词是 w I w_I wI时,期望输出的词是 w O w_O wO,那么我们希望 p ( w O ∣ w I ) p(w_O|w_I) p(wO∣wI)能够最大,即我们训练的目标是使得下面的式子最大化 max p ( w O ∣ w I ) = max y j ∗ = max log y j ∗ = u j ∗ − log ∑ j ′ = 1 V e x p ( u j ′ ) : = − E \max p(w_O|w_I)=\max y_{j*}=\max \log y_{j*}=u_{j*}-\log \sum^V_{j'=1}exp(u_{j'}):=-E maxp(wO∣wI)=maxyj∗=maxlogyj∗=uj∗−logj′=1∑Vexp(uj′):=−E其中, E = − log p ( w O ∣ w I ) E=-\log p(w_O|w_I) E=−logp</
word2vec详解:CBOW与Skip-gram

最低0.47元/天 解锁文章
1361

被折叠的 条评论
为什么被折叠?



