52

页面中,据说:

[...] skip-gram 反转上下文和目标,并尝试从其目标词预测每个上下文词 [...]

但是,查看它生成的训练数据集,X 和 Y 对的内容似乎是可以互换的,因为这两个 (X, Y) 对:

(quick, brown), (brown, quick)

那么,如果最终是同一件事,为什么要在上下文和目标之间区分那么多呢?

另外,在 word2vec 上做 Udacity 的深度学习课程练习,我想知道为什么他们在这个问题上似乎对这两种方法有很大的不同:

skip-gram 的替代方案是另一个 Word2Vec 模型,称为 CBOW(连续词袋)。在 CBOW 模型中,不是从词向量预测上下文词,而是根据上下文中所有词向量的总和来预测一个词。实施和评估在 text8 数据集上训练的 CBOW 模型。

这不会产生相同的结果吗?

4

3 回答 3

105

这是我对差异的过于简单且相当幼稚的理解:

众所周知,CBOW正在学习根据上下文预测单词。或者通过查看上下文来最大化目标词的概率。这恰好是稀有词的问题。例如,给定上下文yesterday was a really [...] dayCBOW 模型会告诉您这个词很可能是beautifulor nice。像这样的词delightful将很少受到模型的关注,因为它旨在预测最可能的词。这个词将在许多具有更频繁词的示例中平滑。

另一方面,skip-gram模型旨在预测上下文。给定这个词delightful,它必须理解它并告诉我们上下文很有可能是yesterday was really [...] day,或者其他一些相关的上下文。使用skip-gram,单词delightful不会尝试与单词竞争,beautiful而是delightful+context将成对视为新的观察结果。

更新

感谢@0xF 分享这篇文章

根据米科洛夫

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

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

在这里可以找到该主题的另一项补充:

在替代“CBOW”的“skip-gram”模式中,不是平均上下文词,而是将每个词用作成对训练示例。也就是说,代替一个 CBOW 示例,例如 [predict 'ate' from average('The', 'cat', 'the', 'mouse')],向网络呈现四个 skip-gram 示例 [predict ' ate' from 'The'],[predict 'ate' from 'cat'],[predict 'ate' from 'the'],[predict 'ate' from 'mouse']。(同样的随机窗口减少发生,所以一半的时间只是两个例子,最接近的词。)

于 2017-02-12T11:38:12.497 回答
1

它与您在任何给定点计算的确切内容有关。如果您开始查看为每个概率计算包含更大上下文的模型,则差异会变得更加明显。

在 skip-gram 中,您正在从句子中当前位置的单词计算上下文单词;您在计算中“跳过”了当前单词(可能还有一些上下文)。结果可以多于一个词(但如果您的上下文窗口只有一个词长,则不会)。

在 CBOW 中,您是根据上下文词计算当前词,因此您将永远只有一个词作为结果。

于 2016-07-11T13:37:25.843 回答
0

在深度学习课程中,来自 coursera https://www.coursera.org/learn/nlp-sequence-models?specialization=deep-learning您可以看到 Andrew NG 没有切换上下文目标概念。这意味着目标词将始终被视为要预测的词,无论是 CBOW 还是 skip-gram。

于 2022-01-20T14:12:40.343 回答