为什么需要 Transformer
在 Transformer 出现之前,循环神经网络(RNN)是处理序列数据的主流方法。但 RNN 存在两个根本性问题:
- 梯度消失/爆炸:长序列信息难以传递
- 顺序计算:无法并行处理,训练效率低
2017 年,Google 在论文《Attention Is All You Need》中提出了 Transformer,完全摒弃了循环结构,僅使用注意力机制,实现了并行训练和更好的长距离依赖建模。
Transformer 核心组件
1. 自注意力机制 (Self-Attention)
注意力机制让模型能够”关注”输入序列中的相关部分。
输入: "The cat sat on the mat"
当处理 "sat" 时,模型会更多地关注 "cat"(主语)和 "mat"(位置)
计算过程:
- Q (Query): 我当前要找什么
- K (Key): 我有什么可以被找到
- V (Value): 找到后传递什么信息
Attention(Q, K, V) = softmax(QK^T / √d_k) × V
d_k是向量维度,除以 √d_k 是为了防止点积过大导致梯度消失
2. 多头注意力 (Multi-Head Attention)
不是只做一次注意力,而是并行做多次,每次学习不同的注意力模式:
- 有的头关注语法结构
- 有的头关注语义关系
- 有的头关注位置信息
# 简化示意
multi_head = Concat(head_1, head_2, ..., head_8) × W_O
3. 位置编码 (Positional Encoding)
由于 Transformer 没有循环结构,需要显式添加位置信息:
# 位置编码公式
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
这样可以让模型区分不同位置的 token。
4. 前馈网络 (Feed Forward Network)
每个注意力层后面跟着一个前馈网络:
FFN(x) = ReLU(x × W_1 + b_1) × W_2 + b_2
通常是两层线性变换,中间有 ReLU 激活。
Transformer 架构
编码器 (Encoder)
输入 → 嵌入 → 位置编码 → N × (多头注意力 + 残差 LayerNorm → FFN + 残差 LayerNorm) → 输出
- 编码器处理输入序列,生成表示
- 每个位置都能看到完整输入
解码器 (Decoder)
输出 → 嵌入 → 位置编码 → N × (掩码多头注意力 + 编码器-解码器注意力 + 残差 LayerNorm → FFN + 残差 LayerNorm) → 输出
- 解码器是自回归的:每次预测下一个 token
- 掩码多头注意力:防止看到未来信息
编码器 vs 解码器
| 特性 | 编码器 | 解码器 |
|---|---|---|
| 注意力 | 双向(能看到完整输入) | 单向(只能看已生成的) |
| 用途 | 理解、分类、提取特征 | 生成、翻译、续写 |
| 代表模型 | BERT | GPT |
经典 Transformer 变体
BERT (Bidirectional Encoder Representations)
- 只使用编码器
- 预训练:MLM(掩码语言模型)+ NSP(下一句预测)
- 用途:文本分类、命名实体识别、问答
GPT (Generative Pre-trained Transformer)
- 只使用解码器
- 预训练:语言建模(预测下一个词)
- 用途:文本生成、对话
T5 (Text-to-Text Transfer Transformer)
- 编码器+解码器
- 统一框架:所有任务都转化为文本到文本
Transformer 的优势
- 并行计算:不依赖顺序处理,训练速度快
- 长距离依赖:注意力机制可以直接建模任意距离的关系
- 可扩展性:增加层数和维度能持续提升性能
- 通用性:NLP 之外,也应用到 CV、语音等领域
后续发展
- Transformer-XL: 解决长文本问题
- Reformer: 降低注意力计算复杂度
- Longformer: 处理超长序列
- Vision Transformer (ViT): 将 Transformer 应用于图像
- LLM: GPT、BERT 等大语言模型的基础架构
理解 Transformer 是学习现代 AI 的基础,它的注意力机制思路也影响了后续众多模型。
相关文章
评论
加载中...
评论
加载中...