基于Negative Sampling的模型

本篇介绍基于 Negative Sampling 的 CBOW和 Skip-gram模型。Negative Sampling(简称为 NEG)是 NCE(Noise Contrastive Estimation)的一个简化版本,目的是用来提高训练速度并改善所得词向量的质量。与 Hierarchical Softmax 相比,NEG 不再使用(复杂的)Huffman树,而是利用(相对简单的)随机负采样,能大幅度提高性能,因而可作为 Hierarchical Softmax 的一种替代。

1. CBOW模型

在 CBOW 模型中,已知词w的上下文context(x),需要预测w,因此,对于给定的context(x),词w就是一个正样本,其它词就是负样本。负样本那么多,该如何选取呢? 

假定现在已经选好了一个关于context(x)的负样本子集NEG(w)\neq 0。且对\forall \widetilde{w}\in D,定义

此公式定义了词w的标签,即正样本的标签为 1,负样本的标签为 0。

对于一个给定的正样本(context(x),x),我们希望最大化。

 其中

 或者写作整体表达式

这里x_{w}仍任然表示中context(x)各词的词向量之和,而\theta ^{u}表示词u对应的一个辅助向量,为待训练参数。

为什么要最大化g(w),让我们先来看看g(w)的表达式,将公式(5.2)代入(5.1)可得:

 

给定一个词w,怎样生成NEG(w) 呢?

词典D中的词在语料C中出现的次数有高有低,对于那些高频词,被选为负样本的概率就应该比较大,反之,对于那些低频词,其被选中的概率就应该比较小。这就是我们对采样过程的一个大致要求,本质上就是一个带权采样的问题。

下面先用一段通俗的描述来帮助读者理解带权采样的机理:

设词典D中的每一个词w对应一个线段l(w),长度为

len(w)=\frac{counter(w)}{\sum_{u\in D}counter(u)}

这里的counter(w)表示一个词在语料C中出现的次数(分母中的求和项用来做归一化)。现在将这些线段首尾相连拼接在一起,形成一个长度为1的单位线段.如果随机地往这个单位线段上打点,则其中长度越长的线段(对应高频词)被打中的概率就越大。(例如有4个词,出现的次数是 1 2 2 5,每个词出现归一化次数是0.1 0.2 0.2 0.5)

接下来谈谈 word2vec 中的具体做法:记l_{0}=0l_{k}=\sum_{j=1}^{k}len(w_{j}),k=1,2,...,N,这里w_{j}表示词典中的第j个词,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值