问题:计算机不懂文字

计算机处理的是数字。要处理文本,必须把词表示成数值。

早期方案一: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 的知识整理。