编辑
2025-10-08
大模型学习
00
请注意,本文编写于 62 天前,最后修改于 59 天前,其中某些信息可能已经过时。

目录

一、 初始阶段:独热编码(One-Hot Encoding)—— 身份的标识符
1. 核心思想
2. 具体事例
3. 存在的致命缺陷
4. 小结
二、 演进阶段:潜在语义分析(LSA)—— 统计与降维
1. 核心思想:
2. 具体事例:分步构建词-文档矩阵
第一步:计算词频(TF)
第二步:计算逆文档频率(IDF)
第三步:计算TF-IDF值
第四步:奇异值分解(SVD)与降维
3. 事例分析:
4. 优点与局限:
三、 革命阶段:Word2Vec—— 预测学习与分布式表示
1. 核心思想:从统计到预测
2. 两种经典“游戏规则”与目标函数
2.1. CBOW (Continuous Bag-of-Words) - “完形填空”
2.2. Skip-gram - “猜邻居”
3. 技术亮点:负采样(Negative Sampling)
4. 神奇的结果:语义关系的向量化
5. 优点与局限
6. 小结
四、 现代阶段:上下文嵌入(Contextual Embedding)—— 动态的语义
1. 核心思想:动态表示与双向编码
2. 关键技术:Transformer与自注意力机制
3. 代表模型:BERT
4. 具体事例:动态编码的魅力
5. 重大意义与影响
6. 小结与展望

一、 初始阶段:独热编码(One-Hot Encoding)—— 身份的标识符

在自然语言处理(NLP)的初期,我们面临一个最根本的问题:如何将人类语言中的词语(一种符号表示)转化为计算机能够处理的数值形式。最直观、最简单的解决方案就是独热编码

1. 核心思想

独热编码是一种将分类变量(Categorical Data)映射为二进制向量的方法。其核心在于:为词典中的每一个唯一词分配一个唯一的整数索引,并使用一个稀疏二进制向量来表示它。这个向量的长度等于词典的大小,其中只有对应词索引的那一维度为1,其他所有维度都为0

2. 具体事例

让我们从一个最简单的微型词典开始。假设我们的整个词典只包含四个词:["猫", "狗", "手机", "苹果"]

通过独热编码,我们将每个词转化为一个4维向量,如下表所示:

词语 (Token)索引 (Index)独热编码向量 (One-Hot Vector)
0[1, 0, 0, 0]
1[0, 1, 0, 0]
手机2[0, 0, 1, 0]
苹果3[0, 0, 0, 1]

这个过程就像是为每个词发放了一张独一无二的“身份证”。计算机通过检查“身份证”上唯一为1的位置,就能准确无误地识别出是哪个词。

3. 存在的致命缺陷

尽管简单有效,独热编码的两个固有缺陷使其无法胜任更复杂的语义理解任务:

  • 维度灾难 (Curse of Dimensionality) 现实世界的词典规模巨大,通常包含数万甚至数十万个单词。这意味着每个词向量都会是一个数万维的向量,其中仅有一个1,其余全是0。这种极高的维度和极度的稀疏性会导致计算效率极其低下,对存储和计算资源都是巨大的浪费。

  • 语义鸿沟 (Semantic Gap) 这是最核心的问题。任何两个不同的独热编码向量都是相互正交的。在数学上,我们通过计算向量的点积(或余弦相似度)来衡量其相似性。对于任意两个不同的词向量,它们的点积始终为0

    比较词语对向量点积人类认知的相似度模型计算的相似度
    “猫”“狗”0高 (同为宠物)0 (完全不相似)
    “猫”“手机”0极低0 (完全不相似)

    如上表所示,独热编码完全无法捕获“猫”和“狗”在语义上相近这一至关重要的语义关系

4. 小结

独热编码成功地将词语转换成了数值形式,为后续处理奠定了基础。但它仅仅解决了词的身份识别问题,就像一个学生花名册,只能告诉我们“谁是谁”,而无法告诉我们“谁和谁关系好”、“谁和谁属于同一个小组”。这种表示方法的局限性促使研究者们去寻找能够揭示词语之间关系的更优表示方案,从而引出了后续基于统计和学习的词嵌入方法。

二、 演进阶段:潜在语义分析(LSA)—— 统计与降维

1. 核心思想:

为了捕获语义,我们必须超越词本身,去分析它与其它词或文档的共现关系。LSA的核心是:首先构建一个描述词与文档关系的统计矩阵(如TF-IDF矩阵),然后使用奇异值分解(SVD)等矩阵分解技术对这个高维稀疏矩阵进行降维,从而在低维的“潜在语义空间”中表示词语,意思相近的词在这个空间中的位置会彼此靠近。

2. 具体事例:分步构建词-文档矩阵

假设我们有一个微型语料库,包含3个文档:

• D1: "猫 吃 鱼" (主题:宠物)

• D2: "狗 吃 肉" (主题:宠物)

• D3: "程序员 写 代码" (主题:科技)

我们的词典包含以上所有词:[“猫”, “吃”, “鱼”, “狗”, “肉”, “程序员”, “写”, “代码”]。

第一步:计算词频(TF)

我们首先统计每个词在每个文档中出现的次数(Term Frequency)。

D1D2D3
100
110
100
010
010
程序员001
001
代码001

第二步:计算逆文档频率(IDF)

IDF用于降低常见词的权重。其公式为:IDF(t) = log(文档总数 / 包含词t的文档数) + 1(常见变体之一)。

出现文档数IDF计算IDF值
1log(3/1)+1 ≈ 1.4771.477
2log(3/2)+1 ≈ 1.1761.176
1log(3/1)+1 ≈ 1.4771.477
1log(3/1)+1 ≈ 1.4771.477
1log(3/1)+1 ≈ 1.4771.477
程序员1log(3/1)+1 ≈ 1.4771.477
1log(3/1)+1 ≈ 1.4771.477
代码1log(3/1)+1 ≈ 1.4771.477

“吃”出现了2次,所以IDF值较低,符合其作为常见词的特性。

第三步:计算TF-IDF值

将TF矩阵中的每个值乘以其对应的IDF值,得到最终的TF-IDF矩阵 X

词语文档1 (D1)文档2 (D2)文档3 (D3)
1.4770.00.0
1.1761.1760.0
1.4770.00.0
0.01.4770.0
0.01.4770.0
程序员0.00.01.477
0.00.01.477
代码0.00.01.477

这就是我们构建的原始统计矩阵 X。它的行是词,列是文档。此时,“猫”和“狗”的向量仍然是正交的([1.477, 0, 0] 和 [0, 1.477, 0]),没有直接语义关联。

第四步:奇异值分解(SVD)与降维

SVD可以将矩阵 X 分解为三个矩阵的乘积:X = U * Σ * V^T。

• 降维操作: 我们只保留奇异值矩阵 Σ 中最大的 k 个奇异值(比如k=2),并相应地截取 U 和 V^T 矩阵。这个过程相当于找到了数据中最重要的两个“潜在主题”。

• 最终结果: 截取后的 U 矩阵(8x2)的每一行,就是对应词的2维新向量。假设降维后,我们得到:

◦ vec(“猫”) = [0.85, 0.1]

◦ vec(“狗”) = [0.82, 0.08]

◦ vec(“程序员”) = [0.05, 0.89]

◦ vec(“代码”) = [0.07, 0.92]

3. 事例分析:

• 语义捕获: 我们可以看到,“猫”和“狗”的新向量在第一维上的值很高且非常接近,而在第二维上值很低。这表明它们共同属于第一个潜在主题(我们可以解释为“宠物主题”)。

• “程序员”和“代码” 在第二维上的值很高且接近,共同属于第二个潜在主题(“科技主题”)。

• 降维成功: 我们将每个词从一个8维的稀疏向量(在3个文档上的TF-IDF)压缩成了一个2维的稠密向量,并且语义信息得到了保留和凸显。

4. 优点与局限:

• 优点: 成功将统计信息转化为语义向量,解决了独热编码的“语义鸿沟”和“维度灾难”问题。

• 局限:

◦ 计算复杂: SVD分解在大矩阵上计算成本非常高。

◦ 多义词困境: 一个词在矩阵中只有一个全局表示。例如,如果语料库中还有“苹果公司”的文档,词“苹果”的向量将是“水果”和“公司”意义的混合体,无法区分。

三、 革命阶段:Word2Vec—— 预测学习与分布式表示

面对LSA等全局统计方法的局限性,研究者们开始探索新的范式。2013年,谷歌团队推出的Word2Vec模型引发了一场革命。其核心思想从一个全新的角度出发:让模型通过完成“预测任务”来学习词向量,而非直接统计共现频率。

1. 核心思想:从统计到预测

Word2Vec的基本假设是分布式语义:一个词的语义由其频繁出现的上下文来决定。它摒弃了构建和分解庞大矩阵的繁重流程,转而训练一个简单的神经网络来完成一个看似简单的任务:根据一个词,预测其上下文中的其他词(或反之)。在成功完成这个预测任务的过程中,模型“顺便”学习到了高质量、富含语义的词向量。

2. 两种经典“游戏规则”与目标函数

Word2Vec提供了两种具体的预测策略,如同两种不同的语言游戏,并有明确的数学目标。

2.1. CBOW (Continuous Bag-of-Words) - “完形填空”

  • 任务: 给定一个目标词周围的上下文词(例如,“今天”、“真好”),预测中间的目标词本身(例如,“天气”)。
  • 特点: 训练速度较快,对常见词的表示效果更好。
  • 目标函数: CBOW的目标是最大化给定上下文 cc (由多个上下文词组成) 下,中心词 ww 出现的概率。其对数似然函数为:
    JCBOW=1Tt=1Tlogp(wtct)J_{\text{CBOW}} = \frac{1}{T} \sum_{t=1}^{T} \log p(w_t | c_t)
    其中 ctc_t 是中心词 wtw_t 的上下文,TT 是训练语料的总词数。

2.2. Skip-gram - “猜邻居”

  • 任务: 给定一个中心词(例如,“天气”),预测在其一定窗口大小内可能出现的上下文词(例如,“今天”、“真好”)。
  • 特点: 在较小的数据集上也能表现良好,尤其能更好地处理生僻词。
  • 目标函数: Skip-gram的目标是最大化给定中心词 ww 下,其所有上下文词 cc 出现的概率。其对数似然函数为:
    JSkip-gram=1Tt=1Tkjk,j0logp(ct+jwt)J_{\text{Skip-gram}} = \frac{1}{T} \sum_{t=1}^{T} \sum_{-k \leq j \leq k, j \neq 0} \log p(c_{t+j} | w_t)
    其中 kk 是定义的窗口大小,TT 是训练语料的总词数。它尝试最大化中心词 wtw_t 和其上下文词 ct+jc_{t+j} 的共现概率。
模型输入 (Input)输出 (Output)类比目标
CBOW上下文词 (Context Words)中心词 (Target Word)完形填空最大化 p(wtct)p(w_t \| c_t)
Skip-gram中心词 (Target Word)上下文词 (Context Words)猜邻居最大化 logp(ct+jwt)\sum \log p(c_{t+j} \| w_t)

3. 技术亮点:负采样(Negative Sampling)

原始的Skip-gram模型计算开销很大,因为它需要为每个训练样本更新整个词典大小规模的权重(通过Softmax)。负采样是一项关键的技术创新,极大地提升了训练效率。

  • 核心思想: 将复杂的多分类问题(从数万个词中选出1个正确答案)简化为一系列简单的二分类问题(判断一个词是“正样本”还是“负样本”)。
  • 如何操作:
    1. 正样本: 从真实上下文中选取的词对(如 ("天气", "今天"))。
    2. 负样本: 从词典中根据词频分布随机抽取k个(例如,5个)非上下文词,与中心词组成负样本对(如 ("天气", "皮鞋")("天气", "哲学"))。
  • 效果: 模型只需要学习区分真实上下文和随机噪声,每次更新只需计算少量样本,训练速度因此提升了数个数量级。它优化的是一个替代目标函数,例如对于Skip-gram with Negative Sampling (SGNS):
    logσ(ucTvw)+i=1kEciPn(c)[logσ(uciTvw)]\log \sigma(\vec{u}_{c}^T \vec{v}_{w}) + \sum_{i=1}^{k} \mathbb{E}_{c_i \sim P_n(c)} [\log \sigma(-\vec{u}_{c_i}^T \vec{v}_{w})]
    其中 σ\sigma 是sigmoid函数,vw\vec{v}_{w} 是中心词向量,uc\vec{u}_{c} 是正上下文词向量,uci\vec{u}_{c_i} 是负样本词向量,Pn(c)P_n(c) 是噪声分布。

4. 神奇的结果:语义关系的向量化

通过上述方式训练出的词向量空间,涌现出了精美的数学规律,最著名的例子是词汇类比关系

vec("国王") - vec("男人") + vec("女人") ≈ vec("女王")

这意味着,“国王”“男人”的向量差异,在很大程度上等同于“女王”“女人”的向量差异。模型不仅捕捉到了词语之间的相似性,更捕捉到了复杂的语义和语法关系(如性别、时态、国家-首都等)。

类比关系示例算式预期结果
性别vec(男人) - vec(女人) ≈ vec(国王) - vec(?)女王
国家-首都vec(中国) - vec(北京) ≈ vec(日本) - vec(?)东京
动词时态vec(做) - vec(做了) ≈ vec(吃) - vec(?)吃了

5. 优点与局限

  • 优点:

    • 高效: 相比LSA,训练速度更快,能处理海量语料。
    • 效果好: 生成的词向量能够捕获非常复杂的语义和语法模式。
    • 可扩展: 模型简单,易于扩展和优化(如负采样)。
  • 局限:

    • 静态表示(Static Embeddings): 这是Word2Vec最主要的局限。一个词无论其上下文如何,都只有一个唯一的、固定的向量表示。 它无法解决一词多义(Polysemy)问题。例如,“苹果”在“苹果手机”和“吃苹果”中将是同一个向量。
    • 未登录词(OOV)问题: 无法为在训练时未见过的词生成向量。

6. 小结

Word2Vec的革命性在于,它通过一个巧妙的“预测任务”框架,将词向量的学习转化为一个高效且强大的优化过程。它产出的词向量首次清晰地展现了词语之间丰富的语义关系,为NLP领域带来了突破性进展。然而,其“静态向量”的固有缺陷也清晰地指明了下一个需要攻克的方向:如何让词的表示能够根据其所在的上下文进行动态调整?这直接引领了我们走向下一个时代——上下文嵌入。

四、 现代阶段:上下文嵌入(Contextual Embedding)—— 动态的语义

Word2Vec的静态表示瓶颈清晰地指向了下一个突破点:一个词的语义高度依赖于其所在的上下文。真正的理解不在于“词是什么”,而在于“词在当下被如何使用”。这一思想催生了以BERT为代表的上下文嵌入技术,它依托Transformer架构,彻底改变了NLP的范式。

1. 核心思想:动态表示与双向编码

上下文嵌入的核心思想是革命性的:不再为每个词分配一个固定的向量,而是让模型根据目标词在句子中的完整上下文,动态地生成其表示。

  • 动态表示 (Dynamic Representation): “苹果”在谈论科技和水果时,会得到两个截然不同的向量。
  • 双向编码 (Bidirectional Encoding): 与传统模型从左到右或从右到左的阅读顺序不同,模型(如BERT)可以同时关注目标词左右两侧的所有上下文词,从而获得更深刻、更准确的理解。

2. 关键技术:Transformer与自注意力机制

这一切的技术基石是Google在2017年提出的Transformer模型架构,其核心是自注意力机制(Self-Attention)

  • 自注意力机制的作用: 它允许序列中的任何一个词直接与序列中的任何其他词进行交互和计算“关联度”,无论它们之间的距离有多远。
  • 工作流程比喻: 处理句子时,自注意力机制就像让每个词“环顾四周”,并思考:“在这个上下文中,我应该重点关注哪些词?哪些词对理解我当下的含义最重要?”然后根据这些关联的权重,汇总所有上下文信息来生成该词新的表示。

3. 代表模型:BERT

BERT (Bidirectional Encoder Representations from Transformers) 是上下文嵌入最著名的代表。其成功源于两个关键设计:

  1. 双向编码器: 如上所述,BERT利用Transformer编码器同时处理整个序列,从而获得深度的双向上下文信息。
  2. 预训练任务:
    • 掩码语言模型 (MLM): 随机遮盖输入序列中15%的词,然后训练模型根据上下文来预测被遮盖的词。这迫使模型深入理解上下文语义。
    • 下一句预测 (NSP): 训练模型判断两个句子是否在原文中相邻。这使模型能够学习句子间的关系。

通过在海量语料上完成这些预训练任务,BERT学到了强大的语言表示能力。开发者可以下载这个“预训练好”的模型,用自己的数据对其进行微调(Fine-tuning),即可高效地应用于各种下游任务(如情感分析、问答系统)。

4. 具体事例:动态编码的魅力

考虑以下两个句子:

  1. Sentence A: "苹果发布了新款手机。"
  2. Sentence B: "她买了一个红苹果。"

让我们对比Word2Vec和BERT的不同表现:

模型“苹果”在 Sentence A 中的向量“苹果”在 Sentence B 中的向量是否相同?含义
Word2Vecvec_applevec_apple✅ 是静态向量,无法区分多义词
BERTvec_apple_techvec_apple_fruit❌ 否动态向量,根据上下文生成
  • BERT的处理过程:

    • 在处理Sentence A时,模型看到“发布”、“手机”等强技术语境词,自注意力机制会赋予这些词很高的权重。因此,它为“苹果”生成的向量 vec_apple_tech 会编码丰富的公司、科技、产品等语义信息。
    • 在处理Sentence B时,模型看到“买”、“红”等词,这些词会获得高权重。因此,它为“苹果”生成的向量 vec_apple_fruit 会编码丰富的水果、食物、颜色等语义信息。
  • 相似度计算:

    • similarity(vec_apple_tech, vec_apple_fruit) 的值会较低,因为BERT认为它们在不同语境下含义不同。
    • similarity(vec_apple_tech, vec_华为) 的值可能会较高,因为它们在同一语境(科技公司)下是相似的。
    • similarity(vec_apple_fruit, vec_香蕉) 的值可能会较高,因为它们在同一语境(水果)下是相似的。

这完美解决了一词多义问题,使模型的语义理解能力达到了前所未有的高度。

5. 重大意义与影响

上下文嵌入的崛起具有里程碑式的意义:

  1. 范式转换: NLP从“为词生成表征”进入了“为词在上下文中的实例生成表征”的新时代。
  2. 性能飞跃: 在几乎所有的NLP基准测试(如GLUE)中,基于上下文嵌入的模型都取得了压倒性的性能提升。
  3. 技术基石: 它成为了当今大语言模型(LLM),如GPT、ChatGPT等的核心底层技术,奠定了生成式AI繁荣的基础。

6. 小结与展望

从独热编码的“身份证”,到LSA的“社交圈分析”,再到Word2Vec的“预测游戏”,最终到BERT的“情境化理解”,词表示技术的发展是一部追求更精准、更动态语义的进化史。

上下文嵌入并非终点。当前的研究正朝着更高效、更轻量的模型架构(如ELECTRA、DeBERTa)发展,并积极迈向多模态融合的新阶段——尝试将文本的嵌入与图像、音频的嵌入对齐在同一个空间内,为实现真正意义上的通用人工智能(AGI)持续探索。

至此,词语的数字化之旅已从简单的符号映射,走向了对丰富语义的深度刻画。

本文作者:pnightowl

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!