阅读主线: Embedding 解决“怎样表示”,Attention 解决“从哪里获取信息”,Value 的加权和完成“信息聚合”。本文以
Tom loves his dog为例,把这些概念串成一条完整的计算链。
分段阅读: 词向量基础(1–6) · RNN 与 CNN(7–9) · Attention 与 QKV(10–19) · 维度与多头(20–24) · 完整示例(25–27) · Transformer 与常见误区(28–37)。
摘要
自然语言处理模型的核心问题之一,是如何把离散的语言符号转换为可计算的连续表示,并进一步建模词语之间的上下文依赖关系。传统 One-Hot 表示存在维度高、稀疏且无法表达语义相似性的缺陷,因此产生了 Word2Vec、GloVe 等低维稠密词向量方法。随后,RNN 通过递归状态建模序列,CNN 通过局部卷积提取模式,而 Transformer 则利用 Self-Attention 建立任意位置之间的直接信息交互。
Transformer 中最关键的计算之一是缩放点积注意力:
其中, 和 决定“从哪些位置获取多少信息”, 决定“实际获取什么信息”。Multi-Head Attention 进一步通过多个不同的投影空间同时学习不同类型的关系。本文从文本向量化出发,依次讨论维度问题、RNN、CNN、Attention、Self-Attention、Q/K/V、多头注意力以及 Transformer 的整体结构,并使用句子 “Tom loves his dog” 对注意力计算进行完整解释。
1. 从自然语言到向量
神经网络不能直接处理“Tom”“dog”等离散语言符号。因此,自然语言处理首先需要完成
例如:
Tom loves his dog
经过 tokenizer 后可能得到
Tom
loves
his
dog
若恰好每个单词都对应一个 token,则序列长度为
但必须注意:
序列长度 表示 token 数量,而不是严格意义上的单词数量。
现代模型通常采用 BPE、WordPiece、SentencePiece 等子词分词方法,因此一个单词可能被拆成多个 token。
例如,一个句子虽然包含 10 个英文单词,但经过 tokenizer 后可能得到 12 个 token,此时应有
而不是 。
2. One-Hot 表示与维度问题
假设词表大小为
最简单的方法是使用 One-Hot 向量表示每一个 token:
例如:
Tom → [0,0,1,0,...,0]
dog → [0,0,0,0,...,1]
这种表示存在三个明显问题。
第一,维度极高。例如词表大小为 ,每个词就是一个 维向量。
第二,向量极度稀疏。每个向量只有一个元素为 。
第三,One-Hot 本身没有语义结构。不同单词的 One-Hot 向量彼此正交,因此
同时
因此 One-Hot 无法体现
这种语义关系。
3. 从高维稀疏表示到低维稠密表示
解决方案是引入 Embedding。
设词表大小为 ,Embedding 维数为 ,建立可学习矩阵
如果 token 的 One-Hot 表示为
其 Embedding 为
因为 只有一个位置为 ,所以式 (4) 本质上就是取矩阵 的第 行。
因此实际程序通常不会真的构造巨大的 One-Hot 向量,而直接执行
token ID → embedding lookup
例如:
这里并不是把一个具体的 维稀疏数组每次进行复杂降维,而是通过一个
的 Embedding 参数矩阵,为每个 token 保存一个 512 维向量。
4. 维度灾难到底是什么
“维度灾难”不能简单理解为“维度越高计算量越大”。
更深层的问题在于:随着维度 增加,空间体积增长极快,而有限数据在高维空间中会变得极其稀疏。
例如考虑 维单位超立方体
其中边长为 的内部超立方体占总体积的比例为
因此靠近边界区域的比例为
当
时,
也就是说,高维空间的几何性质与低维空间直觉存在很大差异。
此外,高维空间中还可能发生“距离集中”现象,即大量随机点之间的距离逐渐趋于相似,使基于欧氏距离的最近邻、聚类等方法变得困难。
因此,处理高维稀疏文本通常需要:
- PCA;
- SVD / LSA;
- Matrix Factorization;
- Word2Vec;
- GloVe;
- Neural Embedding。
但必须区分:
Embedding 并不只是传统意义上的数学降维,它是一个通过任务目标学习得到的表示空间。
Word2Vec 通过上下文预测学习词向量,而 GloVe 利用全局词共现统计学习连续表示。
5. 初始词向量究竟是怎样得到的
这是理解 Transformer 时非常重要的问题。
很多情况下,Embedding 并不是人工设计出来的。
训练开始时,可以随机初始化
其中 可以是某种合适的随机初始化分布。
随后通过语言模型的训练目标不断调整。
以自回归语言模型为例,其训练目标通常可以写为
误差经过反向传播传递到 Embedding 矩阵:
其中 为学习率。
大量语料训练之后,经常出现在相似上下文中的 token 会形成具有一定语义结构的向量。
原始 Transformer 本身也使用可学习的 Embedding,并将 token 映射到 维表示。
因此更准确的理解是:
随机参数
↓
大量文本
↓
预测任务
↓
计算 Loss
↓
反向传播
↓
逐渐形成有意义的表示空间
6. 静态词向量与上下文表示必须区分
Word2Vec 和传统 GloVe 通常属于静态 Embedding。
例如:
bank
无论出现在
river bank
还是
bank account
初始词表中的 bank 通常对应同一个词向量。
Transformer 则进一步产生 Contextual Representation,即上下文相关表示。
经过 Self-Attention 后:
BERT 的核心特征之一正是利用双向 Transformer 根据左右上下文产生上下文化表示。
因此需要区分:
Embedding 是 Transformer 的输入表示,而经过多层 Self-Attention 后得到的 Hidden State 已包含上下文信息。
7. RNN:通过递归状态处理序列
RNN 的基本思想是:
当前状态依赖当前输入和前一时刻状态。
其典型形式为
其中:
- :第 个 token;
- :历史状态;
- :当前状态。
对于
Tom loves his dog
计算顺序类似:
Tom
↓
h₁
↓
loves
↓
h₂
↓
his
↓
h₃
↓
dog
↓
h₄
因此:
8. RNN 的本质问题
8.1 无法充分并行
由于
计算 之前必须先得到 。
因此同一个序列内部存在严格的时间依赖。
原始 Transformer 论文明确指出,RNN 的这种递归结构限制了训练时在序列维度上的并行化。
8.2 长距离依赖路径较长
如果第 个词的信息要影响第 个词,需要经过
信息需要通过大量连续状态传播。
因此传统 RNN 容易出现梯度消失或梯度爆炸。
LSTM 和 GRU 通过门控机制显著缓解这一问题,但没有消除递归计算本身的顺序依赖。
9. CNN 如何处理文本
CNN 不需要像 RNN 一样按时间逐步递归。
假设卷积窗口大小为 ,局部特征可以表示为
例如 时:
Tom loves his
loves his dog
可以同时计算,因此 CNN 具有较好的并行能力。
CNN 的优势是局部模式归纳偏置较强,例如特别适合发现类似 n-gram 的局部模式。
但普通卷积只能直接观察有限窗口。
如果两个 token 相距很远,需要堆叠多层卷积或者使用空洞卷积才能建立联系。
因此可以概括为:
RNN:逐步传递
CNN:局部窗口逐层扩展
Self-Attention:直接建立任意位置之间的联系
10. Attention 的基本思想
Attention 的核心并不是“平均处理所有信息”,而是:
根据当前需求,为不同信息分配不同权重。
假设当前有一个 Query
以及若干 Key-Value 对:
首先计算 Query 与每个 Key 的匹配程度:
经过 Softmax:
最后计算 Value 的加权和:
因此 Attention 实际上包含两个过程:
以及
11. 为什么需要 Q、K、V 三种向量
可以采用“检索系统”进行理解。
假设数据库中有:
Key → Value
而用户提交:
Query
系统首先进行:
匹配,确定哪些记录最相关。
然后取得对应的
因此可以直观理解为:
| 对象 | 作用 |
|---|---|
| Query | “我正在寻找什么信息?” |
| Key | “我可以被怎样匹配?” |
| Value | “如果选中我,我实际提供什么信息?” |
但这只是理解上的类比。
Q、K、V 本质上是神经网络学习出来的三个不同表示空间,而不是人工赋予固定语言学含义的向量。
12. Q、K、V 究竟是如何产生的
假设输入矩阵为
定义三个可学习参数矩阵:
于是
所以:
Q、K、V 不是预先固定好的三个词向量。
真正固定下来的是训练完成后的参数
而每次输入不同的 ,得到的
都会不同。
更准确地说:
- 训练阶段: 不断更新;
- 推理阶段:模型参数通常固定;
- 但 Q/K/V 激活值仍随输入和上下文变化。
因此,“QKV 是固定的吗?”的准确答案是:
参数矩阵训练完成后固定,但 Q/K/V 本身不是固定的。
13. 为什么 Query 乘 Key 能表示相关性
向量约定: 本节及后续 Self-Attention 示例中,单个 token 的表示采用行向量,与矩阵 按行存放 token 的约定一致。
这是理解 Attention 最关键的问题之一。
对于第 个 token 和第 个 token:
它们的点积为
进一步展开:
因此 QK 点积实际上构造了一个由参数
定义的、可学习的双线性匹配函数。
这意味着:
不是因为“点积天然理解语言关系”,而是训练过程不断调整 和 ,最终使任务所需要的 token 对在相应表示空间中得到较大的匹配分数。
这一区别非常重要。
14. 为什么 Value 负责“信息融合”
计算得到注意力权重
以后,第 个 token 的输出为
因此:
决定
即:
第 个 token 应该从第 个 token 获取多少信息。
而
决定:
第 个 token 实际向第 个 token 提供什么表示。
因此可以精炼为:
15. Self-Attention 与普通 Attention 的区别
一般 Attention 可以具有不同来源。
例如 Encoder-Decoder Attention 中:
来自 Decoder,而
来自 Encoder。
Self-Attention 则满足:
三者全部由同一个输入序列 产生。
原始 Transformer 将 Self-Attention 定义为同一序列中不同位置之间建立注意力关系的机制。
因此 Self-Attention 可以表示为:
16. Self-Attention 是否就是计算所有单词两两之间的关系
从矩阵计算角度而言,基本可以这样理解,但需要进一步限定。
假设序列长度为 。
则
于是
因此确实产生了一个
的两两匹配矩阵。
例如
Tom loves his dog
若四个单词恰好分别对应四个 token,则
注意力矩阵为
其中
表示:
当第三个 token
his更新自己的表示时,从第一个 tokenTom获取信息的权重。
但是不能进一步简单断言:
Attention Weight 是模型内部学习得到的信息路由系数,而不是经过人工标注的语法、语义或者因果关系。
因此:
17. Attention 是有方向的
通常
例如:
表示:
his在更新表示时从Tom获取多少信息。
而
表示:
Tom在更新表示时从his获取多少信息。
这两个问题并不相同。
因此 Attention Matrix 一般不是对称矩阵。
18. Scaled Dot-Product Attention
Transformer 使用
其计算流程为:
Q × Kᵀ
↓
除以 √dₖ
↓
Softmax
↓
Attention Matrix
↓
乘 V
↓
Output
这正是原始 Transformer 定义的 Scaled Dot-Product Attention。
19. 为什么要除以维度的平方根
假设
相互独立,均值为 ,方差为 。
则点积
其方差大约随 增长:
因此标准差大约为
当 较大时,未经缩放的点积可能绝对值过大,导致 Softmax 极端饱和。
所以使用
使其数量级更加稳定。
原始 Transformer 论文也正是基于这一原因引入该缩放因子。
20. 512 到底是什么
这是最容易产生混淆的地方之一。
原始 Transformer Base 设置
这里的 是:
每个 token 在模型中的隐藏表示维度。
不是:
- 句子长度;
- 单词数量;
- 最大 token 数;
- Attention Matrix 的大小。
原始论文明确规定其 Encoder、Decoder 子层以及 Embedding 输出维度均为
例如:
Tom loves his dog
假设
则输入矩阵维度为
如果序列有 10 个 token:
所以:
而
二者完全不同。
21. 为什么原始 Transformer 选择 512
不是数学定理推导出来的唯一值,而是模型设计中的超参数。
模型设计者需要在以下因素之间权衡:
原始 Transformer Base 选择
而其较大的 Transformer Big 使用
现代 Transformer 可以采用各种不同隐藏维度。
因此不能把 理解为 Transformer 的固有常数。
22. Multi-Head Attention 是什么
单个 Attention Head 只有一个 Q/K/V 投影空间。
Multi-Head Attention 则设置
组不同的参数:
以 Self-Attention 为例,各头直接从同一输入 投影;第 个 Head 为
最终:
原始 Transformer 正是采用这一结构。
因此:
“多头注意力就是存在多组 Q/K/V”基本正确。
更严格地说,是存在多组独立的 Q/K/V 投影参数,从而把同一输入投影到多个不同表示子空间。
23. 多头注意力为什么有意义
假设一句话中同时存在:
- 指代关系;
- 主谓关系;
- 动宾关系;
- 局部搭配;
- 长距离依赖;
- 语义主题关系。
如果只有一个 Attention Head,所有关系都必须压缩到同一个权重体系中。
多个 Head 则允许:
原始论文将其解释为允许模型同时关注不同位置、不同表示子空间中的信息。
不过,不能认为:
Head 1 一定负责语法
Head 2 一定负责指代
Head 3 一定负责情感
这些功能不是人工指定的,而是训练过程中涌现的。
24. Multi-Head 到底怎样 Concat
原始 Transformer Base 使用
并设置
每个 Head 使用
因此:
沿最后一个特征维度拼接:
因为
然后再经过输出矩阵:
得到:
因此 Concat 并不是:
把句子连接起来
而是:
对同一个 token 在不同 Attention Head 中获得的特征向量沿特征维度进行拼接。
25. 使用 “Tom loves his dog” 完整理解 Self-Attention
示例范围: 这里演示不加因果遮罩的 Self-Attention(例如 Encoder)。Decoder 的因果 Self-Attention 中,
his不能关注后面的dog;计算权重前需要屏蔽未来位置。参见 Transformer 原论文第 3.1 节。
考虑:
Tom loves his dog
编号为
假设每个单词恰好对应一个 token,因此
现在重点考察
his
即第 3 个 token。
25.1 Query
首先:
可以把它理解为:
当前
his在这一 Attention Head 中“需要寻找什么信息”。
25.2 与所有 Key 比较
序列中的每个位置都有 Key:
因此需要计算:
假设某个训练好的 Head 得到一个纯示意性的分数:
这里数值只用于说明计算流程,并不是某个真实 Transformer 的测量结果。
25.3 Softmax
对式 (27) 做 Softmax:
约得到
因此在这个假设的 Head 中:
最大。
这可以表现出模型让 his 大量获取 Tom 的信息,从而有可能帮助构造
his → Tom
这样的指代表示。
26. 但 “his” 不应该只关注 Tom
这正是 Multi-Head Attention 的价值。
从语言学角度看:
Tom loves his dog
中的 his 至少存在两种重要关系。
第一是指代关系:
his → Tom
第二是句法关系:
his → dog
因为 his 是 dog 的限定成分。
因此完全可能出现:
Head 1:
his → Tom
而另一个 Head:
Head 2:
his → dog
另一个 Head 可能关注:
his ↔ loves
最终多个关系共同形成 his 的上下文化表示。
所以不能把 Self-Attention 简化为:
“找到 his 指的是 Tom 就结束了。”
它实际上是在多个表示子空间内进行多种信息交互。
27. Value 如何完成信息融合
假设一个简化的二维 Value 表示为
使用式 (28) 对应的权重(计算保留完整精度,展示值经过四舍五入,因此展示值之和可能略偏离 1):
于是近似得到
因此 his 的新表示不再只是原来的 his 向量,而是融合了
Tom
loves
his
dog
的信息,只不过不同 token 的贡献大小不同。
这正是
的本质。
28. Transformer 为什么还需要位置编码
Self-Attention 本身主要根据内容计算 token 之间的关系。
如果完全不加入位置信息,标准 Self-Attention 对输入顺序缺少内生的序列位置结构。
因此 Transformer 需要位置表示。
原始 Transformer 使用正弦和余弦位置编码:
以及
最终输入为
现代 Transformer 也广泛采用其他位置机制,例如 Learned Position Embedding、Relative Position Encoding 或 RoPE 等。
29. 一个 Transformer Block 不只有 Attention
把 Transformer 简单理解为“QKV 网络”并不完整。
标准 Transformer Block 至少包含:
Input
↓
Multi-Head Self-Attention
↓
Residual Connection
↓
Layer Normalization
↓
Feed-Forward Network
↓
Residual Connection
↓
Layer Normalization
原始 Transformer 中 FFN 定义为
以上流程对应原始 Transformer 的 Post-LN 子层排列;Decoder 还包含遮罩,Encoder–Decoder 模型的 Decoder 另有交叉注意力。其功能可以粗略理解为:
- Attention:进行 token 之间的信息交互;
- FFN:对每个 token 的特征进行非线性变换。
因此:
更准确地说:
Q/K/V 是标准 Transformer Attention 机制的核心参数化形式,而 Transformer 整体还包括位置表示、FFN、残差连接、归一化等结构。
30. RNN 与 Transformer 的根本区别
二者最根本的区别不是简单的“旧模型与新模型”,而是信息传播机制不同。
RNN
信息传播方式:
如果第 个 token 要影响第 个 token,需要经过长度约为
的传播路径。
Transformer
在一个完整 Self-Attention 层中:
可以直接发生信息交互。
因此任意两个位置之间的交互路径明显缩短。
Transformer 原论文正是将这种全局依赖建模能力作为替代循环和卷积结构的重要动机之一。
31. RNN、CNN 与 Transformer 的系统比较
| 特征 | RNN | CNN | Transformer |
|---|---|---|---|
| 基本机制 | 递归状态 | 局部卷积 | Self-Attention |
| 序列内部训练并行性 | 较弱 | 强 | 强 |
| 位置信息 | 递归顺序天然体现 | 局部结构体现 | 通常需要显式位置机制 |
| 局部模式 | 较好 | 很强 | 可学习 |
| 长距离关系 | 传播路径长 | 需多层扩大感受野 | 单层即可建立直接交互 |
| 典型信息路径 | 顺序传播 | 局部逐层传播 | 全局内容寻址 |
| 长序列主要问题 | 顺序计算、长期依赖 | 深层传播 | Attention 的二次复杂度 |
| 典型优势 | 强序列归纳偏置 | 局部结构、效率 | 全局关系与并行训练 |
需要特别强调:
Transformer “并行”主要指训练时同一层内多个 token 的表示可以同时计算。
对于自回归语言模型生成:
token₁ → token₂ → token₃ → ...
未来 token 仍然依赖之前已经生成的 token,因此推理阶段的文本生成仍具有顺序性。
所以不能说:
“Transformer 在任何情况下都完全没有顺序计算。”
32. Transformer 的计算代价
Self-Attention 需要构造
因此注意力矩阵本身的计算和存储通常随序列长度呈二次增长:
更完整地考虑特征维数 ,Attention 的关键矩阵运算约为
此外 Q/K/V Projection 和 FFN 还存在
级别的计算。
因此 Transformer 的主要优势是:
而主要问题之一是:
这也是现代长上下文 Transformer 不断研究高效注意力机制的重要原因。
33. “Attention 的核心是不是直接寻找两个词之间的关系?”
可以作为入门直觉,但需要修正为更准确的表述:
Self-Attention 的核心是在当前表示空间中计算不同 token 位置之间的匹配程度,并根据这些匹配程度进行信息路由和加权聚合。
因此它不只是:
找到关系
而是完整的:
即:
34. Q/K/V 最精确的理解
经过前面的推导,可以将三者概括为:
Query
表示:
当前位置采用什么标准向其他位置检索信息。
Key
表示:
每个位置以什么特征参与匹配。
Value
表示:
每个位置真正能够向其他位置传递什么信息。
因此:
这是理解标准 Attention 最简洁而又相对准确的框架。
35. 对几个常见认识的校正
认识一:“一句话有 10 个单词,所以 n = 10”
不严格。
应该是:
如果 tokenizer 恰好产生 10 个 token,才有
认识二:“512 表示最多输入 512 个词”
错误。
在原始 Transformer 中:
表示每个 token 的隐藏维度。
序列长度是另一个独立变量 。
认识三:“Q、K、V 是固定的”
错误。
应该区分:
和
前者是模型参数,训练完成后推理时通常固定;后者是由当前输入动态计算产生的激活值。
认识四:“Q 和 K 点积天然表示语义关系”
不准确。
点积只是一个数学匹配函数。
真正使它具有语言意义的是训练出来的
认识五:“Value 决定 Attention Weight”
错误。
标准 Scaled Dot-Product Attention 中,权重由
决定。
Value 用于随后进行信息聚合:
认识六:“Multi-Head 就是多组 Q/K/V”
基本正确。
更严格地说:
Multi-Head Attention 为不同 Head 使用不同的可学习 Q/K/V 投影,使它们能够在不同表示子空间中计算 Attention。
认识七:“Attention Weight 就是真实的词语关系”
不成立。
Attention Weight 是模型内部的计算变量。
它可能与某些语言学关系相关,但不能自动被解释为真实的:
- 指代关系;
- 因果关系;
- 句法关系;
- 语义重要性。
认识八:“Transformer 完全没有顺序计算”
错误。
训练过程中,大量 token 可以并行处理。
但 Decoder-only 自回归模型在实际生成时仍然满足
因此生成过程仍然逐 token 进行。
36. 从 One-Hot 到 Transformer 的完整逻辑链
整个过程可以统一写成:
原始文本
↓
Tokenizer
↓
Token IDs
↓
Embedding
↓
低维稠密向量
↓
加入位置信息
↓
Q / K / V Projection
↓
QKᵀ / √dₖ
↓
Softmax
↓
Attention Matrix
↓
Attention × V
↓
多个 Head
↓
Concat
↓
Output Projection
↓
Residual + Normalization
↓
Feed-Forward Network
↓
多层 Transformer
↓
上下文化表示
从信息论角度,也可以概括成三步:
其中:
37. 最终理解:Transformer 到底解决了什么问题
RNN 的主要思想是:
把过去的信息压入不断更新的隐藏状态中。
CNN 的主要思想是:
利用局部窗口提取模式,再通过多层网络逐步扩大感受野。
Transformer 则采用另一种方式:
当前 token 可以根据内容,直接从序列中其他相关位置检索并聚合信息。
因此可以把 Self-Attention 理解为一种
即“学习得到的基于内容的信息寻址与路由机制”。
这比单纯说“Attention 就是计算两个词的相关性”更准确。
最终,Transformer 的关键并不是简单地取消 RNN,而是重新设计了序列信息传播机制:
RNN:信息沿时间链传播
转变为
这也是 Transformer 能够有效建模复杂上下文关系、支持大规模并行训练,并最终成为现代大语言模型主要基础架构的重要原因。
参考文献
- Vaswani, A., Shazeer, N., Parmar, N., et al. (2017). Attention Is All You Need. Advances in Neural Information Processing Systems.
- Mikolov, T., Chen, K., Corrado, G., & Dean, J. (2013). Efficient Estimation of Word Representations in Vector Space.
- Mikolov, T., Sutskever, I., Chen, K., Corrado, G., & Dean, J. (2013). Distributed Representations of Words and Phrases and their Compositionality.
- Pennington, J., Socher, R., & Manning, C. D. (2014). GloVe: Global Vectors for Word Representation. EMNLP.
- Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.
