Embeddings:把离散符号放进连续空间
直觉版:相似含义靠得更近
Section titled “直觉版:相似含义靠得更近”Embedding 是把 token、句子或文档变成一串数字向量。理想情况下,语义相近的内容在向量空间里距离更近:“猫”和“狗”会比“猫”和“火箭”更接近。这样模型就能用连续数学处理离散语言,也让搜索、聚类、推荐和 RAG 成为可能。
早期词向量展示了“向量差”能编码关系;后来的上下文表示说明,同一个词在不同句子里应该有不同含义。例如“苹果发布手机”和“我吃了苹果”中的“苹果”不应完全相同。
工程版:向量质量取决于目标函数
Section titled “工程版:向量质量取决于目标函数”训练 embedding 的方法很多:预测邻近词、语言建模、对比学习、监督微调。不同目标会产生不同几何结构。检索系统关心召回和排序,通常要评估向量维度、归一化、距离函数、分块策略和负样本质量。
在 LLM 中,输入嵌入层把 token ID 映射为向量;输出层常与嵌入层共享或相关。RAG 中的 embedding 模型则是外部索引的入口。不要把 embedding 当成”理解”的全部:它擅长相似度,但对数字、否定、时间和组合逻辑仍需额外评估。
核心公式:Word2Vec 的 Skip-gram 目标函数
Section titled “核心公式:Word2Vec 的 Skip-gram 目标函数”Skip-gram 模型通过最大化中心词预测上下文词的概率来学习词向量:
其中,条件概率使用 softmax 计算:
- 和 分别是输入和输出词向量
- 是词汇表大小
- 是上下文窗口大小
示例代码:词向量的语义关系
Section titled “示例代码:词向量的语义关系”import numpy as np
def cosine_similarity(v1, v2): """计算两个向量的余弦相似度""" return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
# 模拟简化的词向量(实际维度通常是 256-1024)embeddings = { '国王': np.array([0.5, 0.8, 0.2, 0.9]), '王后': np.array([0.4, 0.7, 0.3, 0.85]), '男人': np.array([0.6, 0.3, 0.1, 0.4]), '女人': np.array([0.5, 0.2, 0.2, 0.35]), '猫': np.array([0.1, 0.1, 0.9, 0.2]), '狗': np.array([0.15, 0.12, 0.85, 0.25]),}
# 展示类比关系:king - man + woman ≈ queenking_man_woman = embeddings['国王'] - embeddings['男人'] + embeddings['女人']similarity = cosine_similarity(king_man_woman, embeddings['王后'])print(f"'国王-男人+女人' 与 '王后' 的相似度: {similarity:.3f}")
# 展示语义相似度cat_dog_sim = cosine_similarity(embeddings['猫'], embeddings['狗'])cat_king_sim = cosine_similarity(embeddings['猫'], embeddings['国王'])print(f"猫-狗相似度: {cat_dog_sim:.3f}")print(f"猫-国王相似度: {cat_king_sim:.3f}")研究版:向量空间的几何与语义
Section titled “研究版:向量空间的几何与语义”研究上,embedding 空间的几何结构揭示了语言的统计规律,但也存在系统性偏差。Word2Vec 的”king - man + woman ≈ queen”展示了类比关系的线性编码,但这种关系是否对所有社会文化概念都公平?研究表明,预训练词向量往往携带性别、种族和职业偏见,这些偏见会传递到下游任务。
上下文表示(如 ELMo、BERT)缓解了一些静态词向量的歧义问题,但引入了新的问题:不同层的表示捕捉了不同级别的语言结构(表层语法 vs 深层语义)。探测任务(probing)试图判断模型”知道”什么,但探测器的成功是否意味着模型真正掌握了概念,还是仅仅利用了统计线索?这仍是表示学习中的核心争论。
🔬 开放研究问题
该领域的关键问题与研究方向:
- 静态词向量(word2vec、GloVe)与上下文相关表示(ELMo)的本质区别是什么?这种演进是否是必然的?
- 负采样(negative sampling)的目标函数与隐式矩阵分解之间有何数学联系?
- 多语言或低资源语言的嵌入质量如何系统性地提升?词表构造对嵌入学习有何影响?
本文引用论文
- Efficient Estimation of Word Representations in Vector Space
Word2Vec 提出了词向量(词嵌入)的概念:通过在大规模文本上训练神经网络,让语义相近的词 在向量空间中距离相近。"king - man + woman ≈ queen"的类比关系让世人看到了词嵌入的威力, 为后来所有语言模型的嵌入层奠定了基础。
- Deep contextualized word representations
ELMo 提出了"语境化词嵌入"的概念:同一个词在不同语境中有不同的向量表示(例如 bank 在金融 和河岸两种语境中向量不同)。ELMo 用双向 LSTM 实现语境化,在多个 NLP 任务上刷新了 SOTA, 为 BERT 和后续预训练模型奠定了思想基础。
- GloVe: Global Vectors for Word Representation
GloVe 通过分解词共现矩阵来学习词向量,结合了基于计数的方法(LSA)和基于预测的方法 (Word2Vec)的优点。在词类比和词相似度任务上达到了当时最先进的性能, 是学术界广泛使用的基线词向量。
- Distributed Representations of Words and Phrases and their Compositionality
word2vec 的 NeurIPS 版正篇,引入 Negative Sampling、Hierarchical Softmax 与 phrase-level 向量。之后 GloVe / fastText / 大模型 embedding 层的训练目标都受其影响。
- Convolutional Neural Networks for Sentence Classification
用 CNN + 预训练词向量做文本分类,证明"预训练 embedding + 简单架构"能打过手工特征工程,是预训练范式渗入 NLP 的早期标志。
- ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators
用 replaced token detection 替代 MLM,让小模型也能拿到 BERT-large 级表现。是"预训练目标决定样本效率"这条线索的代表作。