14

问题很简单。CBOW 和 skip-gram 中的哪一个更适合大型数据集?(小数据集的答案如下。)

我很困惑,因为米科洛夫本人,[链接]

Skip-gram:适用于少量训练数据,甚至可以很好地表示罕见的单词或短语。

CBOW:训练速度比skip-gram快几倍,对频繁词的准确率略高

但是,根据 Google TensorFlow,[链接]

CBOW 平滑了许多分布信息(通过将整个上下文视为一次观察)。在大多数情况下,这对于较小的数据集是有用的。然而,skip-gram 将每个上下文-目标对视为一个新的观察结果,当我们拥有更大的数据集

时,这往往会做得更好。在本教程的其余部分,我们将重点关注 skip-gram 模型。

这是一个支持第一个想法[Link]的 Quora 帖子,然后是另一个 Quora 帖子,它暗示了第二个想法[Link] ——两者似乎都来自上述可靠的来源。

还是像米科洛夫所说的那样:

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

但在这件事上肯定有经验或分析的结论或最终说法吗?

4

1 回答 1

8

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

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

通常,它们的含义相同:

  • CBOW 模型 = 句子短但样本数量多的数据集(更大的数据集)
  • SG 模型 = 具有长句子和少量样本的数据集(较小的数据集)
于 2016-11-09T12:31:00.047 回答