LLM 进化史 - 从词向量到 Transformer / The Evolution of LLMs from Word Embeddings to Transformers
📅 创建时间:2026-04-28 🏷️ 标签:#LLM历史 #词向量 #RNN #Attention #Transformer 📚 前置知识:[[06 - Prompt 工程]]
📋 本章目标
- 理解词向量(Word Embedding)的起源和原理
- 了解 RNN/LSTM 的优势和局限
- 理解 Attention 机制的诞生
- 掌握 Transformer 的革命性创新
- 了解 GPT 系列的发展历程
第1部分:词向量 - 语言的数字表示
1.1 为什么需要词向量?
问题:计算机无法直接理解文字
人类:"猫" → 联想到毛茸茸、会抓老鼠、宠物...
计算机:"猫" → 只是两个字符
如何让计算机理解"猫"?
→ 把"猫"转换成数字向量1.2 One-Hot 编码的问题
One-Hot = 用一个很长的向量表示词
假设我们有 10000 个词:
"猫" → [0, 0, 0, ..., 1, ..., 0, 0] ← 第 5000 个位置是 1
"狗" → [0, 0, 0, ..., 0, ..., 1, 0] ← 第 6000 个位置是 1
问题:
1. 向量太长(10000 维)
2. 所有向量都正交(垂直)→ 无法表示相似性
3. "猫"和"狗"看起来毫无关系(实际上它们很相似)One-Hot 的致命缺陷:
"猫" = [0, 0, 1, 0, 0]
"狗" = [0, 0, 0, 1, 0]
这两个向量是正交的(点积 = 0)
但猫和狗都是宠物、都是哺乳动物...
One-Hot 无法表达语义相似性!1.3 分布式表示 - 词向量的革命
核心思想:词的含义由上下文决定
"猫" 和 "狗" 经常出现在相似的上下文中
→ 它们应该有相似的向量
"猫" 出现在:我养了一只猫、这只猫很可爱、猫喜欢吃鱼...
"狗" 出现在:我养了一只狗、这只狗很可爱、狗喜欢吃肉...
上下文相似 → 含义相似 → 向量相似词向量的示例:
假设词向量是 3 维:
"猫" → [0.8, 0.3, 0.1] ← 高"宠物性",中"毛茸茸"
"狗" → [0.9, 0.4, 0.2] ← 相似!
"电脑" → [0.1, 0.0, 0.9] ← 低"宠物性",高"电子属性"1.4 Word2Vec - 词向量训练方法
Word2Vec (2013) = 一种高效的词向量训练方法
核心思想:用神经网络学习词向量
训练目标:预测词的上下文(或用词预测中心词)
两种模型:
1. Skip-gram:中心词 → 预测上下文
2. CBOW:上下文 → 预测中心词Skip-gram 示例:
训练数据:
"我 喜欢 可爱 的 猫"
滑动窗口(窗口大小=2):
中心词 上下文
"喜欢" → ["我", "可爱"]
"可爱" → ["喜欢", "的"]
"猫" → ["可爱", "的"]
训练目标:让模型学会给定中心词,预测上下文
训练过程中学到的权重 = 词向量词向量的神奇特性:
语义关系可以用向量运算表示:
国王 - 男人 + 女人 ≈ 女王
vec("国王") - vec("男人") + vec("女人")
≈ vec("女王")
这就是"嵌入空间"的语义结构!第2部分:RNN 与序列处理
2.1 为什么需要专门处理序列?
问题:词向量无法处理词序
句子1:"狗咬猫" → 词向量 [狗] [咬] [猫]
句子2:"猫咬狗" → 词向量 [猫] [咬] [狗]
词向量集合相同,但含义完全不同!
需要:能够处理序列顺序的模型2.2 RNN 基本原理
RNN = Recurrent Neural Network(循环神经网络)
核心思想:让网络有"记忆"
┌─────────────────────────────────────────────────────────────┐
│ RNN 工作原理 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 标准神经网络: │
│ 输入 → [层] → 输出 │
│ ↑ │
│ │ │
│ 记忆?✗ 没有 │
│ │
│ RNN: │
│ 输入 → [层] → 输出 │
│ ↑ ↓ │
│ └───┘ │
│ 有!上一时刻的输出作为下一时刻的输入 │
│ │
└─────────────────────────────────────────────────────────────┘RNN 的计算过程:
时刻1:输入"我" → 计算 → 输出h₁(记忆"我")
时刻2:输入"喜欢" → h₁参与计算 → 输出h₂(记忆"我喜欢")
时刻3:输入"猫" → h₂参与计算 → 输出h₃(记忆"我喜欢猫")
每一步都考虑了之前的信息!2.3 RNN 的数值示例
假设:
- 输入词向量维度:4
- 隐藏状态维度:3
- RNN 权重:W = [[0.5, 0.1, 0.2], [0.3, 0.4, 0.1], [0.2, 0.2, 0.3], [0.1, 0.1, 0.2]]
- 上一时刻隐藏状态:h_prev = [0.1, 0.2, 0.3]
时刻1输入词向量:x = [0.8, 0.2, 0.1, 0.3]
计算新的隐藏状态:
h_new = tanh(W · [x; h_prev]) # 拼接输入和隐藏状态
[W · [x; h_prev]]_1 = 0.5×0.8 + 0.1×0.2 + 0.2×0.1 + 0.1×0.3 = 0.47
[W · [x; h_prev]]_2 = 0.3×0.8 + 0.4×0.2 + 0.1×0.1 + 0.1×0.3 = 0.36
[W · [x; h_prev]]_3 = 0.2×0.8 + 0.2×0.2 + 0.3×0.1 + 0.2×0.3 = 0.29
h_new = tanh([0.47, 0.36, 0.29])
≈ [0.44, 0.35, 0.28]2.4 RNN 的问题:梯度消失
问题:长序列中,早期信息会"丢失"
梯度消失示例:
"今天早上 7 点,我起床,洗漱完毕,吃了早餐,然后去上班。"
预测任务:最后的位置应该输出什么?
问题:
- RNN 需要把"早上7点"的信息传递到最后
- 每次传递都可能"丢失"一点信息
- 序列太长时,早期信息几乎完全丢失
数学原因:
- 反向传播时,梯度需要逐层传回
- 每层都乘以激活函数的导数(<1)
- 链式乘法导致梯度指数级衰减2.5 LSTM - 长短期记忆网络
LSTM = Long Short-Term Memory(长短期记忆)
核心思想:引入"门控"机制,选择性地记住/忘记信息
┌─────────────────────────────────────────────────────────────┐
│ LSTM 门控机制 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 输入门:决定记住多少新信息 │
│ 遗忘门:决定忘记多少旧信息 │
│ 输出门:决定输出多少记忆信息 │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 旧记忆 ──→ [遗忘门] ──→ 保留的记忆 │ │
│ │ ↓ │ │
│ │ 新输入 ──→ [输入门] ──→ 添加的新记忆 │ │
│ │ ↓ │ │
│ │ 合并 ──→ 新的记忆 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘LSTM 的改进:
RNN:所有信息同等传递 → 梯度消失
LSTM:通过门控选择传递 → 缓解梯度消失
可以处理更长的序列(但仍然有限制)第3部分:Attention 机制的诞生
3.1 Attention 的核心思想
背景:RNN/LSTM 处理长序列仍然困难
解决思路:不再依赖一个固定大小的"记忆",而是"按需访问"任意位置的信息
┌─────────────────────────────────────────────────────────────┐
│ Attention vs RNN │
├─────────────────────────────────────────────────────────────┤
│ │
│ RNN/LSTM(顺序依赖): │
│ 词1 → 词2 → 词3 → ... → 词100 │
│ ↓ │
│ 信息必须一步步传递 │
│ 越远的信息越难获取 │
│ │
│ Attention(直接连接): │
│ 词1 ───────────────────┐ │
│ 词2 ─────────────┐ │ │
│ 词3 ───────┐ │ │ │
│ ... ↓ ↓ ↓ │
│ 词100 ────────────────┼─→ 当前词的输出 │
│ │ │
│ 每个词都可以直接"关注"其他所有词 │
│ 距离不影响信息获取 │
│ │
└─────────────────────────────────────────────────────────────┘3.2 Attention 的计算过程
核心问题:当前词应该"关注"其他哪些词?
句子:"那个穿着黑色衣服的男人拿起了手机"
问:"他"指的是谁?
回答:应该"关注""男人"
Attention 计算:
1. 对于"他"这个位置,计算它与所有其他位置的"相关性"
2. 相关性高的词,获得更高的"注意力权重"
3. 用加权求和整合所有信息Attention 计算步骤:
步骤1:计算 Query、Key、Value
对于"他"这个位置:
Q_他 = 词向量_他 · W_q → 查询向量
K_他 = 词向量_他 · W_k → 键向量
V_他 = 词向量_他 · W_v → 值向量
对于"男人"这个位置:
K_男人 = 词向量_男人 · W_k
V_男人 = 词向量_男人 · W_v步骤2:计算注意力分数
score = Q_他 · K_男人
= [0.5, 0.3, 0.2] · [0.4, 0.6, 0.1]
= 0.5×0.4 + 0.3×0.6 + 0.2×0.1
= 0.20 + 0.18 + 0.02
= 0.40 ← 较高,说明相关步骤3:Softmax 归一化
对所有位置计算分数,然后 softmax:
位置 分数 softmax后(权重)
────────────────────────────────────
"他" 0.20 0.15
"男人" 0.40 0.28 ← 最高
"那个" 0.15 0.12
"拿起" 0.10 0.11
...
总和 1.00 1.00步骤4:加权求和
新向量_他 = 0.15 × V_他 + 0.28 × V_男人 + 0.12 × V_那个 + ...
"他"的表示现在包含了"男人"的信息!3.3 Self-Attention vs Cross-Attention
| 类型 | 说明 | 应用场景 |
|---|---|---|
| Self-Attention | 输入关注自己 | Transformer 编码器 |
| Cross-Attention | 源关注目标 | 机器翻译、解码器 |
Self-Attention(自注意力):
编码器内部:词1 关注 词1, 词2, 词3...
Cross-Attention(交叉注意力):
解码器看向编码器:解码器词 关注 编码器所有词
例如:翻译时,"狗"(中文) 关注 "dog"(英文)第4部分:Transformer 的革命
4.1 论文背景
"Attention Is All You Need" (2017)
论文:Vaswani et al., "Attention Is All You Need", NeurIPS 2017
作者:Google Brain / Google Research
意义:完全抛弃 RNN/LSTM,只用 Attention 机制
核心创新:用 Self-Attention 并行处理序列4.2 Transformer 整体架构
┌─────────────────────────────────────────────────────────────┐
│ Transformer 架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 输入 │
│ ↓ │
│ ┌───────────────┐ │
│ │ Input Embed │ │
│ └───────┬───────┘ │
│ ↓ │
│ ┌───────────────┐ │
│ │ 位置编码 │ │
│ └───────┬───────┘ │
│ ↓ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 编码器堆叠 (N×) │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ Multi-Head Self-Attention │ │ │
│ │ │ ↓ │ │
│ │ │ Add & LayerNorm │ │
│ │ │ ↓ │ │
│ │ │ Feed-Forward │ │
│ │ │ ↓ │ │
│ │ │ Add & LayerNorm │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 解码器堆叠 (N×) │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ Masked Multi-Head Self-Attention │ │ │
│ │ │ ↓ │ │
│ │ │ Add & LayerNorm │ │
│ │ │ ↓ │ │
│ │ │ Multi-Head Cross-Attention │ │
│ │ │ ↓ │ │
│ │ │ Add & LayerNorm │ │
│ │ │ ↓ │ │
│ │ │ Feed-Forward │ │
│ │ │ ↓ │ │
│ │ │ Add & LayerNorm │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌───────────────┐ │
│ │ Linear │ │
│ └───────┬───────┘ │
│ ↓ │
│ ┌───────────────┐ │
│ │ Softmax │ │
│ └───────┬───────┘ │
│ ↓ │
│ 输出 │
│ │
└─────────────────────────────────────────────────────────────┘4.3 Transformer 的关键创新
创新1:并行化处理
RNN:必须顺序处理(时间步t必须等t-1完成)
词1 → 词2 → 词3 → 词4 → ...
↑__________________↓
必须串行
Transformer:所有词同时计算(Attention 可以并行)
词1 ──┬─┬─┬──→ 注意力输出
词2 ──┼─┬─┬──→ 注意力输出
词3 ──┼─┼─┬──→ 注意力输出
词4 ──┼─┼─┼──→ 注意力输出
↑_________________↑
可并行!
结果:训练速度提升数十倍!创新2:直接建立长距离依赖
RNN(需要多层传递):
词1 ────────────→ 词100
↓ ↓ ↓ ... ↓
距离100,信息严重衰减
Transformer(直接注意力):
词1 ──────────────────→ 词100
直接连接,无距离衰减!创新3:Multi-Head Attention
不是只计算一组 Q/K/V,而是计算多组:
head_1 = 关注语法结构
head_2 = 关注语义相似
head_3 = 关注位置关系
...
最终输出 = concat(head_1, head_2, ...) · W_o
类比:多角度理解句子4.4 位置编码
问题:Attention 本身不包含位置信息
Attention 计算:Q·K^T
这是一个点积,不包含位置信息
"狗咬猫" 和 "猫咬狗" 用 Attention 计算结果相同!
解决:添加位置编码(Positional Encoding)Sinusoidal 位置编码:
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
位置 0:[sin(0), cos(0), sin(0), cos(0), ...]
位置 1:[sin(1), cos(1), sin(1/10000), cos(1/10000), ...]
位置 2:[sin(2), cos(2), sin(2/10000), cos(2/10000), ...]
...
每个位置有独特的编码!第5部分:GPT 系列演进
5.1 GPT-1 (2018) - 开山之作
论文:"Improving Language Understanding by Generative Pre-Training"
发布:2018年6月
模型规模:1.17 亿参数
创新:预训练 + 微调范式5.2 GPT-2 (2019) - 规模为王
论文:"Language Models are Unsupervised Multitask Learners"
发布:2019年2月
模型规模:15 亿参数(从 1.17 亿 → 15 亿)
创新:
- 展示了"涌现能力"
- 可以在 zero-shot 情况下完成多种任务
- 引发了对大模型的关注5.3 GPT-3 (2020) - 暴力出奇迹
论文:"Language Models are Few-Shot Learners"
发布:2020年6月
模型规模:1750 亿参数
创新:
- Few-shot learning(少样本学习)
- 展示了大模型的神奇能力
- 催生了 AI 应用浪潮
关键发现:模型规模越大,能力越强,且出现"涌现"5.4 GPT-3.5 / GPT-4 (2022-2023)
GPT-3.5 (2022):
- 基于 GPT-3 的优化
- 通过 RLHF(人类反馈强化学习)提升对话能力
- ChatGPT 使用
GPT-4 (2023):
- 多模态(支持图片输入)
- 更强的推理能力
- 更长的上下文窗口(32K/128K)5.5 GPT 系列进化对比
| 版本 | 发布时间 | 参数量 | 上下文 | 关键创新 |
|---|---|---|---|---|
| GPT-1 | 2018 | 1.17 亿 | 512 | 预训练+微调 |
| GPT-2 | 2019 | 15 亿 | 1024 | Zero-shot |
| GPT-3 | 2020 | 1750 亿 | 2048 | Few-shot |
| GPT-3.5 | 2022 | ~1750 亿 | 4K-16K | RLHF对话 |
| GPT-4 | 2023 | 未公开 | 32K-128K | 多模态 |
第6部分:技术演进时间线
┌─────────────────────────────────────────────────────────────────────────────┐
│ LLM 技术演进时间线 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 2013 Word2Vec │
│ ↓ │
│ 2014 Seq2Seq + Attention │
│ ↓ │
│ 2015 Neural Machine Translation │
│ ↓ │
│ 2017 Transformer (Attention Is All You Need) │
│ ↓ │
│ 2018 GPT-1 (Pre-training + Fine-tuning) │
│ ↓ │
│ 2019 GPT-2 (Scale is all you need) │
│ ↓ │
│ 2020 GPT-3 (175B, Few-shot learning) │
│ ↓ │
│ 2022 ChatGPT (RLHF, 对话能力) │
│ ↓ │
│ 2023 GPT-4 (多模态, 长上下文) │
│ ↓ │
│ 2024 Claude 3, Gemini 1.5, Llama 3... │
│ │
└─────────────────────────────────────────────────────────────────────────────┘核心总结
总结1:词向量是基础
One-Hot → 无法表示语义
Word2Vec → 分布式表示,语义相似→向量相似
革命性突破!总结2:RNN 到 Attention 的演进
RNN → 顺序处理,有梯度消失问题
LSTM → 门控机制,缓解梯度消失
Attention → 直接连接任意位置,无距离限制
并行化,训练效率高总结3:Transformer 的核心
Self-Attention:输入关注自己
Multi-Head:多角度理解
位置编码:注入位置信息
并行化:训练效率数十倍提升总结4:GPT 进化趋势
更大规模 + 更好训练 = 更强能力
1亿 → 15亿 → 1750亿 → 更多
预训练 → Few-shot → RLHF章节测试
测试1:词向量理解
One-Hot 编码的主要问题是什么?
测试2:RNN 问题
RNN 处理长序列的主要问题是什么?
测试3:Attention 优势
相比 RNN,Attention 机制的主要优势是什么?
测试4:Transformer 创新
Transformer 的三个核心创新是什么?
测试5:GPT 演进
从 GPT-1 到 GPT-3,主要的技术进步是什么?
参考答案
测试1答案
答案:无法表示词的语义相似性
解析:
One-Hot 的问题:
1. 向量太长(词典大小)
2. 所有向量正交(点积=0)
3. 无法表示语义相似性
"猫" = [1, 0, 0, ...]
"狗" = [0, 1, 0, ...]
这两个向量完全垂直(正交)
但实际上猫和狗很相似(都是宠物、哺乳动物)
词向量解决了这个问题:
"猫" ≈ [0.8, 0.3, ...]
"狗" ≈ [0.9, 0.4, ...]
向量相似!测试2答案
答案:梯度消失问题,长距离依赖难以建立
解析:
RNN 的问题:
1. 信息必须顺序传递
词1 → 词2 → 词3 → ... → 词100
2. 每次传递可能丢失信息
3. 反向传播时梯度指数级衰减
→ 早期信息几乎完全丢失
→ 难以建立长距离依赖
LSTM 通过门控机制部分缓解了这个问题
但没有根本解决测试3答案
答案:
- 直接建立任意距离的连接
- 并行化处理,训练效率高
- 无需等待上一步完成
解析:
Attention vs RNN:
RNN:
• 顺序处理,必须等上一步
• 信息逐层传递,距离越远越难获取
• 梯度消失问题
Attention:
• 所有位置同时计算(可并行)
• 直接连接任意位置,无距离限制
• 梯度可以无衰减地传递
结果:
• Transformer 训练速度提升数十倍
• 可以处理任意长度的序列测试4答案
答案:
- Self-Attention:用 Q/K/V 直接建立序列内所有位置的关系
- Multi-Head Attention:多组 Attention 并行,学习不同类型的相关性
- 位置编码:用 Sinusoidal 编码注入位置信息
解析:
Transformer 的三个核心创新:
1. Self-Attention:
• 不再依赖顺序传递
• 每个位置可以直接关注所有其他位置
• Q(查询)、K(键)、V(值)矩阵
2. Multi-Head:
• 多组 Q/K/V 并行计算
• 每个头关注不同类型的关系
• 如:语法、语义、位置等
3. 位置编码:
• Attention 本身不包含位置信息
• Sinusoidal 编码为每个位置添加独特向量
• 可以推广到任意长度的序列测试5答案
答案:
- 模型规模:从 1.17 亿 → 1750 亿(1500倍增长)
- 训练范式:预训练+微调 → Few-shot → RLHF
- 能力涌现:随着规模增大,出现神奇的新能力
解析:
GPT 演进:
GPT-1 (2018):
• 1.17 亿参数
• 需要针对任务微调
GPT-2 (2019):
• 15 亿参数(10倍增长)
• Zero-shot 能力开始出现
GPT-3 (2020):
• 1750 亿参数(100倍增长)
• Few-shot learning
• 各种任务无需微调
ChatGPT/GPT-4:
• RLHF(人类反馈强化学习)
• 对话能力大幅提升
• 多模态(GPT-4)
关键洞察:规模是能力的关键!相关笔记
- [[08 - Transformer 原理]] - Self-Attention 详细计算
- [[01 - 神经网络基础]] - MLP 在 Transformer 中的作用
- [[03 - 解码策略]] - Transformer 解码过程
下一步学习
- [ ] 阅读 08 - Transformer 手动计算 — 用具体数字一步步算完 Attention 全过程
学习状态:✅ 已完成