目的
为避免一学就会、一用就废,这里做下笔记
说明
一、是什么
1. Transformer的定义
Transformer是一种完全基于注意力机制的序列处理架构,于2017年由Google在论文《Attention Is All You Need》中首次提出。它彻底摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),仅使用自注意力机制和前馈神经网络来处理序列数据。
2. 整体架构全景
下图展示了Transformer的完整架构,这是论文中的原始图示:
为方便理解,这里先从简化后的架构图讲解: 
架构核心组件分解:
3. 编码器堆栈(Encoder Stack)

- 分词Tokenize:将“我爱中国的山川湖海”拆分成[“我”,“爱”,“中国”,“的”,“山”,“川”,“湖”,“海”]
- 编码Encoding:将分词后的每个词,对照词表(类似机器能理解的新华字典),一个个翻译成机器能处理的数字编码,如1代表中文的“我”,71代表中文的“爱”,编码后形成[1,71,102,99,210,211,212,213]这样的序列
- 嵌入Embedding:嵌入是为了将数据向量化。向量化本质是通过嵌入模型,用高维向量(如1024维)充分表征每个词的语义(如“我”的多重含义、“我”的词性是名词、“我”一般用作主语或宾语等),且语义相似的两个向量余弦距离也更近。编码后的序列经向量化后是一个二维矩阵(矩阵1024列,代表嵌入模型的维度;矩阵8行,代表token的个数)
- 这里使用多个Encoder,确保对语句含义的理解足够充分。如第一层Encoder理解了语言结构,第二层Encoder在第一层基础上理解了这句话的基本含义,第三层Encoder在第二层基础上理解了这句话中的爱国情感。
- Encoder对输入内容的理解,仍然使用矩阵(或张量)存储。最后一层Encoder的输出矩阵Z包含了对输入语句最丰富的理解
- 最后一层Encoder将输出矩阵Z经转换后(转换为注意力机制中的K和V),共享给多个解码器,供后续解码使用(转换的操作就是图中间的三根连线,实际只转换1次,供后续的3个解码器共享,而不是转换3次)
4. 解码器堆栈(Decoder Stack)

- 我前面已经输出了[BOS,“I”],后面需要一个动词、形容词,结合编码器对原始输入的理解(K、V),这个动词跟“爱”相关,英文中跟“爱”相同语义的动词中,这里选择一个最常用的love
- 第一层生成句法结构
- 第二层在第一层基础上进行语义内容填充
- 第三层在第二层基础上进行纠错和风格调整。
- 注意:每一层的职能并非人为设定的,而是在训练阶段训练出来的,但从层次上,符合深度神经网络中层级越高、理解越完整深入的规律。
二、为什么:Transformer的革命性意义
1. 解决RNN的核心痛点
并行化困境的突破
传统RNN的顺序计算特性导致严重效率问题:
- 训练时:必须按时间步顺序计算,无法充分利用GPU并行能力
- 长序列处理:1000个token需要1000步顺序计算
- 内存限制:需要存储所有时间步的中间状态
Transformer的全连接注意力实现完全并行:
- 一次性处理:所有位置同时计算注意力
- 矩阵运算:将序列处理转化为矩阵乘法
- GPU友好:充分发挥现代硬件的并行计算能力
长距离依赖的彻底解决
RNN在处理长序列时面临信息衰减问题:
- 梯度消失/爆炸:信息在多层传递中逐渐丢失或放大
- 信息瓶颈:隐藏状态成为信息压缩的瓶颈
- 早期信息丢失:1000词文本中,第10个词的信息很难传递到最后
Transformer的全局注意力机制:
- 任意位置直连:序列中任意两个位置可以直接交互
- 信息无衰减:注意力权重直接建立远距离连接
- 上下文完整:每个位置都能看到整个序列的完整信息
2. 注意力机制的优势可视化
下图展示了注意力机制的工作原理,这是理解Transformer的关键:

注意力机制的三大优势:
全局上下文感知
传统模型:词A → 词B → 词C → 词D(顺序传递)
Transformer:词A ←→ 词B ←→ 词C ←→ 词D(全连接)
动态权重分配
- 相关词获得高权重:在"苹果公司"中,"苹果"和"公司"相互高关注
- 无关词获得低权重:在长文档中,无关段落获得极小注意力
- 多对多关系:一个词可以同时关注多个相关词
可解释性
- 注意力权重可视化显示模型"关注"的位置
- 帮助理解模型决策过程
- 便于调试和优化
3. 计算效率的质的飞跃
训练时间对比(相同硬件条件下):
处理10,000个序列(长度512):
RNN/LSTM:≈ 50小时(顺序计算瓶颈)
Transformer:≈ 5小时(完全并行,快10倍)
主要原因:
1. 矩阵乘法代替循环
2. 批量处理优化
3. GPU利用率接近100%
三、怎么办
训练与推理过程
训练阶段(以翻译为例):
推理阶段(自回归生成):
步骤1:输入"I love machine learning"到编码器
步骤2:解码器输入起始符<START>
步骤3:解码器输出第一个词的概率分布 → 选择"我"
步骤4:解码器输入"<START> 我" → 输出第二个词 → 选择"爱"
步骤5:重复直到生成结束符<END>
四、Transformer的变体与发展
1. 仅编码器架构(BERT系列)
特点:
- 双向上下文:同时看到左右两侧的上下文
- 预训练任务:掩码语言建模(MLM)+ 下一句预测(NSP)
- 应用场景:文本分类、命名实体识别、问答系统
2. 仅解码器架构(GPT系列)
特点:
- 单向上下文:只能看到左侧的上下文(自回归)
- 预训练任务:下一个词预测
- 应用场景:文本生成、对话系统、代码生成
3. 编码器-解码器架构(原始Transformer、T5)
特点:
- 完整序列转换:适用于需要转换格式的任务
- 预训练任务:多种文本到文本任务
- 应用场景:机器翻译、文本摘要、风格转换
五、Transformer的局限性
1. 计算复杂度问题
注意力矩阵的O(n²)复杂度:
序列长度n=512:需要计算512×512=262,144个注意力分数
序列长度n=2048:需要计算2048×2048=4,194,304个注意力分数(增长16倍)
导致问题:
1. 长序列处理困难
2. 内存消耗大
3. 训练成本高
2. 位置编码的局限性
- 外推能力弱:训练时最大长度512,推理时难以处理更长序列
- 相对位置信息有限:原始位置编码主要提供绝对位置
- 方向性不足:注意力机制本身是无向的
3. 数据依赖性
- 需要海量数据:才能发挥其强大表示能力
- 小数据表现差:容易过拟合
- 预训练成为必需:从零开始训练成本极高
