(三)Word2vec -- 3 基于Negative Sampling的模型

3. 基于Negative Sampling的模型

3.1 选取负样本

选取负样本需要按照一定的概率分布,Word2vec的作者们经测试发现:最佳的分布是 3 4 \frac {3}{4} 43次幂的Unigram distribution。

  • Unigram distribution的定义
    Unigram来自于Unigram Model(即,一元模型),认为语料库中所有词出现的概率都是互相独立的。
    因此,Unigram distribution是在语料库中随机选择,即,高频词被选中的概率大,低频词被选中的概率小。
    其概率分布公式如下:
    p ( w ) = [ c o u n t ( w ) ] 3 4 ∑ u ∈ D [ c o u n t ( u ) ] 3 4 p(w)=\frac {[count(w)]^{\frac {3}{4}}}{\sum_{u \in D}[count(u)]^{\frac {3}{4}}} p(w)=uD[count(u)]43[count(w)]43


3.2 CBOW模型

CBOW模型中,是已知词 w w w的上下文 C o n t e x t ( w ) Context(w) Context(w),需要预测 w w w

假设已选定一个关于 w w w的负样本子集 N E G ( w ) NEG(w) NEG(w)(即,每次只从词典里随机选取一些word作为当前词 w w w的负样本),且对词典 D D D中的任意词 w ′ w' w,都有:

L w ( w ′ ) = { 1 w = w ′ 0 w ≠ w ′ L^w(w')=\begin{cases} 1 & \text {$w=w'$} \\ 0 & \text{$w\not=w'$} \end{cases} Lw(w)={ 10w=ww=w

那么,对于一个给定的正样本 ( C o n t e x t ( w ) , w ) (Context(w), w) (Context(w),w),希望最大化:

g ( w ) = ∏ u ∈ { w } ⋃ N E G ( w ) p ( u ∣ C o n t e x t ( w ) ) 其 中 p ( u ∣ C o n t e x t ( w ) ) = { σ ( X w T θ u ) L w ( u ) = 1 1 − σ ( X w T θ u ) L w ( u ) = 0 = [ σ ( X w T θ u ) ] L w ( u ) ⋅ [ 1 − σ ( X w T θ u ) ] 1 − L w ( u ) g(w)=\prod_{u \in \{w\} \bigcup NEG(w)}p(u|Context(w)) \\ \text{} \\ 其中 \\ \text{} \\ p(u|Context(w))=\begin{cases} \sigma(X^T_w\theta^u) & \text {$L^w(u)=1$} \\ 1-\sigma(X^T_w\theta^u) & \text{$L^w(u)=0$} \end{cases} \\ \text{} \\ =[ \sigma(X^T_w\theta^u)]^{L^w(u)} \cdot [1-\sigma(X^T_w\theta^u)]^{1-L^w(u)} g(w)=u{ w}NEG(w)p(uContext(w))p(uContext(w))={ σ(XwTθu)1σ(XwTθu)Lw(u)=1Lw(u)=0=[σ(XwTθu)]Lw(u)[1σ(XwTθu)]1Lw(u)

因此,有:

g ( w ) = σ ( X w T θ w ) ∏ u ∈ N E G ( w ) [ 1 − σ ( X w T θ u ) ] g(w)=\sigma(X^T_w\theta^w) \prod_{u \in NEG(w)}[1-\sigma(X^T_w\theta^u)] g(w)=σ(XwTθw)uNEG(w)[1σ(XwTθu)]

其中, σ ( X w T θ w ) \sigma(X^T_w\theta^w) σ(XwTθw) σ ( X w T θ u ) \sigma(X^T_w\theta^u) σ(XwTθu)分别表示:上下文为 C o n t e x t ( w ) Context(w) Context(w)时,预测中心词为 w w w的概率和为 u u u的概率(即,一个二分类)。

因此,最大化 g ( w ) g(w) g(w)相当于增大正样本的概率,同时降低负样本的概率,而这就是所期望的。

事实上,此时的 g ( w ) g(w) g(w)表示 P ( D ∣ w , C o n t e x t ( w ) ) P(D|w,Context(w)) P(Dw,Context(w)),即,求联合概率分布(NCE的思想)。


3.2.1 梯度计算

对于给定语料库 C C C,整体的优化目标为最大化 G = ∏ w ∈ C g ( w ) G=\prod_{w \in C} g(w) G=wCg(w)。因此,有损失函数:

L = l o g G = l o g ∏ w ∈ C g ( w ) = ∑ w ∈ C l o g   g ( w ) = ∑ w ∈ C l o g ∏ u ∈ { w } ⋃ N E G ( w ) { [ σ ( X w T θ u ) ] L w ( u ) ⋅ [ 1 − σ ( X w T θ u ) ] 1 − L w ( u ) } = ∑ w ∈ C ∑ u ∈ { w } ⋃ N E G ( w ) { L w ( u ) ⋅ l o g [ σ ( X w T θ u ) ] + [ 1 − L w ( u ) ] ⋅ l o g [ 1 − σ ( X w T θ u ) ] } L= logG=log \prod_{w \in C} g(w)=\sum_{w \in C} log\, g(w) \\ \text{} \\ =\sum_{w \in C}log \prod_{u \in \{w\} \bigcup NEG(w)} \{[ \sigma(X^T_w\theta^u)]^{L^w(u)} \cdot [1-\sigma(X^T_w\theta^u)]^{1-L^w(u)}\} \\ \text{} \\ =\sum_{w \in C} \sum_{u \in \{w\} \bigcup NEG(w)} \{L^w(u) \cdot log[\sigma(X^T_w\theta^u)] + [1-L^w(u)] \cdot log[1-\sigma(X^T_w\theta^u)]\} L=logG=logwCg(w)=wClogg(w)=wClogu{ w}NEG(w){ [σ(XwTθu)]Lw(u)[1σ(XwTθu)]1Lw(u)}=wCu{ w}NEG(w){ Lw(u)log[σ(XwTθu)]+[1Lw(u)]log[1σ(XwTθu)]}

令:

L ( w , u ) = L w ( u ) ⋅ l o g [ σ ( X w T θ u ) ] + [ 1 − L w ( u ) ] ⋅ l o g [ 1 − σ ( X w T θ u ) ] L(w,u)=L^w(u) \cdot log[\sigma(X^T_w\theta^u)] + [1-L^w(u)] \cdot log[1-\sigma(X^T_w\theta^u)] L(w,u)=Lw(u)log[σ(XwTθu)]+[1Lw(u)]log[1σ(XwTθu)]

求最大似然,采用「随机梯度上升法」。


计算梯度:

∂ L ( w , u ) ∂ θ u = ∂ ∂ θ u { L w ( u ) ⋅ l o g [ σ ( X w T θ u ) ] + [ 1 − L w ( u ) ] ⋅ l o g [ 1 − σ ( X w T θ u ) ] } 利 用 [ l o g σ ( x ) ] ′ = 1 − σ ( x ) , [ l o g ( 1 − σ ( x ) ) ] ′ = − σ ( x ) 得 = L w ( u ) [ 1 − σ ( X w T θ u ) ] X w − [ 1 − L w ( u ) ] σ ( X w T θ u ) X w = [ L w ( u ) − σ ( X w T θ u ) ] X w \frac{\partial L(w,u)}{\partial \theta^u}=\frac{\partial}{\partial \theta^u} \{ L^w(u) \cdot log[\sigma(X^T_w\theta^u)] + [1-L^w(u)] \cdot log[1-\sigma(X^T_w\theta^u)] \} \\ \text{} \\ 利用 [log\sigma(x)]'=1-\sigma(x), [log(1-\sigma(x))]'=-\sigma(x) 得 \\ \text{} \\ =L^w(u) [1-\sigma(X^T_w\theta^u)] X_w - [1-L^w(u)] \sigma(X^T_w\theta^u) X_w \\ \text{} \\ = [L^w(u) - \sigma(X^T_w\theta^u)] X_w θuL(w,u)=θu{ Lw(u)log[σ(XwTθu)]+[1Lw(u)]log[1σ(XwTθu)]}[logσ(x)]=1σ(x),[log(1σ(x))]=σ(x)=Lw(u)[1σ(XwTθu)]Xw[1Lw(u)]σ(XwTθu)Xw=[Lw(u)σ(XwTθu)]Xw


根据对称性:

∂ L ( w , u ) ∂ X w = [ L w ( u ) − σ ( X w T θ u ) ] θ u \frac{\partial L(w,u)}{\partial X_w}=[L^w(u) - \sigma(X^T_w\theta^u)] \theta^u XwL(w,u)=[Lw(u)σ(XwTθu)]θu


因此,对于词向量的更新为:

v ( w ′ ) : = v ( w ′ ) + η ∑ u ∈ { w } ⋃ N E G ( w ) ∂ L ( w , u ) ∂ X w , w ′ ∈ C o n t e x t ( w ) v(w'):=v(w')+\eta \sum_{u \in \{w\} \bigcup NEG(w)} \frac{\partial L(w,u)}{\partial X_w}, w' \in Context(w) v(w):=v(w)+ηu{ w}NEG(w)XwL(w,u),wContext(w)


3.2.2 伪码

CBOW模型的伪码如下:



参考

博客:Word2Vec-知其然知其所以然

猜你喜欢

转载自blog.csdn.net/m0_38111466/article/details/108209353