Transformer 与注意力机制
原始素材:
8-人工智能/8.03-transformer-attention.md
2017 年,Google 在论文《Attention Is All You Need》中提出的 Transformer 架构,彻底改变了自然语言处理的游戏规则。它抛弃了传统的循环神经网络(RNN),仅依靠注意力机制就实现了更强的性能和更高的训练效率。今天,几乎所有的大语言模型——GPT、BERT、T5、LLaMA——都建立在 Transformer 的基础之上。
| 概念 | 核心要点 |
|---|---|
| 🔴 RNN 的困境 | 顺序处理,长距离依赖衰减 |
| 🟢 Transformer 突破 | 并行计算,全局注意力 |
| 🟡 注意力机制 | 动态关注重要信息 |
| 🔵 大模型基石 | GPT、BERT 的核心架构 |
一、RNN 的困境与 Transformer 的突破
在 Transformer 出现之前,处理序列数据(如文本、语音)的主流方法是循环神经网络(RNN)及其变体 LSTM、GRU。这些模型通过循环结构,逐个处理序列中的元素,并维护一个隐藏状态来记忆历史信息。
1.1 RNN 的三大致命缺陷
顺序依赖,无法并行 :RNN 必须等待前一个时间步的计算完成,才能处理下一个词。这导致训练速度极慢,无法充分利用现代 GPU 的并行计算能力。
长距离依赖衰减 :即使是改进的 LSTM,在处理长文本时,早期信息也会逐渐被"遗忘"。比如在一篇 500 字的文章中,模型很难记住开头提到的关键信息。
梯度消失/爆炸 :在反向传播时,梯度需要沿着时间步逐层传递,容易出现梯度消失或爆炸,导致训练不稳定。
1.2 Transformer 的革命性突破
Transformer 通过自注意力机制(Self-Attention) ,让模型能够"一眼看全"整个序列,直接计算任意两个位置之间的关系,无需逐步传递信息。
| 维度 | RNN / LSTM | Transformer |
|---|---|---|
| 处理方式 | 顺序处理:词1 → 词2 → 词3 | 并行处理:所有词同时计算 |
| 长距离依赖 | ❌ 衰减 | ✅ 全局注意力 |
| 训练效率 | ❌ 无法并行训练 | ✅ 高效并行 |
Transformer 的核心优势
- 并行计算 :所有位置的注意力可以同时计算,训练速度提升数十倍
- 全局视野 :直接捕获长距离依赖,不受序列长度限制
- 可扩展性 :架构简洁统一,易于堆叠更深的网络
二、Transformer 完整架构:从整体到细节
Transformer 的完整架构由编码器(Encoder) 和解码器(Decoder) 两部分组成,分别负责理解输入和生成输出。
Encoder: 输入 → Token Embedding + Positional Encoding → [ Multi-Head Self-Attention → Add & Norm → Feed Forward → Add & Norm ] × N
Decoder: 输出(移位) → Token Embedding + Positional Encoding → [ Masked Self-Attention → Add & Norm → Cross-Attention → Add & Norm → Feed Forward → Add & Norm ] × N → Linear + Softmax → 概率分布
| 组件 | 所属 | 作用 |
|---|---|---|
| Multi-Head Self-Attention | Encoder | 捕获输入序列内部依赖 |
| Masked Self-Attention | Decoder | 只看当前位置之前的词(防止"作弊") |
| Cross-Attention | Decoder | 关注 Encoder 的输出,连接编码和解码 |
| Feed Forward Network | 共用 | 对每个位置独立进行非线性变换 |
| Add & Norm | 共用 | 残差连接 + 层归一化,保证深层训练稳定 |
| Linear + Softmax | Decoder | 将向量映射为词表概率分布 |
2.1 编码器(Encoder)
以句子"银行账户里的余额不足"为例。当模型处理"余额"这个词时,它会自动计算与其他词的相关性:
- "余额"与"账户"高度相关(0.35)
- "余额"与"银行"中度相关(0.20)
- "余额"与"的"、"里"等虚词相关性低(0.05-0.10)
这种相关性不是人工规定的,而是模型通过大量数据自动学习出来的。
自注意力示例:「他」关注「小明」(句子:「小明 把 苹果 给了 他 的 母亲」)
| 词 | 注意力权重 | 备注 |
|---|---|---|
| 小明 | 65% | 🔗 代词指代目标 |
| 把 | 5% | |
| 苹果 | 10% | |
| 给了 | 10% | |
| 他 | 5% | ← 当前位置 |
| 的 | 3% | |
| 母亲 | 2% |
「他」把 65% 注意力投向「小明」,跨越距离识别代词指代关系
2.2 注意力的计算过程
自注意力机制通过三个关键步骤实现:
- 生成 Q、K、V 向量 :每个词通过三个不同的线性变换,生成 Query(查询)、Key(键)、Value(值)三个向量
- 计算注意力权重 :用 Query 与所有 Key 做点积,得到相似度分数
- 加权求和 :用注意力权重对 Value 向量加权求和,得到最终输出
三、Query、Key、Value:注意力的三剑客
Transformer 的注意力机制借鉴了信息检索的思想,将每个词映射到三个不同的向量空间。
3.1 三个向量的角色
Query(查询) :代表"我想找什么"。当前词的查询意图,用于与其他词的 Key 匹配。
Key(键) :代表"我是什么"。每个词的特征标识,用于被 Query 检索。
Value(值) :代表"我的内容是什么"。实际要传递的信息,根据注意力权重被加权求和。
这种设计的巧妙之处在于:相似度计算(Q·K)和信息传递(V)是解耦的 。模型可以学习到"哪些词应该关注"和"关注后应该提取什么信息"是两个独立的问题。
| 向量 | 角色 | 含义 |
|---|---|---|
| Query | 我想找什么 | 当前词的查询意图,用于与其他词的 Key 匹配 |
| Key | 我是什么 | 每个词的特征标识,用于被 Query 检索 |
| Value | 我的内容 | 实际要传递的信息,根据注意力权重被加权求和 |
核心公式:Attention(Q, K, V) = softmax(QKᵀ / √dₖ) V
3.2 注意力计算公式
完整的注意力计算公式为:
Attention(Q, K, V) = softmax(QK^T / √d_k) V
其中:
QK^T:计算 Query 和 Key 的点积,得到相似度矩阵√d_k:缩放因子,防止点积值过大导致 softmax 梯度消失softmax:将相似度转换为概率分布(注意力权重)- 最后与
V相乘:用注意力权重对 Value 加权求和
四、多头注意力:从多个角度理解语义
单个注意力头只能捕获一种类型的依赖关系。为了让模型从多个角度理解句子,Transformer 引入了多头注意力(Multi-Head Attention) 。
4.1 多头的工作机制
多头注意力将输入投影到多个不同的子空间,每个"头"独立计算注意力,最后将所有头的输出拼接起来。
典型的 Transformer 使用 8 个或 16 个注意力头,每个头可能专注于不同的语言现象:
- 语法头 :识别主谓宾、定状补等语法关系
- 语义头 :捕获词义相关性(如"银行"与"账户")
- 位置头 :关注相邻词的局部依赖
- 指代头 :解析代词指向(如"他"指向"小明")
- 情感头 :识别褒贬色彩和情绪倾向
- 实体头 :识别人名、地名等命名实体
| 注意力头 | 关注内容 | 注意力头 | 关注内容 |
|---|---|---|---|
| 语法头 | 主谓宾关系 | 语义头 | 词义关联 |
| 位置头 | 距离关系 | 指代头 | 代词消解 |
| 情感头 | 情绪倾向 | 实体头 | 命名实体 |
| 修饰头 | 定状补 | 全局头 | 整体语境 |
8 个头从不同角度理解语义,最后拼接融合
4.2 多头的优势
表达能力更强 :不同的头可以捕获不同类型的依赖关系,避免单一视角的局限。
并行计算 :多个头可以同时计算,不增加计算时间。
鲁棒性更好 :即使某些头学习失败,其他头仍能提供有效信息。
多头注意力的数学表达
MultiHead(Q, K, V) = Concat(head_1, ..., head_h) W^O
其中 head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)
每个头有独立的权重矩阵 W^Q、W^K、W^V,最后通过 W^O 融合所有头的输出。
五、Transformer 完整架构:编码器与解码器
Transformer 的完整架构由编码器(Encoder) 和解码器(Decoder) 两部分组成,分别负责理解输入和生成输出。
5.1 编码器(Encoder)
编码器由多层(通常 6-12 层)相同的结构堆叠而成,每层包含两个子层:
- 多头自注意力层 :捕获输入序列内部的依赖关系
- 前馈神经网络(Feed Forward) :对每个位置独立进行非线性变换
每个子层后面都有残差连接(Residual Connection) 和层归一化(Layer Normalization) ,确保深层网络的训练稳定性。
5.2 解码器(Decoder)
解码器也由多层堆叠,但每层有三个子层:
- 掩码多头自注意力(Masked Multi-Head Attention) :只能看到当前位置之前的词,防止"作弊"
- 交叉注意力(Cross-Attention) :连接编码器和解码器,让解码器关注输入序列
- 前馈神经网络 :与编码器相同
架构详情参见上方第二章 Encoder/Decoder 组件表。
5.3 现代变体:仅编码器 vs 仅解码器
虽然原始 Transformer 包含编码器和解码器,但现代大模型通常只使用其中一种:
| 架构类型 | 代表模型 | 适用任务 |
|---|---|---|
| 仅编码器 | BERT、RoBERTa | 文本分类、命名实体识别、问答 |
| 仅解码器 | GPT、LLaMA、Claude | 文本生成、对话、代码补全 |
| 编码器-解码器 | T5、BART | 翻译、摘要、文本改写 |
GPT 为什么只用解码器?
GPT 系列模型采用自回归生成 方式,逐个预测下一个词。仅解码器架构天然适合这种生成任务,且结构更简洁,易于扩展到千亿参数规模。
六、位置编码:告诉模型词的顺序
Transformer 的自注意力机制本身是位置无关 的——它把句子看作一个词的集合,而不关心词的顺序。但词序对语义至关重要:"我爱你"和"你爱我"意思完全不同!
6.1 位置编码的必要性
为了让模型感知位置信息,Transformer 在输入嵌入中加入位置编码(Positional Encoding) 。位置编码是一个与词嵌入维度相同的向量,直接加到词嵌入上。
问题:词序很重要
我爱你≠你爱我
解决:位置编码
Token Embedding + Positional Encoding
正弦余弦(Transformer 原始)
可学习(BERT、GPT)
旋转编码 RoPE(LLaMA)
6.2 正弦余弦位置编码
原始 Transformer 使用固定的正弦余弦函数生成位置编码:
PE(pos, 2i) = sin(pos / 10000^(2i/d))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d))
这种设计的优点:
- 唯一性 :每个位置有唯一的编码
- 相对位置 :模型可以学习到相对距离关系
- 外推性 :可以处理比训练时更长的序列
6.3 现代位置编码方案
随着研究深入,出现了更多位置编码方案:
可学习位置编码 :BERT、GPT 将位置编码作为可训练参数,而非固定函数。
相对位置编码 :T5、DeBERTa 不编码绝对位置,而是编码词之间的相对距离。
旋转位置编码(RoPE) :LLaMA、GPT-NeoX 使用的方案,通过旋转 Q 和 K 向量注入位置信息,外推性能更好。
ALiBi :通过在注意力分数上加偏置项实现位置感知,无需额外参数。
七、Transformer 的影响与未来
Transformer 的出现,不仅仅是一个新架构的诞生,更是整个 AI 研究范式的转变。
7.1 统一的预训练范式
Transformer 让"预训练 + 微调"成为 NLP 的标准流程。通过在海量无标注文本上预训练,模型学会了语言的通用表示,然后只需少量标注数据就能适应各种下游任务。
7.2 跨模态的通用架构
Transformer 的成功不局限于文本。它已经被成功应用到:
- 计算机视觉 :Vision Transformer (ViT) 在图像分类上超越 CNN
- 语音识别 :Whisper 使用 Transformer 实现多语言语音转文字
- 蛋白质结构预测 :AlphaFold 2 用 Transformer 预测蛋白质 3D 结构
- 强化学习 :Decision Transformer 将 RL 问题转化为序列建模
7.3 大模型时代的基石
从 GPT-3 的 1750 亿参数,到 GPT-4 的万亿参数,Transformer 展现出惊人的可扩展性。它的并行计算特性,让我们能够训练前所未有的巨型模型,并观察到涌现能力(Emergent Abilities) ——当模型足够大时,自动"悟"出推理、代码、多语言等能力。
7.4 未来的挑战与方向
尽管 Transformer 取得了巨大成功,但仍面临挑战:
计算复杂度 :自注意力的复杂度是 O(n²),处理长文本时计算量巨大。
长文本建模 :虽然理论上可以处理任意长度,但实际受限于显存和计算资源。
可解释性 :注意力权重虽然提供了一定的可解释性,但深层网络的决策过程仍是黑盒。
当前的研究方向包括:
- 高效 Transformer :Linformer、Performer、Flash Attention 等降低复杂度
- 长上下文建模 :Sparse Attention、Sliding Window、Memory 机制
- 多模态融合 :统一处理文本、图像、音频的原生多模态架构
八、总结
Transformer 和注意力机制的提出,标志着深度学习从"手工设计特征"到"端到端学习"的彻底转变。它不仅解决了 RNN 的技术瓶颈,更重要的是提供了一个简洁、通用、可扩展的架构,成为大模型时代的基石。
理解 Transformer,就是理解现代 AI 的核心。从 BERT 的双向编码,到 GPT 的自回归生成,再到多模态大模型的统一表示,所有这些突破都建立在 Transformer 的肩膀上。
未来,随着算力的提升和算法的优化,Transformer 还将继续演化,推动 AI 向更强大、更通用的方向发展。