word2vec:负面采样(外行术语)?

And*_*y K 72 nlp machine-learning word2vec

我正在阅读下面的论文,我遇到了一些麻烦,理解负抽样的概念.

http://arxiv.org/pdf/1402.3722v1.pdf

有人可以帮忙吗?

mba*_*rov 138

其思想word2vec是最大化文本中出现在一起(在彼此的上下文中)的单词的向量之间的相似性(点积),并最小化不相似的单词的相似性.在链接到的论文的等式(3)中,暂时忽略取幂.你有

      v_c * v_w
 -------------------
   sum(v_c1 * v_w)
Run Code Online (Sandbox Code Playgroud)

分子基本上是单词c(上下文)和w(目标)单词之间的相似性.分母计算所有其他上下文c1和目标词的相似性w.最大化此比率可确保在文本中看起来更接近的单词具有比不单词的单词更相似的向量.但是,计算这个可能非常慢,因为有很多背景c1.负抽样是解决这个问题的方法之一 - 只需c1随意选择几个上下文.最终的结果是,如果cat出现在上下文中food,那么矢量food更接近于cat(作为其点积的度量)的向量而不是其他几个随机选择的单词的向量(例如democracy,greed,Freddy),而不是在语言的所有换句话说.这使得word2vec训练更快.

  • 术语借用于分类,神经网络的常见应用.在那里你有一堆积极和消极的例子.使用`word2vec`,对于任何给定的单词,您有一个需要与它相似的单词列表(正类),但是负类(与目标单词不相似的单词)是通过抽样编译的. (36认同)
  • 谢谢或者很好的解释.我认为这只是抽样.但是你知道它为什么叫"消极"吗? (12认同)

Ami*_*mir 30

计算Softmax(确定哪些单词与当前目标单词相似的函数)是昂贵的,因为需要对V(分母)中的所有单词求和,这通常非常大.

在此输入图像描述

可以做些什么?

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

Word2vec中的丢失函数类似于:

在此输入图像描述

哪个对数可以分解为:

在此输入图像描述

使用一些数学和梯度公式(见3的更多细节),它转换为:

在此输入图像描述

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


请看以下段落.假设我们的目标词是" Word2vec ".随着3窗口,我们的语境词是:The,widely,popular,algorithm,was,developed.这些上下文单词被视为积极标签.我们还需要一些负面标签.我们随机挑选一些字词从语料库(produce,software,Collobert,margin-based,probabilistic),并把他们视为阴性样品.我们从语料库中随机选取一些示例的技术称为负抽样.

在此输入图像描述

参考:

  • 解释得很好,比接受的答案更具技术性。所以一个完美的情况是:阅读已接受的答案以了解想法,然后阅读此答案以详细了解它。 (2认同)

Eri*_*Kim 9

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

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

香草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

  • T 表示标记数(文本中出现的单词)。我想说的是,V 代表词汇(独特的单词)。 (2认同)