图像嵌入 - 负采样和不平衡类问题

数据挖掘 机器学习 Python 神经网络 深度学习 word2vec
2022-02-24 07:22:30

我正在使用 Word2Vec 中使用的负采样方法来训练一些图像嵌入。从我所读到的,对于每一个积极的例子,我们都在创造一些消极的例子。

问题:为什么我们在这里使用不平衡的数据集?大概我们会遇到正常的问题,即算法最终会预测负标签以最小化成本函数?我知道目的并不是真正将其用作预测模型,而是提取嵌入,但是在这里使用不平衡类有什么好处?

2个回答

我不认为我们为每个正面例子都创造了许多负面例子。进行负采​​样以有效地计算softmax。

Word2vec 试图最大化相似上下文中单词的相似度。例如,给定饮料,NN 应该以最大概率预测水。

假设您的训练数据中有 V 个(通常 > 100 万)个单词,那么模型的最后一层有 V 个神经元。对于训练数据中的每个单词,您必须计算所有 V 个神经元的输出(以计算 softmax)。它在计算上非常昂贵。负抽样是解决这个问题的一种方法。我们不计算所有的 V 输出,而是只采样几个单词并逼近 softmax。

负采样可用于加速输出神经元数量非常多的神经网络。分层 softmax 是另一种用于训练 word2vec 的技术。

通读本教程的理论部分,我了解到理想情况下,在 Word2Vec Kares 架构中,对于每个目标词,您将输入所有可用的上下文词,以使网络学习(通过强化)通常出现在与目标词(您问题中的“正面例子”)相同的上下文,并减少目标词与其上下文中通常不出现的词(您问题中的“负面例子”)之间的相似性。

您通常会遍历所有“正例”(它们并不多),以便相应的单词最终被放置在 300 维向量空间的同一区域中。但是,由于数量庞大(它们太多),遍历所有“负面示例”将是一个巨大的计算负担。因此,您“随机”选择其中一些(“负样本”)并仅针对它们进行训练。

所以确实存在一些“不平衡”(您为每个目标词选择“一些”而不是“全部”“负面例子”),因为该方法确保目标词与相同上下文的词更“相似”与不同上下文的一些(而不是全部)单词进行比较,但相同的不平衡会带来可观的计算增益。完成训练后,您最终会得到一个非常漂亮的 300 维单词表示,在嵌入层中随时可用,有效地解决了单词嵌入问题。

另请参阅Quora 的这个答案。