Word2Vec原理详解

paper

简介

Word2Vec分为CBOW模型(Continuous Bag-of-Words Model)和Skip-gram(Continuous Skip-gram Model)模型,如下图所示

当训练文本集规模较小时适合使用CBOW模型,当训练文本集规模较大时适合使用Skip-gram模型

训练方法

Hierarchical Softmax

方法一:基于Huffman树的Hierarchical Softmax

Negative Sampling

方法二:作者Mikolov提出的Negative Sampling(NEG),该方法是Noise Contrastive Estimation(NCE)的一个简化版本

CBOW模型

在CBOW模型中,已知词$w$的上下文$Context(w)$,需要预测$w$,因此对于给定的$Context(w)$,词$w$就是一个正样本,其它词就是负样本了。假定现在已经选好了一个关于$w$的负样本子集$NEG(w) \ne \emptyset$,且对$\forall\ \widetilde{w} \in \mathcal{D}$,定义

令$\sigma(x)=\frac{1}{1+\mathrm{e}^{x}}$,语料库$C$,概率生成函数如下

其中

可将$p(u|Context(w))$写成整体表达式如下

从而$g(w)$可简写为

最终的目标函数对G取对数求最大似然。从形式上看,最大化$g(w)$相当于最大化,同时最小化所有的,使得增大正样本概率的同时降低负样本的概率,这正是我们所希望看到的结果

为方便梯度推导,将(1.6)式花括号中的内容简记为$\mathcal{L}(w,u)$,即

利用梯度上升法对$\mathcal{L}$进行优化求最大值,$\mathcal{L}(w,u)$分别对$x_{w}和\theta^{u}$求偏导

于是$\theta^{u}$的更新公式可写成

接下来考虑$\mathcal{L}(w,u)$对的偏导,由于式(1.7)中的对称性可得

于是,利用式(1.10)的结果可得$v(\widetilde{w}),\widetilde{w} \in Context(w)$的更新公式为

伪代码如下

Skip-gram模型

结合SKip-gram和CBOW模型的区别,将优化目标函数由原来的$G=\prod_{w \in C}g(w)$改写为

这里,$\prod_{u \in Context(w)}g(u)$表示对于一个给定的样本$(w,Context(w))$,我们希望最大化的量,$g(u)$类似于上一节$g(w)$,定义为

其中$NEG(u)$表示处理词u时生成的负样本子集,条件概率

(2.3)式写成整体表达式为

同样,我们取G的对数,最终的目标函数为

与CBOW模型一样利用梯度上升法对$\mathcal{L}$进行优化求最大值,将式(2.5)中花括号中的内容简记为$\mathcal{L}(w,u,z)$,然后将$\mathcal{L}(w,u,z)$分别对$v(w)$和$\theta^{z}$求偏导,具体求解过程省略,可参考文末链接参考1中的5.2节

参考

  1. * word2vec 中的数学原理详解
  2. Word2Vec教程 - Skip-Gram模型
  3. Word2Vec教程(2)- Negative Sampling
  4. Hierarchical Softmax(视频)
  5. Noise Contrastive Estimation(paper)
---------------- The End ----------------

作者: brooksjay
联系邮箱: jaypark@smail.nju.edu.cn
本文地址: https://brooksj.com/2019/08/14/Word2Vec原理详解/
本文基于 知识共享署名-相同方式共享 4.0 国际许可协议发布
转载请注明出处, 谢谢!