Transformer的核心流程
Tokenizer→Embedding→Attention→FFN
1. 文本预处理与分词阶段(Tokenizer)
分词方式演进
- 基于单词的分词器:通过空格、标点符号拆分,但词汇表庞大且易出现未知词(UNK)
- 基于字符的分词器:词汇量小、未知词少,但每个字符意义有限,序列变长
- 基于子词的分词器(主流):常用词不拆分,稀有词分解为有意义的子词
- 例如:“annoyingly” → “annoying” + “ly”
- 既保持语义又节省空间
2. 向量化与嵌入阶段(Embedding)
Token转向量过程
文本 → Token → 数字ID → 向量 → 词嵌入矩阵
- Token映射:每个token对应一个数字ID
- 向量转换:将ID转换为固定维度的向量(如512维)
- 嵌入矩阵:N×d矩阵,N为序列长度,d为嵌入维度
位置编码(Positional Encoding)
解决问题:Transformer没有RNN的顺序处理,需要显式编码位置信息
编码方式:
- 奇数位置:使用cos函数 + 位置信息pos
- 偶数位置:使用sin函数 + 位置信息pos
- 最终结果:
token_embedding + positional_embedding
这样确保模型能区分"Sam is looking for trouble"和"Trouble is looking for Sam"
3. 多头自注意力机制(Multi-Head Self-Attention)
QKV矩阵生成
Q = Wq × X (查询矩阵)
K = Wk × X (键矩阵)
V = Wv × X (值矩阵)
Wq、Wk、Wv是模型需要学习的参数,通过训练过程不断调整这些权重矩阵。
X是经过嵌入处理后的输入矩阵:
- 假设序列长度为N,嵌入维度为d,则X是一个N×d的矩阵
- X包含了位置编码信息:X = token_embedding + positional_embedding
注意力计算公式
Attention(Q,K,V) = softmax(Q·K^T/√dk)V
计算步骤:
- 相关性计算 Q·K^T:Q与K转置相乘,得到注意力分数
- 缩放处理 Q·K^T/√dk):除以√dk,防止梯度消失
- 概率归一化 softmax(Q·K^T/√dk):softmax转换为0-1概率分布
- 加权求和 softmax(Q·K^T/√dk)V:概率权重与V矩阵相乘
多头机制
- 8个注意力头并行计算,每个头关注不同的语义子空间
- 输出合并:将8个z向量拼接后乘以权重矩阵Wo
- 优势:扩展模型关注不同位置的能力,提供多个表示子空间
4. 残差连接与层归一化
残差连接设计
输出 = LayerNorm(X + MultiHeadAttention(X))
作用:
- 缓解退化问题:防止网络过深时性能下降
- 加速收敛:提供梯度直接传播路径
- 提高表示能力:允许学习复杂函数同时保持简单函数学习能力
5. 前馈神经网络(FFN)
- 点对点前馈网络:几个线性层 + ReLU激活函数
- 并行计算:向量间无依赖关系,可并行处理
- 残差连接:
LayerNorm(X + FFN(X))
目的:进一步处理注意力输出,提供更丰富的表达能力
6. 编码器整体架构
单个编码器层结构
Input → Multi-Head Self-Attention → Add & Norm → FFN → Add & Norm → Output
多层堆叠
- 6层编码器(原论文设置)并行处理
- 相同结构:每层都包含自注意力层和前馈网络层
- 信息流转:每个token沿着自己的路径从下往上流转
7. 解码器特殊机制
掩码多头注意力(Masked Multi-Head Attention)
原理:防止模型在训练时看到"未来"的token
- 当处理位置i的token时,只能关注位置≤i的token
- 保证训练与推理的一致性
编码器-解码器注意力
- Q矩阵:来自解码器输入
- K、V矩阵:来自编码器输出
- 作用:帮助解码器关注输入序列的相关部分
8. 输出生成阶段
线性分类器 + Softmax
解码器输出 → 线性层 → Logits向量 → Softmax → 概率分布 → 选择最高概率词
- Logits向量:词汇表大小的向量(如10,000维)
- 自回归生成:逐个生成token,直到遇到结束符
核心创新
- 完全基于注意力:摆脱了RNN的顺序依赖
- 并行计算:大幅提升训练效率
- 长距离依赖:通过自注意力捕获任意距离的依赖关系
- 多头机制:从多个角度理解语义关系
- 残差连接:支持更深的网络结构
e.g. 通过QKV注意力机制,模型能从"最新款"、“体验"等词汇中推断出这里的"苹果"指的是手机,而从"阿克苏”、"口感"等词汇中推断出那里的"苹果"指的是水果。
参考链接