word2vec中的subsampling和negative sampling

实现word2vec的skip-gram神经网络训练模型中,通过一个矩阵将输入的n维向量转化为m维向量,考虑到模型输入层和输出层的权重,会产生m*n*2个权重,一般词汇表长度n很大,name调整修正这么多权重使训练速度降低,同时需要大量的训练数据来调整权重防止过拟合,这样又增加了这个网络训练的复杂性。为了解决这个问题,Word2vec的作者又提出了三种方法:

1. 把常用的词组作为一个单词,例如new york经常只代表纽约,与new和york有完全不同的语义,所以把这两个词组合更加合理

2. subsampling:在采样过程中以一定的概率丢弃一些常见的词(猜测太常见可能只表示修饰,并没有具体含义),采样的具体做法这里不做介绍

比如单词the,一般对我们真正想表达的内容没有影响反而出现次数很多,这时我们就可以在采样中删除它 

关于降采样的保留某个单词的概率在论文中一般采用下列公式:

公式里面主要有两个参数:

z(wi):某个单词在词库中出现的概率,wi表示某个具体的单词

0.001:为参数sample的值,控制了降采样的程度,0.001为一般设置的值,sample值越小表示扔掉词的概率越大

当sample为0.001时,这个公式的图像如下:

从图中我们可以总结出一些有趣的规律:

(1)当z(wi)<=0.0026时,P(wi)约等于1,我们不会扔掉这些词

(2)当z(wi)<=0.00746时,P(wi)=0.5,表示我们对于这个词公平对待

3. negative sampling:每次训练样本输入后,在反向传播时仅更新部分权重

比如原来的模型需要2*n*m个权重,现在只需要更新2*x*m个权重,一般x<<n,且x = 1+negative samples

如下图所示,原来需要更新6个权重,确定负样本之后,只需更新黑色加粗所对应的4个权重

那么negative samples怎么确定呢?

假设negative samples =k,则选取词库中k个出现概率最大的词

论文中写到这个概率采用下列公式计算,其中f(wi)表示这个单词在词库中出现的频次

0.75这个超参数是试出来的,性能比其他参数好

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值