引言:为什么 Embedding 如此重要?
在深度学习领域,有一个思想几乎贯穿了所有成功的模型——学习数据的良好表示(representation)。而 Embedding(嵌入)正是这个思想最直接、最优雅的体现。
Embedding 的核心思想出人意料地简单:将离散的、高维的符号(如单词、用户 ID、商品编号)映射到一个连续的、低维的向量空间中,使得语义上相似的对象在这个空间中距离也相近。
一个 Embedding 就是一个参数化的映射函数 \(W: \text{symbols} \rightarrow \mathbb{R}^n\),它将离散符号映射到 \(n\) 维实数向量空间。这些向量并不是人工设计的——而是在优化某个任务的过程中自动学习得到的。
正如 Christopher Olah 在其经典博文中所说:"为什么神经网络如此有效?因为更好的数据表示方式可以从优化分层模型的过程中自然涌现。" Embedding 正是这种涌现最典型的案例。
从 One-Hot 到分布式表示
要理解 Embedding 为什么重要,首先要理解它替代了什么。在 Embedding 出现之前,最常见的离散数据表示方法是 one-hot 编码:为词汇表中的每个词分配一个独立的维度。
从稀疏的 one-hot 编码到稠密的 embedding 向量
One-hot 编码有两个根本问题:
- 维度灾难:如果词汇表有 50,000 个词,每个词就是一个 50,000 维的向量——绝大多数位置都是 0,极其浪费。
- 语义盲区:任何两个不同词的 one-hot 向量都是正交的,余弦相似度为 0。"cat" 和 "dog" 之间的距离与 "cat" 和 "airplane" 之间的距离完全相同——网络无法从表示本身获得任何语义信息。
Embedding 解决了这两个问题。1986 年,Hinton 在其开创性论文中首次提出了分布式表示(distributed representation)的概念:用一个稠密的低维向量来表示每个符号,向量的每个维度都参与编码,一个概念由多个维度共同表达。这就是 embedding 的思想根基。
Embedding 训练的核心思想
Embedding 最精妙的地方在于:向量不是人工设计的,而是通过解决某个代理任务(proxy task)自动学习得到的。学习的方式是反向传播——embedding 矩阵是模型参数的一部分,在训练过程中被不断优化。
这个思路源自语言学中的分布假说(Distributional Hypothesis),由 Harris (1954) 和 Firth (1957) 提出:
"You shall know a word by the company it keeps." —— J.R. Firth, 1957
一个词的含义由它出现的上下文决定。
具体来说,embedding 的训练通常遵循以下模式:
Embedding 的训练范式:通过解决代理任务来学习表示
关键洞察:Embedding 中涌现出的良好属性(如语义相似性、类比关系)全部是副产品。我们从未显式地要求"让同义词的向量接近"——这是优化过程自发产生的结果。正如 Bengio et al. (2003) 在其开创性论文 A Neural Probabilistic Language Model 中解释的:模型需要将 "the cat sat on the mat" 的有效性泛化到 "the dog sat on the mat",而做到这一点最自然的方式就是让 "cat" 和 "dog" 拥有相似的向量表示。
这种泛化能力是指数级的:如果有 \(n\) 个可替换位置,每个位置有 \(k\) 个同义词,那么从一个句子就能泛化到 \(k^n\) 个语义等价的句子。
突破性方法:Word2Vec 与 GloVe
虽然词嵌入的概念早在 2003 年就被提出,但真正让它成为 NLP 标配的是 2013 年 Mikolov 等人在 Google 开发的 Word2Vec。
CBOW(连续词袋模型)
Skip-gram
Word2Vec 的两大创新使其成功:
- 极简的架构:去掉了 Bengio 模型中的隐藏层,使训练速度提升了几个数量级,可以在数十亿词的语料库上训练。
- 负采样(Negative Sampling):不需要对整个词汇表做 softmax,而是随机采样少量"负例"进行对比学习,大幅降低了计算成本。
Word2Vec 最令人惊叹的发现是向量算术(vector arithmetic)编码了语义类比关系:
Word2Vec 的类比关系:向量差编码了语义维度 (Mikolov et al., 2013)
2014 年,Stanford 的 Pennington 等人提出了 GloVe(Global Vectors),将两种思路统一:既利用全局词共现矩阵的统计信息(类似传统的 LSA/SVD 方法),又像 Word2Vec 那样捕捉局部上下文窗口的关系。其核心目标函数是:
其中 \(X_{ij}\) 是词 \(i\) 和词 \(j\) 在上下文窗口中共同出现的次数。GloVe 的设计使得词向量的内积近似于它们共现概率的对数——这在理论上更加优雅。
Embedding 的神奇属性
Embedding 不仅仅是一种数据压缩手段。经过训练后,它展现出多种引人注目的属性:
语义聚类
语义相似的词自然聚集在向量空间的邻近区域。用 t-SNE 可视化后可以清晰看到:数字词聚在一起、职业词聚在一起、动物词聚在一起。(Turian et al., 2010)
类比推理
词间的关系被编码为一致的方向向量。king-man+woman=queen 只是冰山一角——国家/首都、动词时态、比较级等关系都能被捕获。(Mikolov et al., 2013)
迁移学习
在大规模语料上训练的 embedding 可以直接迁移到各种下游任务——命名实体识别、情感分析、语法分析——并显著提升性能。(Luong et al., 2013)
跨模态对齐
不同模态的数据(文本、图像、音频)可以被嵌入到同一个空间,实现跨模态检索和零样本学习。(Socher et al., 2013; Frome et al., 2013)
最重要的是——这些属性都是涌现的(emergent)。我们只是训练网络完成一个简单的预测任务,这些丰富的结构就自发地出现在了 embedding 空间中。这正是深度学习的力量:优化表示,表示便自然变好。
共享表示与跨模态 Embedding
Embedding 的力量不仅限于单一类型的数据。深度学习的一个关键技巧是共享表示(shared representation):在任务 A 上学习好的表示,然后将其应用于任务 B——这就是预训练(pretraining)、迁移学习(transfer learning)和多任务学习(multi-task learning)的基础。
更进一步,我们可以将不同类型的数据映射到同一个表示空间中:
- 双语 embedding:Socher et al. (2013) 将英语和中文的词嵌入到同一空间。已知互译词对齐后,未知的翻译对也会自然地靠近彼此——就像两种语言具有相似的"形状",对齐几个点后整体就重叠了。
- 图像-文本 embedding:将图像和单词嵌入到同一空间中,使得狗的图像映射到 "dog" 词向量附近。即便从未见过某个类别(如 "cat"),模型也能把猫的图像映射到 "cat" 向量的邻域——实现零样本分类。(Socher et al., 2013; Frome et al., 2013)
- CLIP:OpenAI 的 CLIP (2021) 将这一思想推到极致,用对比学习在 4 亿图文对上训练,实现了强大的零样本图像分类和跨模态检索能力。
跨模态 Embedding:将图像和文本嵌入到同一空间
Embedding 的发展历史
1954 — 分布假说
Harris 提出分布假说:语义相似的词出现在相似的上下文中。
1986 — 分布式表示
Hinton 提出分布式表示的概念,为 embedding 奠定理论基础。
1997 — LSA(潜在语义分析)
Deerwester et al. 使用 SVD 对词-文档共现矩阵降维,是最早的向量化表示方法之一。
2003 — 神经概率语言模型
Bengio et al. 发表 A Neural Probabilistic Language Model,首次将神经网络词嵌入引入语言建模,证明了学习到的表示具有泛化能力。这篇论文是现代 word embedding 的起源。
2008 — Collobert & Weston
提出可以在多个 NLP 任务间共享预训练的词嵌入,开启了 NLP 预训练的先河。
2013 — Word2Vec
Mikolov et al. 在 Google 提出 Word2Vec(CBOW 和 Skip-gram),通过极简架构和负采样技术实现大规模训练,发现了向量类比等惊人属性。Efficient Estimation of Word Representations in Vector Space 和 Distributed Representations of Words and Phrases 两篇论文影响深远。
2014 — GloVe
Pennington et al. 在 Stanford 提出 GloVe,统一了全局统计和局部上下文两种方法。同年,Cho et al. 展示了短语级别的 embedding 用于机器翻译。
2014 — 序列到序列学习
Sutskever et al. 使用 LSTM encoder-decoder 进行机器翻译,将整个句子嵌入到一个固定向量中——证明 embedding 不仅可以表示单词,还可以表示句子。
2015 — fastText
Facebook 的 Bojanowski et al. 提出子词(subword)嵌入,利用字符 n-gram 构建词向量,能处理词汇表外的词。
2017 — Transformer 与注意力机制
Vaswani et al. 提出 Transformer 架构(Attention is All You Need),其中的 positional embedding 和 self-attention 机制彻底改变了序列建模,也为后续的上下文化嵌入奠定了基础。
2018 — ELMo 与 BERT
Peters et al. 提出 ELMo(基于双向 LSTM 的上下文化词嵌入);Devlin et al. 提出 BERT(基于 Transformer 的双向预训练)。Embedding 从静态变为上下文相关——同一个词在不同句子中获得不同的向量。
2020 — GPT-3
OpenAI 的 GPT-3 展示了大规模语言模型中 embedding 的涌现能力:1750 亿参数模型中学到的表示可以实现 few-shot 和 zero-shot 学习。
2021 — CLIP
Radford et al. 提出 CLIP,通过对比学习将图像和文本嵌入到共享空间,实现了强大的零样本视觉分类。
2022+ — 向量数据库与 RAG
随着大语言模型的兴起,text embedding 成为检索增强生成(RAG)的核心组件。Pinecone、Weaviate 等向量数据库生态蓬勃发展。
从静态 Embedding 到上下文化 Embedding
Word2Vec 和 GloVe 属于静态嵌入——每个词无论出现在什么语境中,都只有一个固定向量。但现实中,词义往往依赖上下文:"bank" 在 "river bank" 和 "bank account" 中含义完全不同。
2018 年是 embedding 发展的转折点。ELMo(Peters et al.)和 BERT(Devlin et al.)先后提出了上下文化嵌入的概念:embedding 不再是固定的查找表,而是由整个输入句子动态生成的。
静态 embedding 是一张查找表(\(W_\theta(w_n) = \theta_n\)),而上下文化 embedding 是一个函数(\(h_i = f(w_1, w_2, \ldots, w_n; i)\))——第 \(i\) 个词的表示取决于整个序列。
这一转变的意义是深远的。在 BERT 中,"bank" 在不同语境下会获得完全不同的向量表示。更重要的是,这些上下文化的表示可以作为通用特征,几乎在所有 NLP 任务上都取得了质的飞跃——BERT 在发布时刷新了 11 项 NLP 基准测试。
现代的大语言模型(GPT、LLaMA、Claude 等)本质上就是超大规模的上下文化 embedding 模型。它们的每一层都在不断地精炼和丰富 token 的表示,直到最终层产生足够丰富的表示来完成各种任务。
Embedding 的广泛应用
Embedding 的影响远远超出了 NLP。任何涉及离散符号或需要学习表示的领域,都在使用 embedding 的思想:
推荐系统
将用户和商品嵌入到同一空间,用向量相似度衡量偏好。YouTube、Spotify 等大规模推荐系统的核心。
知识图谱
TransE 等模型将实体和关系嵌入为向量,使知识推理变成向量运算。
分子科学
将蛋白质序列和分子结构嵌入为向量,用于药物发现和蛋白质结构预测(AlphaFold)。
代码理解
将代码片段嵌入为向量,用于代码搜索、克隆检测和自动补全。
语义搜索 / RAG
将文档和查询嵌入同一空间,通过向量相似度实现语义检索,是 RAG 系统的基础。
音频 / 图像
CNN 和 ViT 的中间层输出本质上就是图像 embedding。音频的 Wav2Vec 同理。
核心要点总结
Embedding 将离散符号映射为连续向量,让模型能够度量相似性并实现泛化
训练的核心是分布假说:通过预测上下文来学习表示,语义信息作为副产品涌现
Word2Vec 和 GloVe 证明了词向量可以大规模训练,并展现出类比推理等神奇属性
从静态到上下文化(ELMo → BERT → GPT),embedding 变得更加强大和灵活
跨模态 embedding(CLIP 等)将不同类型数据对齐到同一空间,实现零样本学习
Embedding 是深度学习最根本的思想之一:学习良好的表示是一切的基础
References
本文综合参考了以下研究成果:
- Olah, C. (2014). Deep Learning, NLP, and Representations.
- Hinton, G. (1986). Learning distributed representations of concepts. Proceedings of CogSci.
- Bengio, Y., Ducharme, R., Vincent, P. & Jauvin, C. (2003). A Neural Probabilistic Language Model. JMLR.
- Collobert, R. & Weston, J. (2008). A Unified Architecture for Natural Language Processing. ICML.
- Turian, J., Ratinov, L. & Bengio, Y. (2010). Word representations: A simple and general method for semi-supervised learning. ACL.
- Collobert, R., Weston, J., Bottou, L., et al. (2011). Natural Language Processing (Almost) from Scratch. JMLR.
- Mikolov, T., Chen, K., Corrado, G. & Dean, J. (2013a). Efficient Estimation of Word Representations in Vector Space.
- Mikolov, T., Sutskever, I., Chen, K., et al. (2013b). Distributed Representations of Words and Phrases and their Compositionality.
- Socher, R., et al. (2013a). Zero-Shot Learning Through Cross-Modal Transfer. NIPS.
- Socher, R., et al. (2013b). Grounded Compositional Semantics for Finding and Describing Images with Sentences. TACL.
- Socher, R., et al. (2013c). Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank. EMNLP.
- Frome, A., et al. (2013). DeViSE: A Deep Visual-Semantic Embedding Model. NIPS.
- Luong, M.T., Socher, R. & Manning, C. (2013). Better Word Representations with Recursive Neural Networks for Morphology. CoNLL.
- Pennington, J., Socher, R. & Manning, C. (2014). GloVe: Global Vectors for Word Representation. EMNLP.
- Cho, K., van Merrienboer, B., et al. (2014). Learning Phrase Representations using RNN Encoder-Decoder. EMNLP.
- Sutskever, I., Vinyals, O. & Le, Q. (2014). Sequence to Sequence Learning with Neural Networks. NIPS.
- Bojanowski, P., et al. (2017). Enriching Word Vectors with Subword Information. TACL.
- Vaswani, A., et al. (2017). Attention is All You Need. NeurIPS.
- Peters, M., et al. (2018). Deep contextualized word representations (ELMo). NAACL.
- Devlin, J., et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers. NAACL.
- Radford, A., et al. (2021). Learning Transferable Visual Models From Natural Language Supervision (CLIP).