[人工智能-大模型-135]:词向量的演进,对词向量的对Transformer架构理解的前提与关键。
“词向量的演进”其实是自然语言处理(NLP)发展史的核心主线之一。从最简单的编号,到让机器真正“理解”词语含义,词向量经历了多次重大升级。
下面我用通俗易懂的方式 + 时间线顺序,带你一步步看 词向量是如何一步步进化的:
🕰️ 词向量的五大演进阶段
| 阶段 | 名称 | 出现时间 | 关键思想 |
|---|---|---|---|
| 1️⃣ | One-Hot 编码 | 1980s | 每个词是一个独立编号 |
| 2️⃣ | 分布式表示(Distributed Representation) | 1986 | 用密集向量表示词 |
| 3️⃣ | Word2Vec / GloVe | 2013~2014 | 词义由上下文决定,“国王 - 男人 + 女人 ≈ 王后” |
| 4️⃣ | 上下文相关词向量(ELMo, CoVe) | 2018 | 同一个词在不同句子中有不同向量 |
| 5️⃣ | 预训练语言模型中的动态向量(BERT, GPT) | 2018~至今 | 完全融入 Transformer,语境+任务联合建模 |
1️⃣ 第一代:One-Hot 编码:实现了词与词的分离,每个词有自己独立的位置,词在词空间中是稀疏的
“每个词就是一个编号”,像身份证号一样
🔍 举个例子:
词汇表:["猫", "狗", "跑", "跳"]
- “猫” → [1, 0, 0, 0]
- “狗” → [0, 1, 0, 0]
- “跑” → [0, 0, 1, 0]
✅ 优点:
- 简单直观,容易实现
❌ 缺点:
- 向量维度极高(几万维)
- 所有词之间“距离相等”——“猫”和“狗”没有更近
- 无法表达语义相似性(比如“猫”和“动物”)
🧠 就像你只记一个人的名字,但不知道他性格、职业、关系……
2️⃣ 第二代:分布式表示(Distributed Representation):词在词空间有了固定不变的相似性的邻居
Hinton 提出:用一串小数字来表示一个词的“意义”
不再是稀疏的 0 和 1,而是像:
- “猫” → [0.2, -1.3, 0.8, 2.1]
(这四个数可能代表:动物?宠物?会爬树?吃鱼?)
👉 这是所有现代词向量的基础理念!
3️⃣ 第三代:Word2Vec 与 GloVe
让词向量真正“学会语义”
🧩 Word2Vec(Google, 2013)
- 核心思想:一个词的意思,由它周围的词决定
- 模型有两种:
- Skip-Gram:已知中心词,预测邻居
- CBOW:已知邻居,预测中心词
🎯 成果惊人:
- 自动学到类比关系:
国王 - 男人 + 女人 ≈ 王后北京 - 中国 + 法国 ≈ 巴黎
🧩 GloVe(Stanford, 2014)
- 基于全局词共现统计(哪个词经常和哪个词一起出现)
- 更擅长捕捉语义和语法信息
✅ 这些词向量可以:
- 表达相似性(“开心” ≈ “快乐”)
- 支持聚类、分类等任务
❌ 但仍有局限:
- 每个词只有一个固定向量
- 比如“苹果”在“吃苹果”和“苹果手机”中是一样的向量 ❌
- 没有考虑上下文!
4️⃣ 第四代:上下文相关词向量:每个词在词向量空间中的位置是动态的
同一个词,在不同句子里有不同的表示!
🌟 ELMo(Embeddings from Language Models, 2018)
- 使用双向 LSTM 训练
- 输出的词向量会根据上下文变化!
🎯 举例:
| 句子 | “苹果”的向量含义 |
|---|---|
| 我昨天买了一部苹果手机 | 倾向于“科技品牌” |
| 妈妈切了一个红苹果 | 倾向于“水果” |
✅ 进步巨大:终于能区分一词多义的单词了!
❌ 局限:
- 基于 RNN,训练慢、难并行
- 特征提取能力不如后来的 Transformer
5️⃣ 第五代:Transformer 预训练模型中的动态词向量:词向量在向量空间中的位置是通过编码器根据上下文动态调整的,而编码器的运作规则是训练出来的,类似CNN网络的自动特征提取的能力。
BERT、GPT 等模型彻底改变了词向量的本质
🌟 BERT(2018)
- 使用 Transformer 编码器
- 每个词的向量是通过整个句子上下文动态生成的
- 支持双向理解(左右都能看到)
🎯 示例:
句子1:他在银行工作。(→ 金融机构)
句子2:我们坐在河岸的银行上。(→ 河边)
BERT (编码器)会根据上下文给“银行”生成两个完全不同的词向量 ✅
🌟 GPT 系列
- 使用 Transformer 解码器
- 自回归生成,适合写作
- 每个词的表示依赖前面的内容
📌 此时,“词向量”已经不再是预先存好的静态表格,而是:
在推理过程中实时计算出来的、高度语境化的表示。
🔁 总结:词向量的进化之路
| 世代 | 技术 | 是否上下文相关 | 能否表达语义 | 典型模型 |
|---|---|---|---|---|
| 1️⃣ | One-Hot | ❌ 否 | ❌ 否 | —— |
| 2️⃣ | 分布式表示 | ❌ 否 | ⭕ 初步 | NNLM |
| 3️⃣ | 静态词嵌入 | ❌ 否 | ✅ 是 | Word2Vec, GloVe |
| 4️⃣ | 上下文向量 | ✅ 是 | ✅ 强 | ELMo, CoVe |
| 5️⃣ | 动态语境向量 | ✅ 完全动态 | ✅ 极强 | BERT, GPT, LLaMA |
🚀 现代观点:词向量 ≠ 固定向量!
今天的大模型中:
根本没有“预存的词向量表”了!
取而代之的是:
- Tokenization:把文本切分成 token(词或子词)
- Embedding Layer:将 token 映射为初始向量(可学习)
- Transformer 层层加工:每一层都会更新这些向量
- 最终输出的是:融合了语法、语义、任务目标的深层表示
也就是说:
词向量不再是一个模型的“起点”或模型的输入,而是整个模型内部共同作用的结果。
📚 学习建议
如果你想深入研究词向量演进,推荐按这个顺序学习:
- Word2Vec → 理解“分布假设”
- GloVe → 看全局统计如何帮助语义
- ELMo → 理解上下文的重要性
- BERT / GPT → 掌握现代动态表示
