word2vec模型

word2vec是一种无监督预训练词向量模型。

CBOW

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} wtk,,wt+k

给定 w t w_t wt 的上下文,字典中的其他词 w v ( v ∈ V ) w_v(v\in V) wv(vV) 出现的概率的预测为

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(wvwtk,,wt+k)=iVexp(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,,ywV)RV是关于模型参数和 w t w_t wt 的上下文 w t − k , … , w t + k w_{t-k},\dots,w_{t+k} wtk,,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+Uh(wtk,,wt+kW)

其中, 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) wtk,,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} wTk 的每个词得到一个上下文,即得到 T − 2 k T-2k T2k 个上下文。将每个上下文可以看作一个样本。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=kTklogP(wtwtk,,wt+k)=T1t=kTk[ywtlog(iVexp(ywi))]

Skip-gram

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(wOwI)=wVexp(vwvwI)exp(vwOvwI)

模型优化的目标是,最大化给定中心词 w t w_t wt 时, w t − c , … , w t + c w_{t-c},\dots,w_{t+c} wtc,,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=kTkc<j<c, j̸=0logP(wt+jwt)=T1t=kTkc<j<c, j̸=0[vwt+jvwtlog(wVexp(vwvwt))]

Hierachical softmax

由于计算概率 P ( w O ∣ w I ) P(w_O|w_I) P(wOwI) 的复杂度很高,因此需要对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(wwI)=j=1Lσ([[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(wwI)=1

第一个好处是,利用full softmax函数计算 P ( w ∣ w I ) P(w|w_I) P(wwI) 时,涉及的节点个数为n;而利用hierachical softmax 计算 P ( w ∣ w I ) P(w|w_I) P(wwI) ,只需计算从根节点到叶子结点 w w w 所经过的每个节点 n ( w , j ) n(w,j) n(w,j) 的概率的乘积,根据哈夫曼树的结构,哈夫曼树的高度最多为 log ⁡ W \log W logW,因此计算一个概率最多只涉及 log ⁡ W \log W logW项。

第二个好处是,哈夫曼树权重越大的节点到根节点的路径越短。因此当w出现的越频繁,计算涉及的乘积项越少。

Negative Sampling

噪声对比估计(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(wOwI)logσ(vwOvwI)+i=1kEwiPn(w)[logσ(vwivwI)]

其中, 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。

Subsampling

目的:降低频繁的词作为中心词进行训练出现的概率。假设每个被作为中心词进行训练的词,都有一个概率被舍弃,这个舍弃的概率为
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)=1f(wi)t ,  t105
f ( w i ) f(w_i) f(wi)为词 w i w_i wi出现的频率,当词频率小于 1 0 − 5 10^{-5} 105时,降采样的概率为0;词频率越高,降采样概率越高。通过降采样可以减少常见词作为中心词出现的次数,提高罕见词的出现次数。

你可能感兴趣的:(机器学习,word2vec,机器学习)