Word2Vec学习笔记(四)——Negative Sampling 模型

本文介绍了Negative Sampling模型的工作原理,包括如何通过带权采样选取负例样本,并结合CBOW模型详细阐述了如何通过最大化正例概率和最小化负例概率来训练词向量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前面讲了Hierarchical softmax 模型,现在来说说Negative Sampling 模型的CBOW和Skip-gram的原理。它相对于Hierarchical softmax 模型来说,不再采用huffman树,这样可以大幅提高性能。

一、Negative Sampling

    在负采样中,对于给定的词www,如何生成它的负采样集合NEG(w)NEG(w)NEG(w)呢?已知一个词www,它的上下文是context(w)context(w)context(w),那么词www就是一个正例,其他词就是一个负例。但是负例样本太多了,我们怎么去选取呢?在语料库C\mathcal{C}C中,各个词出现的频率是不一样的,我们采样的时候要求高频词选中的概率较大,而低频词选中的概率较小。这就是一个带权采样的问题。
设词典D\mathcal{D}D中的每一个词www对应线段的一个长度:
len(w)=counter(w)∑u∈Dcounter(u)(1) len(w) = \frac{counter(w)}{\sum_{u \in \mathcal{D}}counter(u)} (1) len(w)=uDcounter(u)counter(w)(1)
式(1)分母是为了归一化,Word2Vec中的具体做法是:记l0=0,lk=∑j=1klen(wj),k=1,2,…,Nl_0 = 0, l_k = \sum_{j=1}^{k} len(w_j), k=1,2, \dots, Nl0=0,lk=j=1klen(wj),k=1,2,,N,其中,wjw_jwj是词典D\mathcal{D}D中的第jjj个词,则以{lj}j=0N\{l_j\}_{j=0}^{N}{lj}j=0N为点构成了一个在区间[0,1]非等距离的划分。然后再加一个等距离划分,Word2Vec中选取M=108M=10^8M=108,将M个点等距离的分布在区间[0,1]上,这样就构成了M到I之间的一个映射,如下图所示:
负采样描述图
图例参考:http://www.cnblogs.com/neopenx/p/4571996.html ,建议大家读下这篇神作

    选取负例样本的时候,取[M0,Mm−1][M_0, M_{m-1}][M0,Mm1]上的一个随机数,对应到I上就可以了。如果对于词wiw_iwi,正好选到它自己,则跳过。负例样本集合NEG(w)NEG(w)NEG(w)的大小在Word2Vec源码中默认选5.

二、CBOW

    假定关于词www的负例样本NEG(w)NEG(w)NEG(w)已经选出,定义标签LLL如下,对于 ∀w~∈D\forall \widetilde{w} \in \mathcal{D}wD
Lw(w~)={1,w~=w;0,w~≠w; L^w(\widetilde{w}) = \Bigg\{ \begin{array} {ll} 1, & \widetilde{w} = w ;\\ 0, & \widetilde{w} \ne w; \end{array} Lw(w)={1,0,w=w;w=w;
对于给定的一个正例样本(context(w),w)(context(w), w)(context(w),w), 要求:
max⁡g(w)=max⁡∏u∈{w}∪u∈NEG(w)p(u∣context(w)) \max g(w) = \max \prod_{u \in \{w\} \cup u \in NEG(w)} p(u|context(w)) maxg(w)=maxu{w}uNEG(w)p(ucontext(w))
其中,
p(u∣context(w))={σ(xwTθu),Lw(u)=11−σ(xwTθu),Lw(u)=0 p(u|context(w)) = \Bigg \{ \begin{array}{ll} \sigma(\boldsymbol{x}_w^T \theta^u), & L^w(u) = 1\\ 1-\sigma(\boldsymbol{x}_w^T \theta^u), & L^w(u) = 0 \end{array} p(ucontext(w))={σ(xwTθu),1σ(xwTθu),Lw(u)=1Lw(u)=0
把它写成一个式子:
p(u∣context(w))=σ(xwTθu)Lw(u)+(1−σ(xwTθu))1−Lw(u) p(u|context(w)) = \sigma(\boldsymbol{x}_w^T \theta^u)^{L^w(u)} + (1-\sigma(\boldsymbol{x}_w^T \theta^u))^{1-L^w(u)} p(ucontext(w))=σ(xwTθu)Lw(u)+(1σ(xwTθu))1Lw(u)
下边解释为什么要最大化g(w)g(w)g(w)
g(w)=∏u∈{w}∪u∈NEG(w)p(u∣context(w))=∏u∈{w}∪u∈NEG(w)σ(xwTθu)Lw(u)+(1−σ(xwTθu))1−Lw(u)=σ(xwTθw)∏u∈NEG(w)(1−σ(xwTθu)) g(w) = \prod_{u \in \{w\} \cup u \in NEG(w)} p(u|context(w)) \\ =\prod_{u \in \{w\} \cup u \in NEG(w)} \sigma(\boldsymbol{x}_w^T \theta^u)^{L^w(u)} + (1-\sigma(\boldsymbol{x}_w^T \theta^u))^{1-L^w(u)} \\ =\sigma(\boldsymbol{x}_w^T \theta^w)\prod_{u \in NEG(w)} (1-\sigma(\boldsymbol{x}_w^T \theta^u)) g(w)=u{w}uNEG(w)p(ucontext(w))=u{w}uNEG(w)σ(xwTθu)Lw(u)+(1σ(xwTθu))1Lw(u)=σ(xwTθw)uNEG(w)(1σ(xwTθu))
上式中连乘号前边的式子可以解释为最大化正例样本概率,连乘号后边解释为最小化负例样本概率

同样的,针对于语料库,令:
G=∏w∈Cg(w) \mathcal{G} = \prod_{w \in \mathcal{C}} g(w) G=wCg(w)
可以将上式作为整体的优化目标函数,取上式的最大似然:
L=log⁡G=∑w∈Clog⁡g(w)=∑w∈C∑u∈{w}∪u∈NEG(w)Lw(u)log⁡[σ(xwTθu]+[1−Lw(u)]log⁡[1−σ(xwTθu)] \mathcal{L} = \log\mathcal{G} = \sum_{w \in \mathcal{C}} \log g(w) \\ =\sum_{w \in \mathcal{C}} \sum_{u \in \{w\} \cup u \in NEG(w)}L^w(u)\log[\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u] + [1-L^w(u)] \log [1-\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u)] L=logG=wClogg(w)=wCu{w}uNEG(w)Lw(u)log[σ(xwTθu]+[1Lw(u)]log[1σ(xwTθu)]
和之前的计算过程一样,记
L(w,u)=Lw(u)log⁡[σ(xwTθu]+[1−Lw(u)]log⁡[1−σ(xwTθu)]L(w,u) = L^w(u)\log[\sigma(\boldsymbol{x}_w^T \theta^u] + [1-L^w(u)]\log [1-\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u)] L(w,u)=Lw(u)log[σ(xwTθu]+[1Lw(u)]log[1σ(xwTθu)]
然后分别求:∂L(w,u)∂Xw\frac{\partial L(w,u)}{\partial\boldsymbol{X}_w}XwL(w,u)∂L(w,u)∂θu\frac{\partial L(w,u)}{\partial\boldsymbol{\theta}^u}θuL(w,u),求解过程略过:
∂L(w,u)∂Xw=[Lw(u)−σ(xwTθu)]θu∂L(w,u)∂θu=[Lw(u)−σ(xwTθu)]Xw \frac{\partial L(w,u)}{\partial\boldsymbol{X}_w} = [L^w(u)-\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u)]\boldsymbol{\theta}^u \\ \frac{\partial L(w,u)}{\partial\boldsymbol{\theta}^u} = [L^w(u)-\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u)]\boldsymbol{X}_w XwL(w,u)=[Lw(u)σ(xwTθu)]θuθuL(w,u)=[Lw(u)σ(xwTθu)]Xw
则,可得到如下更新公式:
θu:=θu+η[Lw(u)−σ(xwTθu)]Xwv(w~):=v(w~)+∑u∈{w}∪u∈NEG(w)[Lw(u)−σ(xwTθu)]θu \boldsymbol{\theta}^u:=\boldsymbol{\theta}^u+\eta [L^w(u)-\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u)]\boldsymbol{X}_w \\ v(\boldsymbol{\widetilde{w}}):=v(\boldsymbol{\widetilde{w}}) + \sum_{u \in \{w\} \cup u \in NEG(w)} [L^w(u)-\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u)]\boldsymbol{\theta}^u θu:=θu+η[Lw(u)σ(xwTθu)]Xwv(w):=v(w)+u{w}uNEG(w)[Lw(u)σ(xwTθu)]θu
其中, w~∈context(w)\boldsymbol{\widetilde{w}} \in context(w)wcontext(w).

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值