word2vec:负面抽样(非专业术语)?
我正在阅读下面的文章,我有一些麻烦,理解负面抽样的概念。
pdf/1402.3722v1.pdf
任何人都可以帮忙吗?
word2vec
的思想是最大化文本中相互靠近(在对方的上下文中)出现的单词向量之间的相似性(点积),并最小化不相似的单词的相似度。 在你链接到的文件的等式(3)中,暂时忽略指数。 你有
v_c * v_w ------------------- sum(v_c1 * v_w)
分子基本上是单词c
(上下文)和w
(目标)单词之间的相似度。 分母计算所有其他上下文c1
和目标词w
的相似度。 最大限度地提高这个比例,确保在文本中出现在一起的单词比没有单词的单词有更多相似的向量。 但是,计算这个可能非常慢,因为有许多上下文c1
。 负面抽样是解决这个问题的方法之一,只需随机select几个上下文c1
。 最终的结果是,如果cat
出现在food
的背景下,那么food
的vector与其他几个随机select的单词 (如democracy
, greed
, Freddy
),而不是语言中的所有其他单词 。 这使得word2vec
训练要快得多。
计算Softmax (确定哪些词类似于当前目标词的激活函数)是昂贵的,因为需要对V (分母)中的所有词进行求和,这通常是非常大的。
可以做什么?
已经提出了不同的策略来近似 softmax。 这些方法可以分为基于softmax和基于 抽样的方法。 基于Softmax的方法是保持softmax层完好无损的方法,但修改其体系结构以提高其效率(如分层softmax)。 另一方面, 基于采样的方法完全消除了softmax层,而是优化了一些近似softmax的其他损失函数(他们通过近似softmax的分母中的归一化以及其他一些损失,这些损失是便宜地计算的负面抽样)。
Word2vec中的损失函数是这样的:
哪个对数可以分解成:
用一些math和梯度公式(见2更详细)它转换为:
当你看到它被转换成二进制分类任务,因为我们需要标签来执行我们的二进制分类任务,我们指定所有正确的单词w给定它们的上下文c为真(y = 1,正样本)(目标单词的窗口中的所有单词) ,从机体中随机选取k个为假(y = 0,负样本)。
参考 :
- (1)C.戴尔, “ 2014 年噪声对比估计和负面抽样注释”
- (2) http://sebastianruder.com/word-embeddings-softmax/