In this https://www.tensorflow.org/versions/r0.9/tutorials/word2vec/index.html#vector-representations-of-words页面上,据说:
[...]skip-gram 反转上下文和目标,并尝试根据目标单词预测每个上下文单词 [...]
然而,查看它生成的训练数据集,X 和 Y 对的内容似乎是可以互换的,因为这两对 (X, Y):
(quick, brown), (brown, quick)
那么,如果上下文和目标最终是同一件事,为什么要区分那么多呢?
另外,做Udacity 的 word2vec 深度学习课程练习 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/5_word2vec.ipynb,我想知道为什么他们似乎在这个问题上对这两种方法做出了如此大的区别:
Skip-gram 的替代方案是另一种 Word2Vec 模型,称为 CBOW(连续词袋)。在 CBOW 模型中,您不是根据单词向量预测上下文单词,而是根据上下文中所有单词向量的总和来预测单词。实现并评估在 text8 数据集上训练的 CBOW 模型。
这不会产生相同的结果吗?
这是我对差异的过于简单化和幼稚的理解:
据我们所知,CBOW正在学习根据上下文预测单词。或者通过查看上下文来最大化目标词的概率。而这恰好是生僻字的问题。例如,给定上下文yesterday was a really [...] day
CBOW 模型会告诉您最有可能的词是beautiful
or nice
。这样的词delightful
模型会受到更少的关注,因为它旨在预测最可能的单词。该单词将在许多具有更频繁单词的示例中进行平滑处理。
另一方面,跳语法模型旨在预测上下文。鉴于这个词delightful
它必须理解它并告诉我们上下文很有可能是yesterday was really [...] day
,或其他一些相关的上下文。和跳语法这个单词delightful
不会试图与这个词竞争beautiful
但反而,delightful+context
对将被视为新的观察结果。
UPDATE
感谢@0xF的分享本文 https://www.quora.com/What-are-the-continuous-bag-of-words-and-skip-gram-architectures
根据米科洛夫的说法
跳克:适用于少量训练数据,甚至可以很好地表示罕见的单词或短语。
CBOW:训练速度比skip-gram快几倍,频繁词的准确率略高
发现该主题的另一项补充here https://groups.google.com/d/msg/word2vec-toolkit/LNPeC5gyhmQ/p8683JkD6LoJ:
在“skip-gram”模式中替代“CBOW”,而不是平均
上下文单词,每个都用作成对训练示例。那
是,代替一个 CBOW 示例,例如 [predict 'ate' from
Average('The', 'cat', 'the', 'mouse')],网络呈现为
四个skip-gram示例[从“The”预测“ate”],[预测“ate”
从“猫”],[从“the”预测“ate”],[从“mouse”预测“ate”]。
(同样的随机窗口缩小发生,所以一半的时间会
只是两个最接近的单词的例子。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)