本文解读的是Tomas Mikolov等人于2013年发表的开创性论文《Efficient Estimation of Word Representations in Vector Space》,该论文提出了Word2Vec模型,首次实现了高效、大规模的词向量学习,将词语表示从稀疏的one-hot编码转变为稠密的分布式向量表示。Word2Vec不仅是自然语言处理的里程碑,更是从传统NLP到现代大语言模型演进的起点——它证明了语义可以通过向量空间中的几何关系来表达,为后续的Seq2Seq、Transformer乃至GPT系列奠定了基础。
语言理解的根本挑战
问题一:词语表示的离散性困境
在传统NLP中,词语通常用one-hot编码表示。对于一个包含 $V$ 个词的词表,每个词被表示为一个 $V$ 维向量,只有对应位置为1,其余为0。
这种表示方法存在三个根本问题:
- 维度灾难:词表规模通常在万到百万级别,导致向量维度极高
- 稀疏性:每个向量只有一个非零元素,绝大多数信息为0
- 语义缺失:任意两个词的向量正交,无法表达语义相似性
例如,“king"和"queen"虽然语义相近,但在one-hot表示下:
$$ \text{sim}(\text{king}, \text{queen}) = \text{king}^\top \cdot \text{queen} = 0 $$
向量的内积为0,完全无法捕捉它们的语义关联。
问题二:分布式假设与向量空间
语言学中的分布式假设(Distributional Hypothesis)指出:“一个词的含义由其上下文决定”(You shall know a word by the company it keeps)。这一假设为词向量学习提供了理论基础。
如果我们能够将词映射到一个连续的向量空间,使得语义相似的词在空间中距离相近,那么:
- 词之间的语义关系可以通过向量运算表达
- 模型可以泛化到未见过的词组合
- 下游任务可以利用预学习的语义知识
问题是:如何高效地学习这样的词向量?
问题三:计算效率的瓶颈
在Word2Vec之前,已有一些词向量学习方法(如神经网络语言模型NNLM),但它们面临严重的计算瓶颈:
$$ \text{时间复杂度} = O(V \times H + H \times H) \times E \times T $$
其中 $V$ 是词表大小,$H$ 是隐藏层维度,$E$ 是训练轮数,$T$ 是语料大小。当 $V$ 达到百万级别时,Softmax输出层的计算成为不可接受的瓶颈。
Word2Vec的核心贡献在于:通过简化模型架构和引入高效训练技巧,将词向量学习的规模提升了几个数量级。
Word2Vec的核心机制
CBOW:从上下文预测中心词
**Continuous Bag-of-Words(CBOW)**模型通过上下文词预测中心词。给定上下文窗口 $c$,目标是最大化:
$$ P(w_t | w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c}) $$
CBOW的计算过程:
- 输入层:将上下文词的one-hot编码转换为词向量
- 投影层:对上下文词向量取平均
$$ h = \frac{1}{2c} \sum_{j=-c, j \neq 0}^{c} v_{w_{t+j}} $$
- 输出层:计算中心词的概率分布
$$ P(w_t | \text{context}) = \frac{\exp(v’{w_t}^\top h)}{\sum{w=1}^{V} \exp(v’_w^\top h)} $$
其中 $v_w$ 是词 $w$ 的输入向量,$v’_w$ 是输出向量。
Skip-gram:从中心词预测上下文
Skip-gram模型与CBOW相反,通过中心词预测上下文词。给定中心词 $w_t$,目标是最大化:
$$ P(w_{t-c}, \ldots, w_{t+c} | w_t) = \prod_{j=-c, j \neq 0}^{c} P(w_{t+j} | w_t) $$
每个上下文词的预测概率为:
$$ P(w_o | w_i) = \frac{\exp(v’{w_o}^\top v{w_i})}{\sum_{w=1}^{V} \exp(v’w^\top v{w_i})} $$
Skip-gram的训练目标是最大化对数似然:
$$ \mathcal{L} = \sum_{t=1}^{T} \sum_{j=-c, j \neq 0}^{c} \log P(w_{t+j} | w_t) $$
Skip-gram在处理稀有词和小规模语料时表现更好,因为每个词有多次作为中心词被训练的机会。
高效训练技巧
Word2Vec的突破性在于引入了两种高效训练技巧,将Softmax的 $O(V)$ 复杂度大幅降低。
**负采样(Negative Sampling)**将多分类问题转化为二分类问题。对于每个正样本(中心词-上下文词对),随机采样 $k$ 个负样本(中心词-随机词对)。
目标函数变为:
$$ \log \sigma(v’{w_o}^\top v{w_i}) + \sum_{j=1}^{k} \mathbb{E}{w_j \sim P_n(w)} [\log \sigma(-v’{w_j}^\top v_{w_i})] $$
其中 $\sigma(x) = \frac{1}{1+e^{-x}}$ 是sigmoid函数,$P_n(w)$ 是负样本分布(通常采用单词频率的3/4次方)。
负采样将复杂度从 $O(V)$ 降至 $O(k)$,其中 $k$ 通常取5-20。
**层次Softmax(Hierarchical Softmax)**使用Huffman树结构,将Softmax的 $O(V)$ 复杂度降至 $O(\log V)$。每个词对应树中的一条路径,从根节点到叶节点的路径决定了词的概率。
路径上每个节点的二分类概率为:
$$ P(n, \text{left}) = \sigma(v’n^\top v{w_i}) $$
词的概率是路径上所有节点概率的乘积:
$$ P(w | w_i) = \prod_{n \in \text{path}(w)} P(n, \text{direction}) $$
词向量的神奇性质
语义线性结构
Word2Vec学到的词向量展现出惊人的线性结构。最著名的例子是:
$$ \vec{v}{king} - \vec{v}{man} + \vec{v}{woman} \approx \vec{v}{queen} $$
这意味着"king"和"man"之间的关系(性别差异)与"queen"和"woman"之间的关系相似,且这种关系可以通过向量运算捕捉。
类似的关系还包括:
- 国家-首都:$\vec{v}{Paris} - \vec{v}{France} + \vec{v}{Italy} \approx \vec{v}{Rome}$
- 动词时态:$\vec{v}{walking} - \vec{v}{walk} + \vec{v}{swim} \approx \vec{v}{swimming}$
- 比较级:$\vec{v}{bigger} - \vec{v}{big} + \vec{v}{small} \approx \vec{v}{smaller}$
向量空间的几何意义
词向量空间具有丰富的几何结构。语义相似的词在空间中形成聚类,语义关系表现为向量间的方向。
余弦相似度是衡量词语相似性的常用指标:
$$ \text{sim}(w_1, w_2) = \frac{v_{w_1} \cdot v_{w_2}}{|v_{w_1}| \cdot |v_{w_2}|} $$
通过最近邻搜索,可以找到语义最相近的词:
| 查询词 | 最近邻词 |
|---|---|
| king | queen, prince, monarch, ruler |
| computer | software, hardware, laptop, PC |
| beautiful | gorgeous, pretty, lovely, stunning |
迁移学习的先驱
Word2Vec开创了NLP中预训练-微调范式的先河。在大规模语料上预训练的词向量可以直接用于下游任务,显著提升性能。
这一思想后来发展为:
- ELMo(2018):上下文相关的词向量
- BERT(2018):双向Transformer预训练
- GPT系列(2018-2023):单向Transformer生成式预训练
评估与应用
内在评估:词语类比任务
Google发布的词语类比数据集包含约20,000个类比问题,分为语义和句法两类。评估指标是类比问题的准确率。
| 模型 | 语义准确率 | 句法准确率 | 总体准确率 |
|---|---|---|---|
| CBOW (300维) | 24% | 64% | 45% |
| Skip-gram (300维) | 55% | 59% | 57% |
| Skip-gram (1000维) | 66% | 65% | 66% |
外在评估:下游任务性能
Word2Vec作为特征输入,在多个NLP任务上带来显著提升:
| 任务 | 基线 | +Word2Vec | 提升 |
|---|---|---|---|
| 情感分析 | 80.5% | 86.3% | +5.8% |
| 命名实体识别 | 84.2% | 88.7% | +4.5% |
| 句法分析 | 89.1% | 91.4% | +2.3% |
训练效率
Word2Vec的训练效率是其广泛采用的关键因素:
| 语料规模 | 词表大小 | 训练时间 | 每秒处理词数 |
|---|---|---|---|
| 10亿词 | 100万 | 1天 | ~100万 |
| 60亿词 | 300万 | 3天 | ~230万 |
使用单机多线程即可在合理时间内处理大规模语料。
Word2Vec的历史地位
承上启下的里程碑
Word2Vec在NLP发展史上具有承上启下的地位:
承上:
- 继承了分布式假设的语言学理论
- 延续了神经网络语言模型的思路
- 改进了LSA/LDA等矩阵分解方法的效率
启下:
- 为深度学习在NLP中的应用奠定基础
- 开创了大规模预训练范式
- 启发了后续的ELMo、BERT、GPT系列
局限性与改进方向
Word2Vec也存在一些局限性:
- 静态表示:每个词只有一个向量,无法处理多义词(如"bank"既可表示银行也可表示河岸)
- 缺乏上下文:词向量不随上下文变化,限制了表达能力
- 子词问题:无法处理未登录词(OOV)和形态学变化
这些局限性推动了后续研究:
- FastText(2016):引入子词信息,处理形态学变化
- ELMo(2018):上下文相关的动态词向量
- Transformer(2017):自注意力机制,捕捉长距离依赖
阅读研究论文的时间线计划
本文在技术时间线中的位置
【当前位置】Word2Vec(2013) → Seq2Seq(2014) → Attention(2015) → Transformer(2017)
→ GPT-1(2018) → GPT-2(2019) → Scaling Laws(2020) → GPT-3(2020) → InstructGPT(2022) → ChatGPT
前置知识
在阅读本文之前,建议了解:
- 信息论基础(熵、交叉熵、互信息)
- 神经网络基础(前向传播、反向传播、梯度下降)
- 概率语言模型(N-gram、统计语言模型)
后续论文推荐
完成本文后,建议按顺序阅读:
- 【ChatGPT时刻02】Seq2Seq(下一篇):序列到序列学习框架,是机器翻译和对话系统的基础
- 【ChatGPT时刻03】注意力机制:解决长距离依赖问题的关键突破
- 【ChatGPT时刻04】Transformer:现代大语言模型的架构基础
完整技术路线图
词表示革命 序列建模突破 大模型时代
│ │ │
Word2Vec ────────► Seq2Seq ─────────► Transformer ──────────► GPT-3
(2013) (2014) (2017) (2020)
│ │ │ │
└── 词向量 └── 编码器-解码器 └── 自注意力 └── 涌现能力
嵌入层 Attention初现 位置编码 上下文学习
并行计算 指令遵循(RLHF)
参考文献
- Mikolov, T., Chen, K., Corrado, G., & Dean, J. (2013). Efficient Estimation of Word Representations in Vector Space. arXiv preprint arXiv:1301.3781.
- Mikolov, T., Sutskever, I., Chen, K., Corrado, G., & Dean, J. (2013). Distributed Representations of Words and Phrases and their Compositionality. NeurIPS.
- Goldberg, Y., & Levy, O. (2014). word2vec Explained: Deriving Mikolov et al.’s Negative-Sampling Word-Embedding Method. arXiv preprint arXiv:1402.3722.
- Levy, O., & Goldberg, Y. (2014). Neural Word Embedding as Implicit Matrix Factorization. NeurIPS.
- Pennington, J., Socher, R., & Manning, C. D. (2014). GloVe: Global Vectors for Word Representation. EMNLP.