word2vec: negative sampling (in layman term)?

I'm reading the paper below and I have some trouble , understanding the concept of negative sampling.

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

Can anyone help , please?

51808 次浏览

word2vec的思想是最大限度地提高向量之间的相似性(点积) ,这些向量在文本中出现在一起(在彼此的上下文中)的单词,并尽量减少不相似的单词的相似性。在你链接到的文章的公式(3)中,暂时忽略指数。你有

      v_c . v_w
-------------------
sum_i(v_ci . v_w)

分子基本上是单词 c(上下文)和 w(目标)单词之间的相似度。分母计算所有其他上下文 ci和目标单词 w的相似性。最大化这个比例可以确保在文本中出现更接近的单词比没有出现的单词有更多相似的向量。但是,计算这个过程可能非常慢,因为有许多上下文 ci。负采样是解决这个问题的方法之一——只需随机选择几个上下文 ci。最终的结果是,如果 cat出现在 food的上下文中,那么 food的载体与 cat的载体(通过它们的点积测量)比 w4的载体(例如 w0,w1,w2)更相似,而不是 w5。这使得 w3的训练速度大大加快。

计算 < em > Softmax (确定哪些单词与当前目标单词相似的函数)的开销很大,因为它需要对 V(分母)中的所有单词求和,而 V通常非常大。

enter image description here

我们能做些什么?

针对 大概软极大化提出了不同的策略。这些方法可以分为 基于 softmax 的以抽样方式计算两种方法。< em > Softmax-based 方法是保持 softmax 层完整的方法,但是修改其体系结构以提高其效率(例如层次化 softmax)。另一方面,< em > 以抽样方式分析方法完全取消了 softmax 层,而是优化了一些其他的接近 softmax 的损失函数(他们通过将 softmax 分母的标准化与一些其他的损失进行近似,这些损失像负抽样一样便宜计算)。

Word2vec 中的丢失函数类似于:

enter image description here

哪个对数可以分解成:

enter image description here

通过一些数学和梯度公式(详见 6) ,它转换为:

enter image description here

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


看下面的段落。假设我们的目标词是“ widely1”。窗口为3时,我们的上下文单词是: Thewidelypopularalgorithmwasdeveloped。这些上下文词被认为是积极的标签。我们还需要一些负面的标签。我们从语料库中随机抽取一些词(producesoftwareCollobertmargin-basedwidely0)作为负样本。这种从语料库中随机抽取样本的方法称为负抽样。

enter image description here

参考 :

我写了一篇关于负取样 here的教程文章。

为什么我们使用负抽样? -> 来降低计算成本

香草 Skip-Gram (SG)和 Skip-Gram 阴性取样(SGNS)的成本函数如下:

enter image description here

请注意,T是所有词汇表的编号。它相当于 V。换句话说,T = V

语料库中所有 V词汇的概率分布 p(w_t+j|w_t)都是通过以下方法计算出来的:

enter image description here

V在训练跳格模型时容易超过数万。这个概率需要计算 V次,这使得计算非常昂贵。此外,分母中的归一化因子需要额外的 V计算。

另一方面,SGNS 的概率分布计算方法如下:

enter image description here

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

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

enter image description here

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

在 SGNS 中,词向量不再是通过预测中心词的上下文来学习的。它学习区分实际上下文词(正面)和随机抽取的词(负面)从噪音分布。

enter image description here

在现实生活中,你通常不会用像 Gangnam-Style或者 pimples这样的随机词来观察 regression。这个想法是,如果模型能够区分可能(正面)对和不可能(负面)对,好的词向量将被学习。

enter image description here

在上图中,当前的正词上下文对是(drillingengineer)。K=5阴性样品是来自 engineer1: minimizedprimaryconcernsledpageengineer0。随着模型在训练样本中的迭代,权重得到优化,使得正对的概率输出 p(D=1|w,c_pos)≈1,负对的概率输出 p(D=1|w,c_neg)≈0