Nlp CBOW v.s.skip gram:为什么要颠倒上下文和目标词?
在第页,据说: […]skip gram反转上下文和目标,并尝试从目标词预测每个上下文词[…] 但是,查看它生成的训练数据集,X和Y对的内容似乎是可交换的,因为这两对(X,Y):Nlp CBOW v.s.skip gram:为什么要颠倒上下文和目标词?,nlp,tensorflow,deep-learning,word2vec,word-embedding,Nlp,Tensorflow,Deep Learning,Word2vec,Word Embedding,在第页,据说: […]skip gram反转上下文和目标,并尝试从目标词预测每个上下文词[…] 但是,查看它生成的训练数据集,X和Y对的内容似乎是可交换的,因为这两对(X,Y): (快速,棕色),(棕色,快速) 那么,如果最终是同一件事,为什么要在上下文和目标之间区分那么多呢 另外,我想知道,为什么他们在这个问题上似乎对这两种方法有这么大的区别: 另一种跳过gram的方法是另一种称为CBOW(连续词包)的Word2Vec模型。在CBOW模型中,不是从单词向量预测上下文单词,而是从上下文中所有单词
(快速,棕色),(棕色,快速)
那么,如果最终是同一件事,为什么要在上下文和目标之间区分那么多呢
另外,我想知道,为什么他们在这个问题上似乎对这两种方法有这么大的区别:
另一种跳过gram的方法是另一种称为CBOW(连续词包)的Word2Vec模型。在CBOW模型中,不是从单词向量预测上下文单词,而是从上下文中所有单词向量的总和预测单词。实施并评估在text8数据集上培训的CBOW模型
这难道不会产生相同的结果吗?这与你在任何给定点上精确计算的内容有关。如果你开始研究为每种概率计算加入更大背景的模型,差别就会变得更明显 在skip gram中,您正在根据句子中当前位置的单词计算上下文单词;您正在计算中“跳过”当前单词(可能还有一点上下文)。结果可以是多个单词(但如果上下文窗口只有一个单词长,则不能)
在CBOW中,您正在根据上下文单词计算当前单词,因此您将只能得到一个单词 以下是我对差异的过于简单和天真的理解: 正如我们所知,CBOW正在学习根据上下文预测单词。或者通过观察上下文来最大化目标词的概率。而这恰好是罕见词汇的一个问题。例如,考虑到上下文
昨天真的是[…]天
CBOW模型将告诉您,最有可能的单词是美丽
或漂亮
。像delicious
这样的单词将很少受到模型的关注,因为它被设计用来预测最可能的单词。这个词将在许多例子中用更频繁的词加以修饰
另一方面,设计了跳过gram模型来预测上下文。考虑到“令人愉快”这个词,它必须理解它,并告诉我们,上下文很可能是“昨天真的是[…]天”,或者其他相关上下文。使用skip gram时,单词delicious
不会试图与单词beautiful
竞争,相反,delicious+context
对将被视为新的观察结果
更新
感谢@0xF的分享
据米科洛夫说
跳过语法:适用于少量的训练数据,甚至可以很好地表示罕见的单词或短语
CBOW:训练速度比skip gram快几倍,对常用词的准确度略高
该主题还有一个补充内容:
在“跳过克”模式下,替代“CBOW”,而不是平均
上下文单词,每一个都用作成对的训练示例。那个
是,代替一个CBOW示例,例如[predict'ate'from]
平均值('The','cat','The','mouse')),网络显示为
四个skip gram示例[predict'ate'from'The'],[predict'ate'
来自“猫”],[预测“吃”来自“老鼠”],[预测“吃”来自“老鼠”]。
(发生相同的随机窗口缩减,因此只有
请举两个最接近的单词的例子。)
我仍然不清楚两者之间的区别,唯一似乎有所改变的是句子开头和结尾附近的单词填充:在一个模型中,输入大小或输出大小上的单词总数会更多,这取决于相同单词的显示频率。在一个无限长的句子中,这两个模型不会有我正在介绍的不相等填充的概念。例如,如何在我发送的Udacity链接中更改模型的配置?在我看来,只有用输入示例交换标签才行,但这不可能是真的,差别太小了……这篇quora帖子[说skip gram需要的训练数据比cbow少,这与你的评论正好相反。你能通过发表的论文证明你的答案吗?谢谢你指出这一点!那篇文章中提供的解释很有意义,因此我更新了我的答案。