一、Transformer的三大核心机制
1. 自注意力(Self-Attention)—— 全局关联分析器
- 问题:传统模型(如RNN)只能逐个处理词,无法直接看到全局关系。
- 解决方案:自注意力让每个词同时“看到”所有其他词,并计算它们的重要性。
- 具体步骤(用「查字典」类比):
- 生成Query、Key、Value:
- 每个词生成三把“钥匙”:Query(我要找什么)、Key(我有什么标签)、Value(我实际的内容)
- 类比:图书馆每本书有索引标签(Key)、搜索关键词(Query)、书的内容(Value)
- 计算注意力权重:
- 用Query和所有Key做点积(相似度计算),再通过Softmax归一化为概率
- 公式简化:
注意力分数 = Softmax(Query·Key^T / √d_k)
- 为什么除以√d_k?防止点积过大导致梯度消失(类似“压缩数值范围”)
- 加权聚合Value:
- 用注意力权重对Value加权求和,得到当前词的“新表示”。
- 效果:比如“它”这个词,可能聚合了“猫”和“鱼”的信息
2. 多头注意力(Multi-Head Attention)—— 多专家委员会
- 问题:单一注意力只能捕捉一种类型的关系(如语法或语义)。
- 解决方案:并行多个独立的注意力头(如8个头),每个头关注不同模式。
- 类比:让8个专家分别分析句子(一个看主谓宾,一个看情感,一个看指代关系…),最后合并结果。
- 具体步骤:
- 将Query、Key、Value拆分成多个头(例如8头)。
- 每个头独立计算注意力,得到8组不同的特征。
- 拼接所有结果并通过线性层融合。
3. 位置编码(Positional Encoding)—— 词的“位置GPS”
- 问题:Transformer没有顺序处理,需要显式告诉模型词的位置。
- 解决方案:为每个位置生成唯一的编码向量,加到词嵌入上。
- 两种编码方式:
- 正弦函数编码(原始论文):
- 用不同频率的正弦/余弦函数生成位置向量。
- 优点:模型能学会相对位置(如位置5和位置6的关系类似位置10和11)
- 可学习编码(BERT等模型使用):
- 直接训练一个位置嵌入矩阵,类似词嵌入。
二、训练细节深入
1. 解码器的掩码注意力(Masked Attention)
- 为什么需要掩码?训练时解码器只能看到已生成的词(不能作弊看未来)。
- 实现方式:在注意力权重计算时,用“上三角掩码矩阵”遮挡未来位置。
- 示例:生成第3个词时,只能关注第1、2个词。
2. 残差连接(Residual Connection)与层归一化(LayerNorm)
- 残差连接:每一层的输出 = 原始输入 + 处理后的结果。
- 作用:防止深层网络梯度消失(类似“保留原始记忆,只学差异部分”)。
- 层归一化:对每一层的输出做标准化(均值为0,方差为1)。
- 作用:稳定训练过程,加速收敛。
3. 前馈网络(Feed-Forward Network)—— 非线性增强器
- 结构:两层全连接层,中间用ReLU激活函数。
- 公式:
FFN(x) = ReLU(xW1 + b1)W2 + b2
- 公式:
- 作用:为注意力输出增加非线性变换,增强模型表达能力。
三、Transformer为何能吊打RNN?
1. 并行化计算
- RNN必须按序列逐步计算,Transformer所有位置同时处理。
- 结果:GPU并行加速,训练速度提升10倍以上。
2. 长距离依赖直接建模
- RNN靠“记忆”传递信息,距离越远信息丢失越多。
- Transformer的自注意力一步到位捕捉任意距离关系(如句首和句尾)。
3. 模块化设计
- 编码器和解码器由相同结构的层堆叠而成,易于扩展(如GPT-3有96层)。
四、关键问题解析
Q1:注意力权重可视化后能看出什么?
- 例如在翻译中,模型可能会对“it”分配高权重到“猫”和“鱼”,显示指代关系。
Q2:Transformer如何处理一词多义?
- 通过上下文注意力动态调整词向量。例如“苹果”在“吃苹果”和“苹果手机”中会聚合不同的上下文信息。
Q3:为什么大模型(如GPT)只用解码器?
- GPT这类生成模型不需要编码器-解码器结构,直接用堆叠的解码器层(带掩码注意力)自回归生成文本。
五、总结:Transformer的终极秘密
输入 → 词嵌入 + 位置编码 → 自注意力(全局关联) → 前馈网络(非线性增强) → 残差连接(保底记忆) → 层归一化(稳定训练) → 重复N次 → 输出
核心公式总结:
– 注意力:Output = Softmax(QK^T/√d_k) · V
– 残差连接:x = x + Sublayer(LayerNorm(x))
– 层归一化:LayerNorm(x) = (x - μ)/σ * γ + β
- 精读《Attention Is All You Need》
- 使用Tensor2Tensor可视化注意力权重。