CBOW vs skip-gram:为什么要颠倒上下文和目标词?

Gui*_*ier 32 nlp word2vec deep-learning tensorflow word-embedding

这个页面中,据说:

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

然而,看看它产生的训练数据集,X和Y对的内容似乎是可互换的,因为那两对(X,Y):

(quick, brown), (brown, quick)

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

另外,在word2vec上进行Udacity的深度学习课程练习,我想知道为什么他们似乎在这个问题上做了很多差异:

skip-gram的另一种选择是另一种名为CBOW(连续词袋)的Word2Vec模型.在CBOW模型中,您不是从单词向量预测上下文单词,而是从其上下文中所有单词向量的总和预测单词.实施和评估在text8数据集上训练的CBOW模型.

这会产生相同的结果吗?

Ser*_*hiy 61

以下是我对这种差异的过分简化和相当天真的理解:

我们知道,CBOW正在学习如何根据上下文来预测这个词.或者通过查看上下文来最大化目标词的概率.这恰好是罕见词语的问题.例如,给定上下文yesterday was a really [...] dayCBOW模型将告诉您最可能的单词是beautifulnice.类似的词delightful会减少对模型的关注,因为它旨在预测最可能的单词.这个词将在很多例子中用更频繁的词来平滑.

另一方面,skip-gram模型旨在预测上下文.鉴于delightful它必须理解它,并告诉我们上下文的概率很大yesterday was really [...] day,或者其他一些相关的背景.使用skip-gram时,单词delightful不会尝试与单词竞争,beautiful而是delightful+context将对作为新观察对象.

UPDATE

感谢@ 0xF分享这篇文章

根据米科洛夫的说法

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

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

这里可以找到另一个主题:

在"CBOW"替代"skip-gram"模式中,不是对上下文单词求平均,而是将每个单词用作成对训练示例.也就是说,代替一个CBOW示例,例如[预测'ate'来自平均值('The','cat','the','mouse')],网络会显示四个跳过的例子[预测'吃'''',[从'猫'预测'吃'',[从'''预测'吃'',[从'鼠标'预测'吃'').(同样的随机窗口减少发生,因此只有两个例子的一半时间,最近的单词.)

  • 这篇 quora 帖子 [https://www.quora.com/What-are-the-continuous-bag-of-words-and-skip-gram-architectures] 说,skip-gram 需要比 cbow 更少的数据来训练,只是你的评论的相反观点。你能借助任何已发表的论文等来证明你的答案是正确的吗? (2认同)
  • 感谢您指出了这一点!那篇文章中提供的解释是有道理的,所以我更新了我的答案。 (2认同)