词嵌入 Word2Vec:CBOW 与 Skip-gram

FreeGuideOnline 最新 2026-06-16

词嵌入:从稀疏到稠密的表示革命

在自然语言处理的早期,词汇通常被表示为独热编码。这种表示方式存在两个致命缺陷:

  • 维度灾难:词汇表有多大,向量维度就有多高,导致计算成本激增。
  • 语义缺失国王王后之间的相似度和国王桌子之间的相似度在独热向量中完全相等,模型无法理解词语之间的关联。

词嵌入技术应运而生,它将每个词映射到一个低维、稠密的实数向量中。这些向量不仅维度可控,更能神奇地捕捉语义和句法信息。Word2Vec 正是实现这一目标的里程碑式模型。

Word2Vec 核心思想

Word2Vec 由 Tomas Mikolov 团队于 2013 年提出。它基于一个朴素的分布假说:一个词的含义可以由它周围的语境决定。模型通过训练一个简单的神经网络,让这个词去“预测”它的上下文,或将上下文作为输入来“猜测”中间的词。在这个任务中,网络隐藏层的权重矩阵最终就成为了我们需要的词向量。

Word2Vec 提供了两种经典的训练架构:CBOW(连续词袋模型)Skip-gram。它们就像一枚硬币的两面,用相反的逻辑完成相同的使命。


架构一:CBOW — 由上下文猜中心词

CBOW 的全称是 Continuous Bag-of-Words,即连续词袋模型。它的任务是:给定一个中心词的上下文词汇,预测这个中心词本身是什么

例如,对于句子“这只 __ 在睡觉”,如果上下文窗口大小设为 2,左右各取两个词,即输入为[这只, 可爱的, 在, 睡觉],模型需要预测出中心词

工作流程

  1. 输入层:将上下文中的每个词(比如 这只可爱的睡觉)都转换为对应的独热编码向量。
  2. 投影层:用共享的词嵌入矩阵 W 将这些独热向量映射为稠密向量,然后对这些上下文向量求平均(或求和),得到一个固定长度的向量。之所以叫“词袋”,正是因为它在平均过程中丢失了词序信息,但大大简化了计算。
  3. 输出层:将平均后的向量乘以输出权重矩阵 W',通过 Softmax 函数得到整个词汇表的概率分布。概率最高的词就是模型预测的中心词。

特点与适用场景

  • 训练速度更快:因为一次训练只处理一组上下文,比 Skip-gram 所需的计算量小。
  • 对高频词的表现更好:CBOW 倾向于利用整体语境进行平滑预测,面对出现次数较多的词时,获得的向量质量更高。
  • 适合小型数据集:在数据量有限的情况下,CBOW 的平均化操作相当于做了某种程度的正则,能有效防止过拟合。

架构二:Skip-gram — 由中心词猜上下文

Skip-gram 的思路与 CBOW 截然相反。它的任务是:给定一个中心词,预测它周围可能出现的上下文词汇

还是那句话:“这只可爱的猫在睡觉”。Skip-gram 会接收中心词 ,然后要求模型输出它周围词如 可爱的 等。每个上下文词都是独立预测的。

工作流程

  1. 输入层:中心词 的独热编码。
  2. 投影层:直接通过嵌入矩阵 W 查找中心词的稠密向量。这里没有平均操作。
  3. 输出层:将中心词向量乘以输出权重矩阵 W',再经过 Softmax 层。对于设定的窗口大小(比如左右各取 2 个词),模型会为每个上下文位置生成独立的概率分布,并分别计算损失。

特点与适用场景

  • 对低频词更友好:Skip-gram 强迫模型为每一个中心词精细刻画其上下文分布,因此即便一个词只出现几次,只要它的上下文有规律,也能学到高质量的表示。
  • 生成的词向量通常更精细:尤其在大规模语料上,Skip-gram 能够捕获更丰富的语义关系。
  • 训练速度较慢:每输入一个中心词,就要预测多个输出词,计算量成倍增加。但在海量数据上,这个代价换来的准确度提升是值得的。

CBOW 与 Skip-gram 核心差异速览

特性 CBOW Skip-gram
预测方向 上下文 → 中心词 中心词 → 上下文
投影层操作 对上下文向量求平均 直接取中心词向量,无组合
训练速度 快,适用于大规模高吞吐场景 慢,每个中心词产生多组输出
低频词效果 一般,易被大量高频语境“平均”掉 优秀,专为每个词精确建模
高频词效果 稳定平滑 可能过度拟合到常见搭配
数据量需求 小数据集效果尚可 数据量越大优势越明显
经典应用偏好 快速搭建基线系统 追求高精度语义表示的任务

训练中的关键优化技术

无论 CBOW 还是 Skip-gram,原生 Softmax 在词汇表巨大时计算成本极高。Word2Vec 通过两项工程技巧让训练变得可行:

  • 负采样:不再计算所有词的 Softmax 概率,而是将任务简化为二分类。对于正样本(真实上下文词),模型学习提高其概率;再随机采样几个“负样本”(非上下文词),模型学习降低它们的概率。这样输出层只需更新少量权重。
  • 层次 Softmax:将词汇表组织成一棵哈夫曼树。每个词都有一条从根节点到叶节点的唯一路径,每次预测只需计算路径上几个节点的概率,将计算复杂度从 O(V) 降为 O(log V)。

动手实践与选择建议

如果你正在自己的项目中引入词嵌入,可以这样决策:

  1. 数据集较小或计算资源有限:从 CBOW + 负采样 开始,它能给出一个稳健的基线。
  2. 拥有大规模语料且追求精细语义:优先选择 Skip-gram + 负采样,取词向量的精度往往领先。
  3. 调试窗口大小:较大的窗口能捕获更多主题/领域信息,较小的窗口侧重捕捉词性和短语搭配。没有银弹,需根据任务调整。
  4. 不要从零训练:在绝大多数工程实践中,直接加载公开的预训练词向量(如 Google News 300 维向量)进行微调或作为静态特征,往往是更高效的选择。

词嵌入的内在魔力

经过训练后,你获得的不仅仅是向量。用向量操作:

国王 - 男人 + 女人 ≈ 王后

这种线性关系就是词嵌入捕获到的语言规律。CBOW 与 Skip-gram 正是打开这扇语义大门的钥匙。理解它们的原理,意味着你能够根据场景明智地选择、调优并解释词向量背后的行为,为更复杂的 NLP 任务(如文本分类、机器翻译、情感分析)打下坚实基础。