理解 Transformer 的核心:“注意力”究竟是什么?
对于刚接触大模型的读者来说,Transformer 架构常被描述得高深莫测,尤其是“注意力机制”(Attention Mechanism)听起来像是一个复杂的数学黑盒。但事实上,它的核心思想非常直观:让模型在处理一个词时,学会关注句子中其他相关词的重要性。
本文将通过图解和类比,帮助你零数学基础理解 Transformer 的注意力机制。你不需要懂得矩阵乘法,只需要带着“模型如何知道哪个词更重要”这个问题来阅读。
从“翻译”场景看注意力
假设我们要将英文句子“The animal didn't cross the street because it was too tired”翻译成中文。模型需要知道“it”指的是“animal”还是“street”。人类读者一眼就能根据上下文判断,但机器如何做到?
这就是注意力机制的用武之地。当模型处理“it”这个单词时,它会计算句子中每个其他单词与之的“相关性分数”。分数越高,说明该词对理解当前词越重要。最终,模型会加权融合这些相关词的信息,从而做出正确判断——在这个例子中,“animal”会获得最高分数。
图解单头注意力(Single-Head Attention)
注意力机制的核心操作可以概括为三步:查询(Query)、键(Key)、值(Value)。为了让你更容易理解,我们用“图书管理员找书”的比喻来解释:
- 查询(Query, Q):你向管理员提出的问题,例如“帮我找一本关于机器学习的书”。
- 键(Key, K):图书馆里每本书的标签或摘要,例如“深度学习入门”、“Python 编程”、“机器学习实战”。
- 值(Value, V):书本身的内容。
注意力机制的计算过程,就是管理员拿着你的“查询”(Q),去对比所有书的“键”(K),找出最匹配的几本,然后返回这些书的“值”(V)的加权组合。权重就是匹配程度。
在 Transformer 中,对于一个句子,模型会为每个词都生成 Q、K、V 三个向量。然后计算每个词的 Q 与所有词的 K 的相似度,得到注意力权重,最后用这些权重去加权求和所有词的 V。
这个过程可以用以下伪代码表示:
# 假设当前处理的词是 it
Q: it 的查询向量
K_list: 句子中所有词的键向量列表
V_list: 句子中所有词的值向量列表
1. 计算 it 与每个词的注意力分数
scores = []
for each K in K_list:
score = dot_product(Q, K) # 计算相似度
scores.append(score)
2. 归一化分数(Softmax),使其和为 1
attention_weights = softmax(scores)
3. 加权求和所有值
output = sum(attention_weights * V_list)
这个输出向量就包含了“it”在上下文中最重要的信息。
多头注意力(Multi-Head Attention):从不同角度观察
单头注意力虽然有效,但往往不够。因为“相关性”可能有多个维度。例如,“it”不仅与“animal”的语义相关,也可能与“tired”的状态相关。为了捕捉这些不同的关系,Transformer 使用了多头注意力。
简单说,就是并行运行多组不同的 Q、K、V 变换,每组称为一个“头”(Head)。每个头可以学习关注不同类型的关系。最后,将多个头的输出拼接起来,再经过一次线性变换,得到最终结果。
下图展示了单头与多头的核心参数差异:
| 特性 | 单头注意力 (Single-Head) | 多头注意力 (Multi-Head) |
|---|---|---|
| 关注维度 | 单一关系模式 | 多种关系模式(语义、位置、语法等) |
| 参数数量 | 较少(一组 Q、K、V 矩阵) | 较多(H 组 Q、K、V 矩阵,H 为头数) |
| 表达能力 | 有限,可能忽略次要关系 | 更强,能融合不同子空间的信息 |
| 典型 Head 数 | 1 | 8 或 16(如 BERT-base 使用 12 头) |
实际应用与常见误解
在 GPT 系列、BERT 等主流大模型中,注意力机制无处不在。但需要注意:
- 不是所有注意力都一样:Transformer 编码器使用“自注意力”(Self-Attention),即 Q、K、V 都来自同一序列。解码器则使用“掩码自注意力”和“交叉注意力”。
- 计算量问题:注意力机制需要计算所有词对之间的分数,因此计算复杂度是 O(n²),n 为序列长度。这也是为什么处理长文本时模型会变慢。
小结
Transformer 的注意力机制本质上是一种动态的、上下文相关的信息筛选工具。它让模型不再机械地处理每个词,而是学会“看”上下文,找出哪些词更重要。通过多头设计,模型能从不同角度理解关系,从而大幅提升语言理解能力。理解了这个直观概念,你就已经掌握了理解大模型架构最关键的一步。如果你对更深入的技术细节感兴趣,请访问 AI Explorer 联系页面获取更多学习资源。