Word2Vec、GloVe 与浅层词表示

Word2Vec (2013) 与 GloVe (2014) 是浅层词表示的标志性工作。它们通过自监督方式在大规模语料上预训练词向量,将离散符号映射为连续向量空间中的稠密向量,使语义相似的词在向量空间中彼此接近。这一思想深刻影响了后续的表示学习、预训练语言模型以及现代对比学习范式。


1. 背景:从离散符号到连续向量

传统 NLP 以 one-hot 编码 表示词:词典中第 个词对应第 维为 1、其余为 0 的向量。设词典大小为 ,则词向量维度为 ,且任意两个不同词的向量正交——这完全无法表达词之间的语义关系。

Word2Vec 的核心思想是:分布式语义假设(Distributional Hypothesis)——“一个词的含义由其所处的上下文语境决定”。若词 和词 在类似上下文中出现,则它们语义相近。因此,我们可以通过预测词的上下文(或者根据上下文预测词)来学习词的有效表示,而无需人工标注。


2. Word2Vec 的两种基本形式

2.1 CBOW(Continuous Bag of Words)

结构:根据上下文词预测中心词。

设中心词为 ,上下文窗口半径为 ,则上下文词为 。CBOW 的目标是最大化条件对数概率:

条件概率建模:给定上下文向量 (上下文中各词的输入向量均值),CBOW 使用 softmax 定义条件概率:

其中 为词 输入向量(作为上下文时使用), 为词 输出向量(作为中心词时使用)。最终每个词保留两个向量,通常取两者均值或仅使用输入向量作为该词的最终表示。

训练目标可写为负对数似然最小化形式:

2.2 Skip-gram(跳字模型)

结构:根据中心词预测上下文词。

与 CBOW 相反,Skip-gram 的目标是最大化:

假设给定中心词 时,各上下文位置的预测条件独立,使用 softmax 定义:

同样地, 是中心词的输入向量, 是上下文词的输出向量。

两种模型的对比

特性CBOWSkip-gram
预测方向上下文 → 中心词中心词 → 上下文
训练信号多对一聚合一对多
对高频词训练更稳定对高频词处理偏弱
小数据集表现相对更好大规模语料表现更佳

3. 计算挑战:softmax 的困境与解决方案

3.1 朴素 softmax 的计算问题

无论 CBOW 还是 Skip-gram,其条件概率均含 softmax

其中 为中间表示(CBOW 中的上下文向量 或 Skip-gram 中的 )。计算分母需要对整个词典 (通常 ~ 词)求和,每次前向传播的时间复杂度为 ,这在训练时是致命的瓶颈。

因此,必须引入近似计算方法来规避全词典 softmax。

3.2 负采样(Negative Sampling)

核心思想:将多分类问题转化为多个二分类问题。每个正样本(真实上下文词)搭配若干负样本(随机抽样的”噪声”词),训练一个区分正负样本的逻辑斯谛分类器。

设给定中心词 时, 为正样本;从噪声分布 中抽取 个词 作为负样本。负采样目标为最大化以下对数似然:

其中 为 Sigmoid 函数。

直观推导:对每个正样本 ,我们希望 尽量大;对每个负样本 ,我们希望 尽量小。整体目标等价于最小化:

噪声分布:论文建议使用 (unigram 频率的 次方归一化),相比均匀采样能更有效地抽取有意义的负样本——频率较高的词更可能作为负样本,同时不会过度打压稀有词。

负采样实际上是在对 噪声对比估计(Noise Contrastive Estimation, NCE) 的简化。NCE 证明,当负样本数量足够多时,上述目标函数的期望梯度等价于原始 softmax 目标函数的期望梯度,但计算复杂度从 降低到了

3.3 层次 softmax(Hierarchical Softmax)

核心思想:用二叉树结构对词典进行编码,将扁平 softmax 分解为从根到叶节点的路径概率乘积。

设每个词 对应二叉树中某个叶子节点,从根到该叶节点的路径长度为 ,路径上的第 个内部节点为 ,其左右子节点的分类由参数 决定。条件概率定义为:

这使得计算复杂度从 降至 。树结构通常使用 霍夫曼树,使高频词拥有更短的路径,进一步加速训练。

两种方法的对比

特性负采样层次 softmax
计算复杂度,与 线性相关
适合场景稀疏词、低频词较多高频词为主
参数存储需要负采样分布需要树结构与路径节点向量
精度近似精度与 正相关精度由树结构决定

4. GloVe:全局共现矩阵的矩阵分解视角

4.1 共现矩阵的构建

GloVe(Global Vectors)由 Pennington 等人于 2014 年提出。与 Word2Vec 完全基于预测不同,GloVe 首先统计词-词共现矩阵

上下文定义可以是固定窗口(类似 Word2Vec)或基于文档的共现。 是一个稀疏矩阵,但捕捉了全局语料级别的统计信息

4.2 从共现概率到语义相似性

GloVe 的核心洞察是利用**共现比率(co-occurrence ratio)**来编码语义:

(其中 为词 的共现总数),则共现比率 能够区分与 相关而与 不相关的词。例如,对于 “ice” 和 “steam”:

  • 较大, 较小 → 比率大
  • 较小, 较大 → 比率小

这说明共现比率直接编码了词之间的语义关系。

4.3 GloVe 目标函数

基于上述分析,GloVe 定义如下加权最小二乘目标函数:

其中:

  • 分别为词 的主向量和上下文向量(最终使用
  • 为偏置项
  • 为加权函数:

该加权函数的设计使得:低频共现对优化目标的贡献被压制(避免噪声),高频共现对被适当缩放但不至主导。

为什么 GloVe 与共现统计相关:目标函数直接拟合 ——这意味着学到的词向量之间的点积本质上编码了共现矩阵的信息。从矩阵分解角度看,GloVe 是对共现矩阵进行带权重的低秩分解;从 Skip-gram 角度看,Word2Vec 的条件概率可展开为共现概率的函数(见 GloVe 论文中的数学推导)。两种方法的本质是相通的:词向量之间的语义关系可以从共现统计中恢复。


5. Word2Vec 与 GloVe 的对比与联系

维度Word2Vec (Skip-gram)GloVe
建模方式预测(条件概率)矩阵分解(共现统计)
语料利用滑动窗口局部上下文全局共现矩阵
训练效率高(负采样/层次 softmax)中(加权最小二乘,需遍历共现矩阵)
语义任务表现类比推理(king - queen ≈ man - woman)类比推理相近,词语相似任务略优
超参数敏感性对窗口大小、采样策略敏感对向量维度、共现阈值敏感

两者的目标函数在数学上存在深刻联系:当 Word2Vec 的上下文窗口扩展到全语料且使用特定的采样策略时,其目标函数趋近于 GloVe 的矩阵分解目标。


6. 静态词向量表示的局限性与自监督学习的先驱意义

6.1 静态词向量的核心局限

一词多义(Polysemy)问题:每个词在学习时仅获得一个固定的向量表示,但自然语言中大量词汇具有多个独立含义(如 “bank” 可指银行或河岸)。静态向量无法根据上下文动态调整,无法区分多义词的语义。例如:

  • “The bank deposited money.”
  • “He sat on the bank of the river.”

两个 “bank” 在静态向量中完全相同,这从根本上限制了语言理解能力。

上下文无关性:无论出现在何种语境下,词向量始终不变。这使得静态词向量无法处理复杂的语义组合(如修饰歧义、句法歧义)。

6.2 Word2Vec 作为自监督学习的经典案例

自监督学习的本质:不依赖人工标注的标签,而是从数据本身构造监督信号。Word2Vec 完全符合这一范式:

  • 构造代理任务:预测中心词(Skip-gram)或上下文词(CBOW)
  • 无需人工标注:监督信号直接来源于语料中词的共现关系
  • 预训练的通用性:学习到的词向量可迁移到下游 NLP 任务

这一框架在 2013-2018 年间被广泛使用——在下游任务上以词向量作为输入特征或初始化,是迁移学习的经典范式。

6.3 与 BERT/ELMo 的本质区别

特性Word2Vec / GloVeBERT / ELMo
词向量类型静态(每个词一个固定向量)动态/上下文相关(每个词在每个语境中向量不同)
架构浅层(输入层 + 输出层)深层(多层 Transformer/LSTM)
预训练任务无监督(语言建模式代理任务)掩码语言建模(MLM)+ 下句预测(NSP)
多义词处理无法区分通过上下文动态区分
代表模型Word2Vec, GloVeBERT, ELMo, GPT

ELMo(2018) 的贡献在于首次引入了深层双向 LSTM 的上下文相关表示——相同词在不同句子中获得不同向量。但 ELMo 的向量是各层 LSTM 隐藏状态的线性组合,并非真正的上下文编码。

BERT(2018) 则彻底解决了多义词问题:通过 掩码语言建模(MLM),在双向上下文中预测被遮盖的词,每个词位置的表示均由完整上下文计算得到。BERT 的 [CLS] 向量可直接用于分类任务,无需设计特定任务的模型结构。

Word2Vec 在这一演进脉络中的地位:它证明了大规模无标注语料可以学习到具有语义结构的连续表示,启发了后续”预训练-微调”范式的兴起;同时,其”分布式语义假设”的哲学——语义寓于分布、分布寓于使用——是现代表示学习和对比学习的理论基础。


7. 工程实践工作流

7.1 语料预处理

原始语料
  ├── 文本清洗:HTML标签、特殊字符、URL等
  ├── 分词(Tokenization)
  │     ├── 英文:WordPiece(BERT式)/ 空格分词 + 统一小写
  │     └── 中文:Jieba / LTP / 自定义词典分词
  ├── 构建词典(Vocabulary)
  │     ├── 词频统计,设定 min_count 阈值过滤低频词
  │     ├── 特殊标记:[UNK], [PAD], [SEP], [CLS](如用于下游任务)
  │     └── 词典大小通常在 3万~10万
  └── 降采样(Downsampling)
        └── 高频词(如 "the", "的")按比例随机丢弃,加速训练并提升稀有词学习

7.2 超参数选择指南

超参数典型取值范围选型建议
向量维度 100~300语料规模越大,维度可适当提高;维度超过 300 收益递减
窗口大小 5~10小窗口(5)更偏向句法相似;大窗口(10+)更偏向语义相似
负采样数量 5~15大语料用更多负样本;通常 为基准
降采样阈值 左右丢弃频率高于该阈值的词
最小词频 min_count3~10过滤噪声词;中文因分词粒度差异可能需要更高阈值
学习率0.001~0.025(初始)通常配合线性warm-up与衰减
训练轮次1~5(大规模语料)Skip-gram 在大语料上通常 1 个 epoch 足够

维度选择的一般原则:维度过低欠拟合,过高过拟合且增加存储和计算成本。在实际工程中,可在验证集上选择最优维度,或直接使用 300 维(已成为社区默认标准)。

7.3 评估方法

7.3.1 内在评估(Intrinsic Evaluation)

词类比任务(Word Analogy):检验 已知时,模型能否正确预测 ,满足 。例如:

  • “king : queen :: man : woman” → 期望输出 “woman”
  • “Beijing : China :: Tokyo : Japan”

评估指标为准确率(在去除无法回答的词对后的正确率)。

词语相似度任务(Word Similarity):将模型预测的词向量余弦相似度与人类评分(Spearman 相关系数)进行比较。常用数据集包括 WS-353、SimLex-999。

聚类与可视化:对词向量进行 K-means 聚类或 t-SNE/UMAP 可视化,观察语义类聚是否显著分离。

7.3.2 外在评估(Extrinsic Evaluation)

将学习到的词向量作为下游模型的输入特征(或初始化),评估在真实任务上的表现:

  • 命名实体识别(NER)
  • 情感分析
  • 文本分类
  • 句法分析

外在评估更能反映词向量在实际应用中的价值,但计算成本更高。


8. Word2Vec 完整训练流程

以下为 Skip-gram + 负采样训练流程的伪代码:

输入: 语料库, 窗口大小 m, 负采样数 k, 向量维度 d, 学习率 η, 训练轮数 E
输出: 输入词向量矩阵 V ∈ ℝ^{|V|×d}

1. 初始化: 随机初始化 V_input ∈ ℝ^{|V|×d} 和 V_output ∈ ℝ^{|V|×d}
2. 对每个epoch ∈ {1, ..., E}:
3.     对语料库中每个位置 t = 1 到 T:
4.         以 w_t 为中心词, 提取上下文词序列 {w_{t-m}, ..., w_{t-1}, w_{t+1}, ..., w_{t+m}}
5.         对每个上下文词 w_c ∈ 上下文:
6.             正样本: (w_t, w_c)  → label = 1
7.             负采样: 从 P_n(w) 抽取 k 个词 w_neg → label = 0
8.             计算损失梯度:
               J = -log σ(u_c^T v_t) - Σ_{i=1}^k log σ(-u_{neg_i}^T v_t)
9.             梯度更新: v_t ← v_t - η * ∇J/∇v_t
                          u_c ← u_c - η * ∇J/∇u_c
                          u_{neg_i} ← u_{neg_i} - η * ∇J/∇u_{neg_i}
10.    学习率衰减 (可选): η ← η * (1 - epoch/E)
11. 返回 V = (V_input + V_output) / 2   # 取两向量均值作为最终词向量

注意事项

  • 第 8 步中梯度可通过反向传播高效计算
  • 负采样在每个正样本处独立进行,也可预先采样负样本表以加速
  • 输入输出向量分开训练可以捕捉词在不同角色中的语义

9. 负采样训练注意事项

注意事项说明
噪声分布选择使用 unigram 频率的 次方,而非均匀分布。均匀分布会导致高频词(如停用词)过多作为负样本,占用过多梯度更新
负样本数量 的平衡 太小:近似误差大,模型偏向于记忆正样本; 太大:计算成本增加,且负样本质量下降。一般 为经验最优起点
降采样高频词高频词(如 “the”, “of”, “的”)训练信号冗余,参与负采样的概率过高,应按 进行降采样
初始化尺度词向量初始化的方差过大会导致 softmax 饱和,过小会导致梯度消失。建议使用均匀分布 或截断正态分布
词向量归一化对于词语相似度和类比任务,对学到的向量做 L2 归一化()可提升效果,因为余弦相似度仅依赖方向
避免在训练中过早归一化归一化应在训练完成后进行;训练中保持原始向量以保留梯度信号
上下文向量与中心向量Skip-gram 中上下文向量 和中心词向量 分别训练,最终表示取两者均值或仅用 。若仅使用 ,丢弃 会损失约 5-10% 的类比任务性能
内存与负采样表对于大词典,预先构建负采样查找表(按频率采样),避免每次训练时实时计算采样概率

10. 总结:作为表示学习里程碑的历史地位

Word2Vec 与 GloVe 的历史贡献在于以下四个方面:

  1. 证明了大规模自监督预训练的有效性:无需任何人工标注,仅通过预测任务即可学习具有语义结构的词表示。这为后续的 BERT、GPT 等预训练语言模型奠定了方法论基础。

  2. 建立了分布式语义的理论框架:一个词的语义可以完全由其上下文分布刻画,无需人工定义的语义特征。这一哲学深刻影响了表示学习的研究方向。

  3. 提供了高效的工程化范式:负采样、层次 softmax 等技术使得大规模词向量训练成为可能,证明了连续表示在大规模 NLP 系统中的实用价值。

  4. 启发了对比学习的新一代研究:Word2Vec 的核心——“让相似词在向量空间中靠近、不相似词远离”——正是现代对比学习(如 SimCLR、Momentum Contrast)的基本精神,只不过对比学习将这一思想从词级别扩展到了句级别甚至样本级别。

作为早期表示学习的代表工作,Word2Vec 与 GloVe 的思想至今仍是理解现代语言模型的重要起点。在学习 BERT 和 Transformer 之前,理解 Word2Vec 的目标函数、数学推导与局限性,能够更深刻地把握语言表示从静态走向动态、从浅层走向深层的历史脉络。