问题:计算机不懂文字
计算机处理的是数字。要处理文本,必须把词表示成数值。
早期方案一:One-Hot 编码
每个词一个维度,只有对应位置为 1,其余为 0。
词汇表有 10 万个词 → 每个词是一个 10 万维的向量,其中只有一位是 1。
问题:
- 维度灾难(极高维、极稀疏);
无法表达相似性:
- "猫"和"猫科动物"的向量,与"猫"和"冰箱"的向量,距离完全相同(都是正交的);
- 模型无法知道"猫"和"狗"比"猫"和"冰箱"更相似。
早期方案二:词袋模型(Bag of Words)
统计文档中词的出现频次。
问题:丢失了词序("狗咬人"和"人咬狗"的表示相同),且同样无法表达词义相似性。
核心思想:分布式表示
分布式语义假设(Distributional Hypothesis):
一个词的含义,由它所处的上下文决定。
(语言学家 J.R. Firth 的名言:"You shall know a word by the company it keeps.")
含义:出现在相似上下文中的词,意思相近。
"猫"和"狗"都会出现在"宠物""喂食""可爱""动物"附近 → 它们应该有相近的表示。
Word2Vec(2013)
Google 的 Tomas Mikolov 团队提出,是词向量普及的里程碑。
两种训练方式:
一、CBOW(Continuous Bag of Words)
用上下文预测中心词。
二、Skip-gram
用中心词预测上下文。
在大规模语料上的效果好于 CBOW(尤其对低频词)。
训练技巧:
- 负采样(Negative Sampling):不必在整个词表上做 softmax(计算量巨大),只需区分"真实的上下文词"与"随机采样的负例";
- 层次化 softmax:用树结构加速。
最著名的例子
训练完成后,词向量展现出了令人惊讶的语义结构:
vector("国王") - vector("男人") + vector("女人") ≈ vector("王后")
vector("巴黎") - vector("法国") + vector("日本") ≈ vector("东京")
含义:词向量捕捉到了语义关系,且这些关系在向量空间中表现为"方向" ——性别、国家—首都、时态等关系,都对应着空间中大致一致的偏移方向。
这被称为"类比推理(Analogy)"能力 ——它是词向量质量的经典评测方式,也让"嵌入"这个概念广为人知。
其它经典方法
GloVe(斯坦福,2014):
基于全局的词共现统计——构造一个巨大的共现矩阵,然后做矩阵分解。
特点:结合了全局统计信息(Word2Vec 只用局部窗口)。
FastText(Facebook,2016):
把词表示为字符 n-gram 的集合。
关键优势:能处理未登录词(OOV)——即使一个词没在训练语料中出现过,也能从它的字符片段构造出向量。
这对形态丰富的语言(如芬兰语、土耳其语)和多语言场景特别有用。
局限
一、一词多义无法处理
"苹果" 在"吃苹果"和"苹果公司"中含义完全不同——但静态词向量给它们同一个向量。
这被称为"词义消歧"问题。
二、无法处理上下文
每个词只有一个固定的表示,与句子无关。
三、无法表达词组/句子
词向量的简单平均(如求句子所有词向量的均值)会丢失大量信息(词序、句法)。
解决方案:上下文相关的嵌入
这是近年 NLP 最重要的进步之一。
ELMo(2018):用双向 LSTM 生成依赖上下文的词表示——同一个词在不同句子中有不同向量。
BERT(2018)及后续的 Transformer 模型:
- 通过自注意力机制,每个词的表示都融合了整个句子的信息;
- 自然地处理了一词多义;
- 可以直接生成句子级的表示。
这就是现代大语言模型的基础——"嵌入"已不再是一个固定的查找表,而是模型动态计算出来的、情境化的表示。
"嵌入"的更广含义
词向量只是"嵌入"的一种。嵌入(Embedding)的通用思想是:
把高维、稀疏、离散的对象,映射到低维、稠密的连续向量空间,使得语义/结构上的相似性,对应于向量空间中的距离。
这个思想被广泛应用:
一、图嵌入(Graph Embedding)
把图中的节点映射为向量,使得相连的节点(或结构相似的节点)在向量空间中靠近。
应用:社交网络推荐、知识图谱补全。
二、用户/物品嵌入
推荐系统的核心技术:
- 把用户和商品都表示为向量;
- 用户向量与商品向量的点积(或余弦相似度)表示"匹配程度"。
这就是"协同过滤"的矩阵分解方法,以及现代推荐系统的双塔模型的基础。
三、位置嵌入(Positional Embedding)
Transformer 本身对顺序不敏感(自注意力是"集合"操作),因此需要显式地注入位置信息。
这就是位置嵌入的作用——把"第几个词"编码成向量加到输入上(或用旋转位置编码 RoPE 等更先进的方式)。
四、多模态嵌入
CLIP(OpenAI,2021):把图像和文本映射到同一个向量空间——使得"一张猫的照片"和"一只猫"这段文字的向量彼此接近。
这实现了:
- 以文搜图(用文字找图片);
- 零样本图像分类;
- 为后来的图文生成模型奠定了基础。
五、向量数据库与 RAG
这正是当前 AI 应用的核心技术之一:
- 把文档切成块,每块生成一个嵌入向量;
- 存入向量数据库(用近似最近邻索引,如 HNSW、IVF);
- 用户提问时,把问题也转成向量,检索出最相似的文档块;
- 把这些文档块作为上下文提供给语言模型。
这就是 RAG(检索增强生成) ——它让模型能够基于外部知识库回答问题,而不仅依赖训练时记住的内容(前文提到过 RAG)。
一个关键点:为什么要"稠密低维"
从 10 万维的 one-hot,压缩到 300 维的稠密向量:
- 计算效率:维度大幅降低;
- 泛化能力:模型学到的不是"具体的词",而是语义特征——因为相似词的向量相近,模型对未见过的组合也能有合理的判断;
- 平滑性:向量空间是连续的、可微的——这使得梯度下降可以优化它(这是神经网络能处理文本的必要前提)。
一句话
嵌入的本质,是把"符号"变成"几何" ——让"含义相近"这件事,变成"空间中距离相近",从而让数学工具可以处理意义。
说明:本文为 NLP 的知识整理。