目录
原因:
- 看了几篇提及CBOW(Continuous Bag-of-Word)的综述,都没直接看懂。综述中都指向这篇文章的这张图。
word2vec是一个预训练(pretrained)模型,在大量语料上训练词向量(或者称为词嵌入,word embedding)。尽管训练语料与应用场景不尽相同,但实验表明,对下游(downstream)应用效果良好。
CBOW的目的是通过上下文(context)预测目标词(target word)。举例来说,“I like this cute [target word] very much”,其中[target word]就是要预测的目标词,而上下文指的是与目标词距离为k的窗口内的词,如果窗口大小m=2,则上下文为“this cute”和“very much”。N-gram只考虑目标词前面的词。
我的理解:CBOW的训练模型,以m=1为例,训练数据train_data为多段文本的集合,其中每段文本,以text表示,可以得到len(text)-2个训练样本。例如,text=‘I love Tom Hank’,则训练样本两个,分别为‘I love Tom’和‘love Tom Hank’,目标词分别为‘love’和‘Tom’。输入张量shape=(None,sequence_length),其中第一维为None,代表输入个数,第二维为sequence_length,大小为2m+1。然后,送入嵌入Embedding层。然后,Dense层,最后,softmax层,得到vocabulary中每个词的概率。
实际上,采用bigram模型,即只考虑上下文中的一个词(没说是左侧还是右侧),也没有Embedding层,输入是这个词one-hot编码,也就是说,编码长度是vocabulary的大小V。输入是V维列向量。对于vocabulary中的第k个word x k \textbf{x}_k xk,只有第k维=1,其余为0。
模型三层,输入层,隐藏层(全连接+softmax),输出层。
- 输入层——隐藏层之间的权重矩阵
W
\textbf{W}
W是
V
×
N
V\times N
V×N维,隐藏层——输出层之间的权重矩阵
W
′
\textbf{W}'
W′是
N
×
V
N\times V
N×V维矩阵。
隐藏层的输入(或者说输入层的输出)是 W T x \textbf{W}^\textrm{T}\textbf{x} WTx,即N维列向量 h \textbf{h} h。将 W \textbf{W} W写作列向量的形式,即 W = ( w 1 , … , w V ) T \textbf{W}=(\textbf{w}_1,\ldots , \textbf{w}_V)^\textrm{T} W=(w1,…,wV)T。因为输入 x \textbf{x} x只有第k维=1,其余为0,所以
h = W T x = ( w 1 , … , w V ) x = w k \textbf{h}=\textbf{W}^\textrm{T}\textbf{x}=(\textbf{w}_1,\ldots , \textbf{w}_V)\textbf{x}=\textbf{w}_k h=WTx=(w1,…,wV)x=wk。
这里, w k \textbf{w}_k wk是第k个word的向量表示, x k \textbf{x}_k xk是第k个word的one-hot表示。
This implies that the link (activation) function of the hidden layer units is simply linear (i.e., directly passing its weighted sum of inputs to the next layer). - 隐藏层——输出层之间的权重矩阵
W
′
\textbf{W}'
W′是
N
×
V
N\times V
N×V维矩阵,可以表示为
W
′
=
(
w
1
′
,
…
,
w
N
′
)
T
\textbf{W}'=(\textbf{w}'_1,\ldots , \textbf{w}'_N)^\textrm{T}
W′=(w1′,…,wN′)T。
W
′
T
h
=
(
w
1
′
,
…
,
w
N
′
)
h
=
(
w
1
′
h
,
…
,
w
N
′
h
)
\textbf{W}'^\textrm{T}\textbf{h}=(\textbf{w}'_1,\ldots , \textbf{w}'_N)\textbf{h}=(\textbf{w}'_1\textbf{h},\ldots , \textbf{w}'_N\textbf{h})
W′Th=(w1′,…,wN′)h=(w1′h,…,wN′h)。其中,每个
w
i
′
h
=
(
s
1
,
…
,
s
N
)
\textbf{w}'_i\textbf{h}=(s_1,\ldots,s_N)
wi′h=(s1,…,sN)代表第i个word的分数score。
softmax函数计算给定上下文词 w C w_C wC每个word w j w_j wj的后验概率posterior probability:
p ( w j ∣ w C ) = y j = exp ( s j ) ∑ j ′ = 1 V exp ( s j ′ ) p(w_j|w_C)=y_j=\frac{\exp(s_j)}{\sum_{j'=1}^{V}\exp(s_j')} p(wj∣wC)=yj=∑j′=1Vexp(sj′)exp(sj)。
skip-gram与CBOW相反,是通过中心词预测上下文。
- 此外,word2vec模型与CBOW和skip-gram的关系是什么?(后面再写)
word2vec是一个预训练(pretrained)模型,在大量语料上训练词向量(或者称为词嵌入,word embedding)。尽管训练语料与应用场景不尽相同,但实验表明,对下游(downstream)应用效果良好。