这是我对差异的过于简单且相当幼稚的理解:
众所周知,CBOW正在学习根据上下文预测单词。或者通过查看上下文来最大化目标词的概率。这恰好是稀有词的问题。例如,给定上下文yesterday was a really [...] day
CBOW 模型会告诉您这个词很可能是beautiful
or 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']。(同样的随机窗口减少发生,所以一半的时间只是两个例子,最接近的词。)