word2vec是一种无监督预训练词向量模型。
CBOW的全称为Continuous Bag-of-WordModel。模型的任务是在给定某单词的上下文(context)的情况下,预测这个词出现的概率。
具体来说,假设目标词的词向量是 w t w_t wt,大小为 k k k 的窗口中, w t w_t wt 的上下文中的单词为 w t − k , … , w t + k w_{t-k},\dots,w_{t+k} wt−k,…,wt+k。
给定 w t w_t wt 的上下文,字典中的其他词 w v ( v ∈ V ) w_v(v\in V) wv(v∈V) 出现的概率的预测为
P ( w v ∣ w t − k , … , w t + k ) = exp ( y w v ) ∑ i ∈ V exp ( y w i ) P(w_v|w_{t-k},\dots,w_{t+k})=\frac{\exp(y_{w_v})}{\sum_{i\in V}\exp(y_{w_i})} P(wv∣wt−k,…,wt+k)=∑i∈Vexp(ywi)exp(ywv)
其中, y = ( y w 1 , y w 2 , … , y w ∣ V ∣ ) ∈ R ∣ V ∣ y=(y_{w_1},y_{w_2},\dots,y_{w_{|V|}})\in { R}^{|V|} y=(yw1,yw2,…,yw∣V∣)∈R∣V∣是关于模型参数和 w t w_t wt 的上下文 w t − k , … , w t + k w_{t-k},\dots,w_{t+k} wt−k,…,wt+k 的函数。在CBOW中,定义为 y = b + U ⋅ h ( w t − k , … , w t + k ∣ W ) y=b+U\cdot h(w_{t-k},\dots,w_{t+k}|W) y=b+U⋅h(wt−k,…,wt+k∣W)。
其中, b , U , W b,U,W b,U,W为模型的参数, h ( ⋅ ) h(\cdot) h(⋅) 为对 2 k 2k 2k 个向量 w t − k , … , w t + k ( k ≠ 0 ) w_{t-k},\dots,w_{t+k}~(k\neq0) wt−k,…,wt+k (k̸=0) 进行拼接(concatenate)或平均(average)的函数。
换句话说,CBOW模型所做的事就是,对于一个窗口中的 2 k + 1 2k+1 2k+1 个词,将除中心词外的 2 k 2k 2k 个词作为 logitstic regression 的输入,对中心词进行分类问题。分类的类别对应字典中的全部 V V V 个单词,正确的类别是中心词 w t w_t wt 所对应的单词。
假设训练语料库中的词序列为 w 1 , w 2 , . . . , w T w_1,w_2,...,w_T w1,w2,...,wT,取窗口大小为 2 k 2k 2k ,可以为从 w k w_k wk 到 w T − k w_{T-k} wT−k 的每个词得到一个上下文,即得到 T − 2 k T-2k T−2k 个上下文。将每个上下文可以看作一个样本。CBOW模型的目标是最大化每一个词在给定上下文词时,作为中心词出现的平均对数概率
1 T ∑ t = k T − k log P ( w t ∣ w t − k , … , w t + k ) = 1 T ∑ t = k T − k [ y w t − log ( ∑ i ∈ V exp ( y w i ) ) ] \frac1T\sum_{t=k}^{T-k}\log P(w_t|w_{t-k},\dots,w_{t+k})=\frac1T\sum_{t=k}^{T-k}\left[y_{w_t}-\log\left(\sum_{i\in V}\exp(y_{w_i})\right)\right] T1t=k∑T−klogP(wt∣wt−k,…,wt+k)=T1t=k∑T−k[ywt−log(i∈V∑exp(ywi))]
Skip-gram的全称是Continuous Skip-gram Model。与CBOW的思想相反,并非通过上下文预测中心词,而是通过中心词预测上下文单词,即将当前词作为logitstic regression的输入,预测字典中每个词作为当前词的上下文词出现的概率,正确的类别对应真正在当前词的上下文中出现的词。
具体来说,假设每个词作为中心词的词向量为 v v v,作为上下文词的词向量为 v ′ v' v′。给定当前词 w I w_I wI, w O w_O wO为上下文的概率为
P ( w O ∣ w I ) = exp ( v w O ′ ⋅ v w I ) ∑ w ∈ V exp ( v w ′ ⋅ v w I ) P(w_O|w_I)=\frac{\exp{(v'_{w_O}\cdot v_{w_I})}}{\sum_{w\in V}\exp({v'_{w}}\cdot v_{w_I})} P(wO∣wI)=∑w∈Vexp(vw′⋅vwI)exp(vwO′⋅vwI)
模型优化的目标是,最大化给定中心词 w t w_t wt 时, w t − c , … , w t + c w_{t-c},\dots,w_{t+c} wt−c,…,wt+c作为上下文出现的平均对数概率
1 T ∑ t = k T − k ∑ − c < j < c , j ≠ 0 log P ( w t + j ′ ∣ w t ) = 1 T ∑ t = k T − k ∑ − c < j < c , j ≠ 0 [ v w t + j ′ ⋅ v w t − log ( ∑ w ∈ V exp ( v w ′ ⋅ v w t ) ) ] \frac1T\sum_{t=k}^{T-k}\sum_{-c<j<c,~j\neq0}\log P(w'_{t+j}|w_t)=\frac1T\sum_{t=k}^{T-k}\sum_{-c<j<c,~j\neq0}\left[v'_{w_{t+j}}\cdot v_{w_t}-\log\left(\sum_{w\in V}\exp({v'_{w}}\cdot v_{w_t})\right)\right] T1t=k∑T−k−c<j<c, j̸=0∑logP(wt+j′∣wt)=T1t=k∑T−k−c<j<c, j̸=0∑[vwt+j′⋅vwt−log(w∈V∑exp(vw′⋅vwt))]
由于计算概率 P ( w O ∣ w I ) P(w_O|w_I) P(wO∣wI) 的复杂度很高,因此需要对full softmax函数进行近似。采用的方法是hierachical softmax。
首先,将每个词作为一个叶子节点,词的频率作为该节点的权重。Hierachical softmax定义
P ( w ∣ w I ) = ∏ j = 1 L σ ( [ ​ [ n ( w , j + 1 ) = c h ( n ( w , j ) ) ] ​ ] v n ( w , j ) ⋅ v w I ) ) P(w|w_I)=\prod_{j=1}^{L}\sigma\left([\![n(w,j+1)=ch(n(w,j))]\!]~ v_{n(w,j)}\cdot v_{w_I})\right) P(w∣wI)=j=1∏Lσ([[n(w,j+1)=ch(n(w,j))]] vn(w,j)⋅vwI))
可以证明,Hierachical softmax满足 ∑ w = 1 W p ( w ∣ w I ) = 1 \sum_{w=1}^W p(w|w_I)=1 ∑w=1Wp(w∣wI)=1。
第一个好处是,利用full softmax函数计算 P ( w ∣ w I ) P(w|w_I) P(w∣wI) 时,涉及的节点个数为n;而利用hierachical softmax 计算 P ( w ∣ w I ) P(w|w_I) P(w∣wI) ,只需计算从根节点到叶子结点 w w w 所经过的每个节点 n ( w , j ) n(w,j) n(w,j) 的概率的乘积,根据哈夫曼树的结构,哈夫曼树的高度最多为 log W \log W logW,因此计算一个概率最多只涉及 log W \log W logW项。
第二个好处是,哈夫曼树权重越大的节点到根节点的路径越短。因此当w出现的越频繁,计算涉及的乘积项越少。
噪声对比估计(Noise Contrastive Estimation)的假定是,好的模型通过logitstic regression将数据从噪声中区分出来。
利用NCE可以近似对数概率,即
log P ( w O ∣ w I ) ≈ log σ ( v w O ′ v w I ) + ∑ i = 1 k E w i ∼ P n ( w ) [ log σ ( − v w i ′ ⋅ v w I ) ] \log P(w_O|w_I)\approx\log\sigma(v'_{w_O}v_{w_I})+\sum_{i=1}^kE_{w_i\sim P_n(w)}\left[\log\sigma(-v'_{w_i}\cdot v_{w_I})\right] logP(wO∣wI)≈logσ(vwO′vwI)+i=1∑kEwi∼Pn(w)[logσ(−vwi′⋅vwI)]
其中, P n ( w ) P_n(w) Pn(w) 为噪声分布,即负样本的采样分布。
首先,通过变换对数概率的形式,可以减少计算复杂度。因为每次梯度下降只涉及k+2个词向量,而原始的概率表达式涉及n+1个词向量。
另一方面,当最大化NCE对数概率函数时,可以使得中心词与上下文词具有相似的词向量(内积尽可能大),而与负样本具有不相似的词向量(内积尽可能小)。NCE近似的对数概率与softmax形式的对数概率具有相似的作用。
论文通过尝试得到较好的设定为 P n ( w ) = U ( w ) 3 / 4 Z P_n(w)=\frac{U(w)^{3/4}}{Z} Pn(w)=ZU(w)3/4。词出现的频率越高,作为负样本的概率越高。
k通常取值为5~20。
目的:降低频繁的词作为中心词进行训练出现的概率。假设每个被作为中心词进行训练的词,都有一个概率被舍弃,这个舍弃的概率为
P ( w i ) = 1 − t f ( w i ) , t ≈ 1 0 − 5 P(w_i)=1-\sqrt{\frac{t}{f(w_i)}},~~t\approx 10^{-5} P(wi)=1−f(wi)t, t≈10−5
f ( w i ) f(w_i) f(wi)为词 w i w_i wi出现的频率,当词频率小于 1 0 − 5 10^{-5} 10−5时,降采样的概率为0;词频率越高,降采样概率越高。通过降采样可以减少常见词作为中心词出现的次数,提高罕见词的出现次数。