word2vec:否定采样(非专业术语)?


Answers:


164

的想法word2vec是使在文本中靠在一起(在彼此的上下文中)出现的单词的向量之间的相似度(点积)最大化,而使没有单词的向量的相似度最小化。在要链接的论文的等式(3)中,暂时忽略幂。你有

      v_c * v_w
 -------------------
   sum(v_c1 * v_w)

分子基本上是单词c(上下文)和w(目标)单词之间的相似性。分母计算所有其他上下文c1和目标单词的相似性w。最大化此比率可确保在文本中看起来更靠近的单词比没有的单词具有更多相似的向量。但是,由于存在许多上下文,因此计算速度可能非常慢c1。负采样是解决此问题的方法之一-只需c1随机选择几个上下文即可。最终结果是,如果cat出现在的上下文中food,则的向量比其他几个随机选择的单词food的向量更类似于的向量cat(作为其点积的度量)(例如democracygreedFreddy),而不是在语言的所有换句话说。这样可以word2vec大大加快训练速度。


15
谢谢或很好的解释。我认为这只是抽样。但是您知道为什么它称为“负数”吗?
HappyCoding

46
该术语是从分类中借用的,分类是神经网络的常见应用。那里有很多正面和负面的例子。使用word2vec,对于任何给定的单词,您都有一个需要与之相似的单词列表(正类),而否定的单词(与targer单词不相似的单词)是通过采样来编译的。
mbatchkarov '16

38

计算Softmax(确定哪些单词与当前目标单词相似的功能)的成本很高,因为需要对V(分母)中的所有单词求和,这通常非常大。

在此处输入图片说明

该怎么办?

已经提出了不同的策略来近似softmax。这些方法可以分为基于softmax的方法基于采样的方法。基于Softmax的方法是保持softmax层完整,但修改其体系结构以提高其效率的方法(例如,分层softmax)。另一方面,基于采样的方法完全消除了softmax层,而是优化了一些近似于softmax的损失函数(它们通过将softmax的分母中的归一化与其他便宜的计算方法相近似来实现,例如否定抽样)。

Word2vec中的损失函数类似于:

在此处输入图片说明

可以将对数分解为:

在此处输入图片说明

使用一些数学公式和渐变公式(请参见6的更多详细信息),将其转换为:

在此处输入图片说明

如您所见,它已转换为二进制分类任务(y = 1个正类,y = 0个负类)。由于我们需要标签来执行二进制分类任务,因此将所有上下文单词c指定为真实标签(y = 1,正样本),从语料库中随机选择的k指定为错误标签(y = 0,负样本)。


请看下面的段落。假设我们的目标词是“ Word2vec ”。随着3窗口,我们的语境词是:Thewidelypopularalgorithmwasdeveloped。这些上下文词被视为肯定标签。我们还需要一些否定标签。我们随机挑选一些字词从语料库(producesoftwareCollobertmargin-basedprobabilistic),并把他们视为阴性样品。我们从语料库中随机抽取一些示例的技术称为负采样。

在此处输入图片说明

参考


1
嗨,@ amir,我的第一个问题是我遇到了麻烦,理解了负采样的概念...
Andy K

1
解释得很好,比接受的答案更具技术性。因此,这是一个完美的情况:阅读已接受的答案以得到想法,然后阅读此答案以详细了解它。
Ursin Brunner

21

在这里写了一篇有关负采样的教程文章。

我们为什么要使用负采样?->降低​​计算成本

香草Skip-Gram(SG)和Skip-Gram负采样(SGNS)的成本函数如下所示:

在此处输入图片说明

请注意,这T是所有词汇的数量。等同于V。换句话说,T= V

p(w_t+j|w_t)对于V语料库中的所有词汇,SG中的概率分布计算如下:

在此处输入图片说明

V训练Skip-Gram模型时,很容易超过一万。概率需要计算V时间,使其计算量大。此外,分母中的归一化因子需要额外的V计算。

另一方面,SGNS中的概率分布可通过以下公式计算:

在此处输入图片说明

c_pos是正词的W_neg词向量K,是输出权重矩阵中所有负样本的词向量。使用SGNS,概率仅需计算K + 1一次,K通常在5〜20之间。此外,无需额外的迭代即可计算分母中的归一化因子。

使用SGNS,每个训练样本的权重只有一小部分被更新,而SG为每个训练样本更新了数百万个权重。

在此处输入图片说明

SGNS如何实现这一目标?->通过将多分类任务转换为二进制分类任务。

使用SGNS,不再可以通过预测中心词的上下文词来学习词向量。它学习从噪声分布中将实际上下文单词(正)与随机抽取的单词(负)区分开。

在此处输入图片说明

在现实生活中,通常不会regression使用Gangnam-Style,或随机词来观察pimples。这个想法是,如果模型可以区分可能的(正)对和不太可能的(负)对,那么将学习好的单词向量。

在此处输入图片说明

在上图中,当前的正词-语境对是(drillingengineer)。K=5阴性样品随机抽取噪声分布minimizedprimaryconcernsledpage。当模型遍历训练样本时,将优化权重,以便输出正对的概率p(D=1|w,c_pos)≈1,并输出负对的概率p(D=1|w,c_neg)≈0


1
T是令牌数量(文本中出现单词的次数)。我会说V代表词汇(唯一词)。
亚当

如果将设置KV -1,则负采样与香草跳过图模型相同。我的理解正确吗?
Shashwat

@Shashwat为每个训练样本更新的单词向量的数量相同,但是训练目标函数仍将根本不同
Eric Kim
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.