2013年提出,模型结构和NNLM基本一致,只是训练方法不同,分为CBOW和SKIP-GRAM两种,打破了之前只能通过上文来预测当前词的固定思维。

- CBOW :
- 输入 : 同样获取
(n-1)个上下文词的词向量。 - 处理 : 将这些词向量求平均 (Average) 或求和 (Sum) ,得到一个
m维的上下文表示向量h。 - 输出 : 这个
m维的向量h直接 与一个输出权重矩阵W_out相乘,得到|V|维的 logits,然后通过softmax得到概率。z = W_out * h - 特点 : 没有隐藏层 ,本质上是一个线性模型(在使用负采样时,可以看作多个二分类的线性模型)。这种设计极大地简化了模型,使其能够快速训练,并扩展到非常大的语料库上。
- 训练方式 : 几乎从不使用标准 Softmax 。它主要依赖两种高效的近似方法:
- 负采样 (Negative Sampling) : 对于每个正样本(真实的中心词),随机采样
k个负样本(词汇表中的其他词),然后训练一个二分类器来区分正负样本。计算复杂度降为O(k),k通常很小(5-20)。 - 层次 Softmax (Hierarchical Softmax) : 将词汇表组织成一棵二叉树(如霍夫曼树),将多分类问题转化为一系列二分类问题,复杂度降为
O(log|V|)。
- 负采样 (Negative Sampling) : 对于每个正样本(真实的中心词),随机采样
- 输入 : 同样获取
霍夫曼树解决问题:
1)不同词编码不同
2)每个词的编码不会成为另一个词的前缀
3)构造出的词编码总体长度最小,且越高频词编码越短
建树步骤:
1)对词按照词频排序
2)选取词频最低的两个节点,更低的放左侧,较低的放右侧,顶点记录两者频率之和
3)选取剩余词频最小的和之前的频率之和对比,小的放左边,依次类推
4)建好树之后,左边是0,右边是1
-
优势: 这些技巧使得 CBOW 可以在普通硬件上快速训练,并轻松处理超大规模数据,这是它得以广泛应用的关键。
-
Skip-Gram :
- 中心词映射为词向量;
- 对每个上下文位置分别进行预测(即多次输出);
- 实际实现中,通常将每个
(中心词, 上下文词)视为独立样本。
💡 因此,Skip-Gram 的训练样本数量远多于 CBOW(尤其在大窗口时)。