Transformer架构概述
Transformer是深度学习领域的里程碑架构,2017年由Vaswani等人提出。它完全基于注意力机制,摒弃了传统的RNN和CNN结构。
共 3 篇文章·阅读时间:约35分钟
01背景与动机
Transformer的提出解决了传统序列建模方法的根本问题,开启了深度学习的新时代。
序列建模的演进
在Transformer出现之前,序列建模主要依赖RNN及其变体(LSTM、GRU):
RNN的局限性
- 顺序计算:无法并行化,训练速度慢
- 梯度消失/爆炸:难以处理长序列
- 长距离依赖:虽然LSTM有所改善,但仍不理想
- 信息瓶颈:压缩到固定大小的隐状态
CNN试图解决部分问题
- 可以并行计算
- 但感受野有限,需要多层堆叠才能捕获长距离依赖
Transformer的提出
2017年,Google的论文《Attention Is All You Need》提出了Transformer, 完全基于注意力机制,无需RNN或CNN。
Transformer的核心创新
- 自注意力机制:直接建模任意位置之间的关系
- 并行计算:摆脱序列依赖,大幅提升训练效率
- 可扩展性:架构简单,易于扩展到大规模
- 迁移学习:预训练+微调范式成为可能
02编码器架构
Transformer编码器将输入序列转换为连续的表示,适合理解类任务如文本分类、命名实体识别。
编码器结构
编码器由N个相同的层堆叠而成,每层包含两个子层:
编码器层结构
- 多头自注意力层:捕捉输入序列内部的关系
- 前馈神经网络层:逐位置非线性变换
- 残差连接:每个子层都有残差连接
- 层归一化:每个子层输出都进行归一化
公式
LayerNorm(x + MultiHeadAttention(x))
LayerNorm(x + FeedForward(x))
编码器工作流程
Step 1: 输入嵌入
输入词元经过Embedding层转换为向量,加上位置编码。
Step 2: 多头自注意力
每个位置 attend 到所有位置,捕捉词与词之间的关系。
Step 3: 前馈网络
对每个位置独立应用相同的两层全连接网络。
Step 4: 堆叠
重复N次(原始论文N=6),每一层的输出作为下一层的输入。
03解码器架构
解码器用于生成序列,采用自回归方式逐个预测输出词元,是GPT等语言模型的基础。
解码器结构
解码器同样由N个相同的层堆叠而成,但每层包含三个子层:
解码器层结构
- 掩码多头自注意力:防止看到未来位置
- 交叉注意力:Query来自解码器,Key/Value来自编码器
- 前馈神经网络:与编码器相同
- 残差连接 + 层归一化
与编码器的区别
| 特性 | 编码器 | 解码器 |
|---|---|---|
| 自注意力 | 完全注意力 | 掩码注意力 |
| 交叉注意力 | 无 | 有 |
| 典型应用 | BERT、RoBERTa | GPT系列 |
| 任务类型 | 理解任务 | 生成任务 |
掩码机制(Masks)
- Padding Mask:忽略padding位置
- Sequence Mask:防止看到未来词元
解码器在训练时使用掩码,确保每个位置只能看到当前位置及之前的输出。