Word2Vec
Google
连续词袋模型(continuous bag of words, CBOW)
连续词袋模型用一个中心词在文本序列前后的背景词来预测该中心词
∏t=1TP(w(t)∣w(t−m),…,w(t−1),w(t+1),…,w(t+m)). ∏ t = 1 T P ( w ( t ) ∣ w ( t − m ) , … , w ( t − 1 ) , w ( t + 1 ) , … , w ( t + m ) ) .
上式的最大似然估计与最小化以下损失函数等价:
−∑t=1TlogP(w(t)∣w(t−m),…,w(t−1),w(t+1),…,w(t+m)). − ∑ t = 1 T log P ( w ( t ) ∣ w ( t − m ) , … , w ( t − 1 ) , w ( t + 1 ) , … , w ( t + m ) ) .
设中心词 wc 在词典中索引为 c,背景词 wo1,…,wo2m w o 1 , … , w o 2 m 在词典中索引为 o1,…,o2m o 1 , … , o 2 m ,损失函数中的给定背景词生成中心词的概率可以通过 softmax 函数定义为
P(wc∣wo1,…,wo2m)=exp(u⊤c(vo1+…+vo2m)/(2m))∑i∈Vexp(u⊤i(vo1+…+vo2m)/(2m)). P ( w c ∣ w o 1 , … , w o 2 m ) = exp ( u c ⊤ ( v o 1 + … + v o 2 m ) / ( 2 m ) ) ∑ i ∈ V exp ( u i ⊤ ( v o 1 + … + v o 2 m ) / ( 2 m ) ) .
∂logP(wc∣wo1,…,wo2m)∂voi=12m(uc−∑j∈Vexp(u⊤jvc)∑i∈Vexp(u⊤ivc)uj). ∂ log P ( w c ∣ w o 1 , … , w o 2 m ) ∂ v o i = 1 2 m ( u c − ∑ j ∈ V exp ( u j ⊤ v c ) ∑ i ∈ V exp ( u i ⊤ v c ) u j ) .
∂logP(wc∣wo1,…,wo2m)∂voi=12m(uc−∑j∈VP(wj∣wc)uj). ∂ log P ( w c ∣ w o 1 , … , w o 2 m ) ∂ v o i = 1 2 m ( u c − ∑ j ∈ V P ( w j ∣ w c ) u j ) .
训练结束后,对于词典中的任一索引为 i 的词,我们均得到该词作为背景词和中心词的两组词向量 v_i 和 u_i。在自然语言处理应用中,我们会使用连续词袋模型的背景词向量。
跳字模型(Skip-gram)
在跳字模型中,我们用一个词来预测它在文本序列周围的词。
假设词典索引集 V V 的大小为