word2vec:CBOW和skip-gram性能训练数据集大小

Sea*_*ean 9 nlp word2vec word-embedding

问题很简单.哪个CBOW和skip-gram对于大数据集更好?(以及小数据集的答案如下.)

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

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

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

但是,谷歌TensorFlow,[链接]

CBOW对许多分布信息进行平滑(通过将整个上下文视为一个观察).在大多数情况下,这对于较小的数据集来说是有用的.

但是,skip-gram将每个上下文 - 目标对视为一个新的观察,当我们有更大的数据集时,这往往会做得更好.我们将在本教程的其余部分重点介绍skip-gram模型.

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

或者就像Mikolov所说的那样:

总的来说,最好的做法是尝试一些实验,看看什么最适合你,因为不同的应用程序有不同的要求.

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

yaz*_*zhi 5

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

Google Tensor Flow谈论的是数据集中单词的分布以生成质量矢量,而不是使用的数据集数量。由于CBOW模型在同一上下文词中为句子中的所有目标词考虑的更多,因此需要更大的(分布式)数据集,反之亦然。

共同地,它们的意思相同:

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