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)=∑u∈D[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=w′w=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(u∣Context(w))其中p(u∣Context(w))={σ(XwTθu)1−σ(XwTθu)Lw(u)=1Lw(u)=0=[σ(XwTθu)]Lw(u)⋅[1−σ(XwTθu)]1−Lw(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)u∈NEG(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(D∣w,Context(w)),即,求联合概率分布(NCE的思想)。
3.2.1 梯度计算
对于给定语料库 C C C,整体的优化目标为最大化 G = ∏ w ∈ C g ( w ) G=\prod_{w \in C} g(w) G=∏w∈Cg(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=logw∈C∏g(w)=w∈C∑logg(w)=w∈C∑logu∈{w}⋃NEG(w)∏{[σ(XwTθu)]Lw(u)⋅[1−σ(XwTθu)]1−Lw(u)}=w∈C∑u∈{w}⋃NEG(w)∑{Lw(u)⋅log[σ(XwTθu)]+[1−Lw(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)]+[1−Lw(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 ∂θu∂L(w,u)=∂θu∂{Lw(u)⋅log[σ(XwTθu)]+[1−Lw(u)]⋅log[1−σ(XwTθu)]}利用[logσ(x)]′=1−σ(x),[log(1−σ(x))]′=−σ(x)得=Lw(u)[1−σ(XwTθu)]Xw−[1−Lw(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 ∂Xw∂L(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)∑∂Xw∂L(w,u),w′∈Context(w)
3.2.2 伪码
CBOW模型的伪码如下:
