word2vec中的subsampling和negative sampling

编程入门 行业动态 更新时间:2024-10-19 22:40:04

word2vec中的<a href=https://www.elefans.com/category/dzcp/7f744304ec85ed1727f16ff797d2af9c.html style=subsampling和negative sampling"/>

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这个超参数是试出来的,性能比其他参数好

 

 

 

 

 

 

 

更多推荐

word2vec中的subsampling和negative sampling

本文发布于:2024-03-13 02:33:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1732987.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:subsampling   word2vec   sampling   negative

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!