word2vec:否定采样(非专业术语)?
machine-learning
nlp
word2vec
4
0

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

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

有人可以帮忙吗?

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

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

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

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

收藏
评论

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

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

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

在此处输入图片说明

注意, T是所有词汇的数目。等效于V换句话说, T = V

对于语料库中的所有V vocab,通过以下公式计算SG中的概率分布p(w_t+j|w_t)

在此处输入图片说明

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

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

在此处输入图片说明

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

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

在此处输入图片说明

SGNS如何做到这一点? ->通过将多分类任务转换为二进制分类任务。

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

在此处输入图片说明

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

在此处输入图片说明

在上图中,当前的正词-语境对是( drillingengineer )。从噪声分布随机抽取 K=5负样本: minimizedprimaryconcernsledpage 。当模型迭代训练样本时,权重得到优化,以使正对的概率输出p(D=1|w,c_pos)≈1 ,而负对的概率输出p(D=1|w,c_neg)≈0

收藏
评论

计算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 ),并把他们视为阴性样品。我们从语料库中随机抽取一些示例的这种技术称为负采样。

在此处输入图片说明

参考

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号