我一直在努力理解 word2vec 上下文中负采样的概念。我无法消化[负]抽样的想法。例如,在 Mikolov 的论文中,负抽样期望被表述为
我理解左边的术语,但我无法理解对负词上下文对进行采样的想法。
我一直在努力理解 word2vec 上下文中负采样的概念。我无法消化[负]抽样的想法。例如,在 Mikolov 的论文中,负抽样期望被表述为
我理解左边的术语,但我无法理解对负词上下文对进行采样的想法。
使用“标准”神经网络学习词向量存在一些问题。通过这种方式,在给定单词窗口(网络的输入)的情况下,网络学习预测下一个单词的同时学习单词向量。
预测下一个单词就像预测类别。也就是说,这样的网络只是一个“标准的”多项式(多类)分类器。这个网络必须有与类一样多的输出神经元。当类是实际的单词时,神经元的数量是巨大的。
“标准”神经网络通常使用交叉熵成本函数进行训练,该函数需要输出神经元的值来表示概率——这意味着必须对网络为每个类别计算的输出“分数”进行归一化,转换为每个类别的实际概率。这个归一化步骤是通过softmax函数实现的。Softmax 在应用于巨大的输出层时非常昂贵。
为了解决这个问题,即 softmax 的昂贵计算,Word2Vec 使用了一种称为噪声对比估计的技术。该技术由 [A](由 [B] 重新制定)引入,然后在 [C]、[D]、[E] 中用于从未标记的自然语言文本中学习词嵌入。
基本思想是将多项分类问题(因为它是预测下一个单词的问题)转换为二元分类问题。也就是说,不是使用softmax来估计输出词的真实概率分布,而是使用二元逻辑回归(二元分类)。
对于每个训练样本,增强(优化)分类器被输入一个真实的对(一个中心词和另一个出现在其上下文中的词)和一些 随机损坏的对(由中心词和从词汇表中随机选择的词组成)。通过学习区分真实对和损坏对,分类器最终将学习词向量。
这很重要:优化的分类器不是预测下一个词(“标准”训练技术),而是简单地预测一对词是好还是坏。
Word2Vec稍微定制了这个过程,称之为负采样。在 Word2Vec 中,负样本的单词(用于损坏的对)是从一个专门设计的分布中抽取的,这有利于更频繁地抽取频率较低的单词。
[A] (2005) - 对比估计:在未标记数据上训练对数线性模型
[B] (2010) - 噪声对比估计:非归一化统计模型的新估计原理
[C] (2008) - 自然语言处理的统一架构:具有多任务学习的深度神经网络
[D] (2012) - 一种用于训练神经概率语言模型的快速简单的算法。
[E] (2013) - 通过噪声对比估计有效地学习词嵌入。
答案基于我的一些旧笔记 - 我希望它们是正确的:)