核心要点

  • CBOW:用上下文词预测中心词,训练快、对高频词效果好

  • Skip-gram:用中心词预测每个上下文词,训练慢但低频/罕见词表示更好

  • 重视低频/罕见词,或训练数据较少(Mikolov 原始经验:小数据上 Skip-gram 也更稳)→ 选 Skip-gram

  • 追求训练速度、以高频词为主 → 选 CBOW

标准回答

CBOW 和 Skip-gram 是 Word2Vec 的两种训练架构,方向相反,因此适用场景不同。

CBOW(Continuous Bag-of-Words)

  • 做什么:把窗口内的多个上下文词向量聚合(求和/平均),去预测中心词
  • 特点:一次前向用多个上下文预测一个目标,相当于对上下文做了「平滑」,训练速度快;对高频词学习充分、表示更稳。但平滑也会淹没低频词信息,对罕见词不利。
  • 适合:以常见词为主、对训练速度或资源敏感、词频分布相对均衡的场景。

Skip-gram

  • 做什么:用中心词预测窗口内每一个上下文词,一个中心词产生多个训练样本。
  • 特点:样本量更大、训练更慢;但对低频词 / 罕见词的表示更好,因为每个词(包括稀有词)都会作为中心词产生多条预测样本,得到更充分的更新;捕捉的语义关系更细。Mikolov 在原始论文里的经验是:Skip-gram 即使在训练数据较少时也能给出不错的表示、尤其对罕见词更友好。
  • 适合:关注低频词或专有名词质量、对语义细粒度要求高,或数据量不大的场景(如检索、相似词挖掘)。

如何选择

  • 重视低频/罕见词,或训练数据较少 → Skip-gram(注意这与"小数据就该用 CBOW"的常见误解相反,Mikolov 的经验恰恰是小数据用 Skip-gram);
  • 追求训练速度、以高频词为主 → CBOW;
  • 实践中常配合负采样使用,即 SGNS(Skip-gram with Negative Sampling),是工业界默认的稳妥选择。

常见误区

⚠️ 常见踩坑

误以为 Skip-gram 一定比 CBOW「更好」。两者各有适用面:CBOW 在高频词上又快又稳,Skip-gram 的优势体现在低频/罕见词表示,且按 Mikolov 的经验在小数据上也更稳。另一个误区是忽略它们都只是训练目标,最终用的都是词向量;选型应结合语料规模、词频分布和下游任务,用相似度/类比或端到端指标实测,而非凭直觉。

追问

追问 1为什么 Skip-gram 对低频词的表示通常更好?

因为 Skip-gram 让每个词都作为中心词去预测其周围的多个上下文词,单个词会产出多条训练样本,包括罕见词也能获得多次梯度更新;而 CBOW 把多个上下文平均后预测中心词,低频上下文词的信息容易被高频词「平滑」淹没,更新不充分,所以 Skip-gram 在低频词上更细致。

追问 2为什么 CBOW 训练比 Skip-gram 快?

CBOW 每个窗口只产生一个训练目标(由多个上下文预测一个中心词),而 Skip-gram 每个窗口要为每个上下文词各产生一个样本,样本数约是窗口大小的倍数。因此同样语料下 Skip-gram 的前向/反向次数更多,训练更慢,但也获得了更多样本带来的表示质量。

追问 3窗口大小如何影响两种模型,应如何调?

窗口越大,模型捕捉的更偏「主题/话题」层面的关联;窗口越小越偏「句法/搭配」层面的相似。Skip-gram 对窗口更敏感,增大窗口能进一步丰富低频词的共现信息。一般大语料、重语义可适当增大窗口(如 5-10),重句法或小语料用较小窗口(如 2-5),需结合下游任务实测。

🔗 相似问题

同一考点的不同问法,面试官可能换着问,一起刷更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习