Word2Vec Tutorial(2)- Negative Sampling 负采样(Stanford cs224n 词向量学习之拓展阅读2)

本文为阅读过程中记录的中文要点框架,有助于快速理清思路和复习。详情可以看如下原文:

http://mccormickml.com/2017/01/11/word2vec-tutorial-part-2-negative-sampling/


本部分涉及对skip-gram基本模型的改进,使其具有更高的效率,正真具有可行性。

本文三个创新:

1、在模型中将常用单词对,或短语,视为单个“单词”。

2、对频繁的词进行子采样,以减少训练实例的数量。

3、采用“负采样”技术修改优化目标,使每个训练样本只更新权重的一小部分。

 

一、词对和短语

专用词对、常用短语等,视为单个单词是有道理的,这样还会使得词汇表增大。谷歌的模型对1000亿字的新闻数据集进行了训练。在模型中加入短语使词汇量增加了300万字。(可以使用gensim库的word2vec进行查看)有工具实现了词对的检测,利用两个词之间出现的频率还可以比之单个词出现的比例。多次调用,实现常用长短语的检测。

(还可以用维基百科的文章标题,作为词组识别的一种方法)

 

二、频繁词采样

“The quick brownfox jumps over the lazy dog”的例子中:

Word2Vec Tutorial(2)- Negative Sampling 负采样(Stanford cs224n 词向量学习之拓展阅读2)_第1张图片

1、(“fox”, “the”)中,the几乎在其他任意地方也出现。

2、学习the的vector,需要更多the的样本。

Word2vec用二次subsampling来解决这个问题。任意单词在文本中删除的概率,取决于其出现频率。假设窗口大小为10,删除文本中的the:

1、因此,the不会出现在context中。

2、得到了10个变短的样本。

 

三、Sampling rate

文本中保留单词wi的概率P(wi):

 

Z(wi)是单词wi在所有单词中的占比,0.001是采样频率参数的默认值。P(wi)曲线如下:

Word2Vec Tutorial(2)- Negative Sampling 负采样(Stanford cs224n 词向量学习之拓展阅读2)_第2张图片


所有的词在曲线上取值都应该是很小的。

此时,

z(wi)<=0.0026时,P(wi)=1.0 ,即被保留(被抽样)的概率为100%;
z(wi)=0.00746时,P(wi)=0.5 ,即被保留(被抽样)的概率为50%;

z(wi)=1.0时,P(wi)=0.003 ,即被保留(被抽样)的概率为3.3%;


四、负采样

负采样使得每个样本只调整一小部分权重。

举例:(“fox”,“quick”)中,随机选择几个(比如5)negativve word(使得输出网络输出为0的词)和一个positive word(如例子中的quick),来更新权重。结果更新的时(5+1)X300个权重,比10000X300小很多。而隐层中永远只更新positive word的权重(与是否适用负采样无关)。

小数据集可以使用5-20个negative word得到较好的结果,大数据集只能用2-5个。

 

五、选择负样本

高频词容易被选为负样本,每个单词的权重为其频率的3/4次方,选中的概率为单个权重除以所有单词权重之和。如下:

 Word2Vec Tutorial(2)- Negative Sampling 负采样(Stanford cs224n 词向量学习之拓展阅读2)_第3张图片

 



你可能感兴趣的:(NLP)