引言:让机器理解语言的几何学
自然语言处理(NLP)的核心挑战是如何让计算机理解人类语言的意义。在深度学习革命之前,这个问题困扰了研究者数十年。而词向量(Word Embeddings)的出现,为这个领域带来了一场范式转变——它将词语映射为高维空间中的向量,使得"意义"变成了可以计算、比较和推理的几何对象。
一、离散时代的语言表示
1.1 One-hot编码的局限
在词向量出现之前,NLP中最常用的表示方法是one-hot编码。每个词被表示为一个高维向量,维度等于词表大小,只有对应位置为1,其余为0。例如,在一个包含10,000个词的词表中,"猫"可能表示为[1,0,0,...,0],而"狗"表示为[0,1,0,...,0]。
这种表示方法有两个致命缺陷:
- 维度灾难:词表通常包含数万甚至数十万词,导致向量极其稀疏
- 语义鸿沟:所有向量彼此正交,无法表达词与词之间的语义关系——"猫"和"狗"作为动物的相似度,与"猫"和"火箭"完全相同
1.2 N-gram与统计语言模型
在词向量之前,N-gram模型是统计语言模型的主流方法。它基于马尔可夫假设,用前面N-1个词来预测下一个词的概率。例如,在"I love to eat ___"中,模型根据统计频率预测下一个词可能是"food"、"pizza"等。
N-gram模型虽然实用,但仍无法捕捉长距离依赖关系,且面临数据稀疏问题——很多N-gram组合在训练数据中从未出现。
二、词向量的诞生:分布式假设
2.1 Firth的分布式假设
1957年,英国语言学家J.R. Firth提出了一个革命性的观点:一个词的义项取决于它所处的上下文(You shall know a word by the company it keeps)。这就是著名的分布式假设(Distributional Hypothesis),也是词向量方法的理论基础。
分布式假设的核心思想是:语义相似的词会出现在相似的上下文中。如果我们能统计每个词在不同上下文中出现的频率模式,就可以用这些模式的相似度来衡量词语义的相似度。
2.2 潜在语义分析(LSA)
20世纪90年代,潜在语义分析(Latent Semantic Analysis, LSA)首次将分布式假设付诸实践。LSA构建词-文档矩阵,然后使用奇异值分解(SVD)将高维稀疏矩阵压缩为低维稠密表示。
LSA的数学原理:
- 构建词-文档矩阵 X(m×n,m为词数,n为文档数)
- 对X进行截断SVD分解:X ≈ U_k Σ_k V_k^T
- 词向量由 U_k Σ_k 的行给出,维度通常为50-300维
但LSA计算复杂度较高,且难以融入新词,限制了其在大规模数据集上的应用。
三、神经词向量时代
3.1 Word2Vec:Bengio的神经网络语言模型
2003年,Yoshua Bengio等人提出了神经概率语言模型(NPLM),首次用神经网络来学习词向量。模型通过训练预测词的上下文任务,自然地将词语义编码进隐藏层权重中。
然而,真正让词向量普及的是2013年Mikolov等人提出的Word2Vec。Word2Vec包含两种架构:
- CBOW(Continuous Bag of Words):用上下文词预测中心词,适合高频词训练
- Skip-gram:用中心词预测上下文词,对低频词表现更好
3.2 Word2Vec的训练技巧
Word2Vec的成功不仅在于模型架构,更在于其训练效率的优化:
- 负采样(Negative Sampling):将softmax分类问题转化为二分类问题,大幅降低计算复杂度
- 层次Softmax(Hierarchical Softmax):用Huffman树减少softmax计算量
- Subsampling高频词:随机丢弃高频词(如"the"、"a"),加速训练并提升低频词表示质量
3.3 词向量的惊人特性
Word2Vec最迷人的发现是词向量空间中存在线性子结构。Mikolov等人发现:
- vec("King") - vec("Man") + vec("Woman") ≈ vec("Queen")
- vec("Paris") - vec("France") + vec("Italy") ≈ vec("Rome")
- vec("brother") - vec("man") + vec("woman") ≈ vec("sister")
这意味着词向量空间中的方向编码了特定的语义关系(如性别关系、首都关系),这种几何可解释性为语义理解提供了数学基础。
四、GloVe与全局统计信息
2014年,斯坦福大学Pennington等人提出了GloVe(Global Vectors)模型,结合了LSA的全局统计和Word2Vec的上下文窗口的优势。
GloVe的核心思想是:词与词共现概率的比值能反映词语义关系。例如:
- 如果词k是"ice",那么P(solid | ice)很大,P(gas | ice)很小
- 如果词k是"steam",那么P(solid | steam)很小,P(gas | steam)很大
- 如果词k是"water",那么P(solid | water)和P(gas | water)都适中
GloVe通过最小化词向量对数与共现概率对数的差值来训练:
J = Σ_ij f(X_ij)(w_i^T w̃_j + b_i + b̃_j - log X_ij)²
其中X_ij是词i和词j的共现次数,f是加权函数以防止高频共现对主导损失。
五、上下文词向量时代:从静态到动态
5.1 静态词向量的局限
Word2Vec和GloVe都学习静态词向量——每个词只有一个固定的向量表示。这无法处理一词多义问题:
- "bank"在"river bank"(河岸)和"bank account"(银行账户)中含义完全不同
- "苹果"可以指水果,也可以指科技公司
5.2 ELMo:第一个上下文词向量
2018年,Peters等人提出了ELMo(Embeddings from Language Models),首次实现动态上下文词向量。ELMo使用双向LSTM预训练语言模型,在下游任务中根据当前上下文动态调整词的表示。
ELMo的核心思想是堆叠多层LSTM的输出,高层捕获语义特征(如情感、主题),低层捕获句法特征(如词性、句法结构)。
5.3 BERT:双向Transformer的突破
同年,Google提出了BERT(Bidirectional Encoder Representations from Transformers),彻底改变了NLP格局。BERT的关键创新在于:
- 掩码语言模型(MLM):随机掩盖输入中15%的词,让模型预测被掩盖的词,实现真正的双向编码
- 下一句预测(NSP):判断两个句子是否是连续的,学习句子间关系
- 预训练-微调范式:大规模无监督预训练 + 下游任务微调
BERT的成功催生了预训练语言模型的大爆发,为后来GPT系列、T5等模型奠定了基础。
六、词向量的应用与影响
6.1 迁移学习的基石
预训练词向量开启了NLP的迁移学习时代。在几乎每个NLP任务中,使用预训练词向量作为初始表示都能显著提升性能,有时甚至超过随机初始化训练几个百分点的效果。
6.2 跨语言词向量
词向量还被扩展到跨语言场景。Mikolov发现不同语言的词向量空间具有相似的几何结构,可以通过学习旋转映射实现跨语言词翻译。Conneau等人提出的MUSE框架利用对抗训练学习无监督跨语言词向量对齐。
6.3 可解释性与公平性
词向量并非完美无缺。Caliskan等人(2017)发现词向量会编码训练数据中的性别和种族偏见——例如vec("programmer") - vec("man") + vec("woman")更接近vec("homemaker")而非vec("engineer")。这引发了对AI系统公平性的广泛讨论和研究。
七、从词向量到大语言模型
词向量的思想——用稠密向量表示语义单元——直接延续到了大语言模型中。现代大语言模型如GPT-4、Claude等,本质上都是通过大规模预训练学习上下文相关的token表示。
所不同的是:
- 词向量学习的是词的静态/动态语义表示
- 大语言模型学习的是整个语言序列的生成规律
- 大语言模型的表示能力远超传统词向量,能够捕捉抽象推理、逻辑关系和常识知识
但词向量的核心思想——分布式表示、语义空间几何、预训练迁移——仍然是现代NLP和LLM的理论根基。
结语
从one-hot到Word2Vec,从BERT到大语言模型,词向量的三十年演进是NLP发展史上最精彩的篇章之一。它不仅解决了词语义的表示问题,更启发了整个深度学习在自然语言处理中的应用范式。
今天,当我们与大型语言模型交互时,背后依然是那个简单而深刻的原理:用向量表示意义,用几何捕捉关系。词向量的故事告诉我们,好的科学思想往往源于一个简洁的假设——理解一个词,就要看它与谁同行。

发表评论 取消回复