word2vec:CBOW& skip-gram performance wrt training dataset size

时间:2016-08-30 09:51:00

标签: nlp word2vec word-embedding

问题很简单。哪个CBOW& skip-gram适用于大数据集? (以及小数据集的答案如下。)

我很困惑,因为Mikolov本人,[Link]

  

Skip-gram:适用于少量的训练数据,甚至代表罕见的单词或短语。

  CBOW:训练比跳过快几倍,对于频繁的单词的准确性略高一些

但是,根据Google TensorFlow,[Link]

  

CBOW平滑了许多分布信息(通过将整个上下文视为一个观察)。在大多数情况下,这对于较小的数据集来说是有用的。
然而,skip-gram将每个上下文 - 目标对视为一个新的观察,当我们有这种情况时,这往往会做得更好较大的数据集。我们将在本教程的其余部分重点介绍skip-gram模型。

这是一个Quora帖子,支持第一个想法[Link],然后还有另一个Quora帖子,它暗示了第二个想法[Link] - 两者似乎都可以从前面提到的可靠来源中得到。

或者就像Mikolov所说的那样:

  

总的来说,最佳做法是尝试一些实验,看看哪种方法最适合您,因为不同的应用程序有不同的要求。

但肯定有关于此事的经验或分析判决或最终说法?

1 个答案:

答案 0 :(得分:4)

当Mikolov认为CBOW适用于较大的数据集时,SG适用于较小的数据集,我认为可以考虑数据量。由于CBOW考虑了一个目标词和许多上下文词,因此与SG中使用的数据集相比,它需要更大的数据集来训练目标向量。反之亦然,在SG由于单个上下文单词的许多目标单词,它需要较小的数据集。

Google Tensor Flow讲述了数据集中用于生成质量向量而不是使用的数据集数量的单词分布。由于CBOW模型对句子中所有目标词的相同上下文词进行更多考虑,因此需要更大(分布式)的数据集,反之亦然。

通常,它们的含义相同:

  • CBOW模型=具有短句但数量较多的数据集(较大的数据集)
  • SG模型=具有长句子和少量样本(较小数据集)的数据集