word2vec之Negative Sampling理解
本文章将介绍基于Negative Sampling的CBOW和Skip-Gram模型。与Hierarchical Softmax相比,Negative Sampling不需要构建复杂的Huffman树,以及进行多次二分类,而是利用简单的随机负采样,能大幅度提高性能。因而可以说Negative Sampling是Hierarchical Softmax的一种改进。
1 CBOW模型
在cbow模型中,已知的是上下文 context(w) c o n t e x t ( w ) ,需要去预测词语 w w 。所以可以换种说法,对于特定的 ,词语 w w 是其正样本,其他词语就是其负样本。但是负样本那么多,我们如何高效的去选择负样本,这就牵涉到Negative Sampling算法。首先,我们假设已经采样到一个负样本集合 。对于一个 w˜ w ~ ,定义一个标签:
ι(w˜)=1 ι ( w ~ ) = 1 当 w˜=w w ~ = w
ι(w˜)=0 ι ( w ~ ) = 0 当 w˜≠w w ~ ≠ w
所以类似逻辑回归,我们定义了一个如下的公式:
p(u|context(w)))=δ(xTwθu) p ( u | c o n t e x t ( w ) ) ) = δ ( x w T θ u ) 当 ι(w˜)=1 ι ( w ~ ) = 1
p(u|context(w)))=1−δ(xTwθu) p ( u | c o n t e x t ( w ) ) ) = 1 − δ ( x w T θ u ) 当 ι(w˜)=0 ι ( w ~ ) = 0
将其写成一个正式为:
p(u|context(w)))=δ(xTwθu)ιw(u)(1−δ(xTwθu))1−ιw(u) p ( u | c o n t e x t ( w ) ) ) = δ ( x w T θ u ) ι w ( u ) ( 1 − δ ( x w T θ u ) ) 1 − ι w ( u )
假设词语之间相互独立,我们希望最大化的是:
g(w)=∏uϵw⋃NEGwp(u|context(w))=∏uϵw⋃NEGwδ(xTwθu)ιw(u)(1−δ(xTwθu))1−ιw(u) g ( w ) = ∏ u ϵ w ⋃ N E G w p ( u | c o n t e x t ( w ) ) = ∏ u ϵ w ⋃ N E G w δ ( x w T θ u ) ι w ( u ) ( 1 − δ ( x w T θ u ) ) 1 − ι w ( u )
对于一个给定的语料库 C C ,假设其中各词语相互独立,所以整体函数为:
为了求得 g(w) g ( w ) 的最大值,我们对上式进行最大似然估计:
ι=log(G)=log