Skip to main content

Transformer 架构

一、背景:为什么需要 Transformer?

技术核心思路主要缺陷
N-gram统计前面几个词,预测下一个词无语义理解能力
词向量 (Word Embedding)将词映射为高维数字,语义相近的词距离近本身不做预测
前馈神经网络 (FFN)用神经网络学习语言规律只能处理固定长度,远距离信息丢失
RNN引入隐藏状态传递记忆长期记忆能力差,远距离信息易丢失
LSTM增加长期记忆通道和门控机制必须串行计算,效率低;远距离信息仍需逐层传递

核心痛点:两个距离很远的 Token(如"虎皮鹦鹉"和"那只")交换信息,必须经过中间所有 Token 一步步传话,效率低且信息易衰减。

二、核心创新:自注意力机制 (Self-Attention)

1. 基本思想

让句子中的 每个 Token 都能直接查看其他所有 Token,判断谁与自己最相关,然后按重要性"混合"信息。

  • 例:处理"它"时,模型发现"虎皮鹦鹉"与"它"关系最强(权重 70%),"轩辕"关系最弱(10%)。
  • 结果:"它"的新向量不再只是"它"本身的语义,而是融合了"虎皮鹦鹉"的上下文信息。

2. Q、K、V 三件套

这是理解注意力的关键:

向量含义类比
Q (Query)我想找什么?搜索关键词
K (Key)我这里有什么可供匹配?文档标签
V (Value)我真正携带什么信息?文档内容

计算流程

  1. 每个 Token 通过三个不同的线性变换,从自身词向量生成 Q、K、V。
  2. 用当前 Token 的 Q 与所有 Token(包括自己)的 K点积,得到匹配分数。
  3. 分数经 Softmax 转为权重(总和为 1)。
  4. 用权重对所有 Token 的 V 做加权求和,得到当前 Token 融合上下文后的新向量。

论文中还会除以 $\sqrt{d}$(维度平方根),防止点积结果过大导致 Softmax 过于极端。

三、多头注意力 (Multi-Head Attention)

问题:一句话中同时存在多种关系(指代关系、修饰关系、动作关系等),一套 QKV 难以兼顾。

解决:并行使用多组独立的 QKV(即多个"头"),每组从不同角度捕捉关系。

  • 原始 Transformer 使用 8 个头
  • 最后将各头的结果拼接,形成更丰富的表示。

优势

  • 所有 Token 的 QKV 可并行计算,适合 GPU 大规模加速。
  • 彻底解决了 RNN/LSTM 必须串行计算的问题。

四、位置编码 (Positional Encoding)

问题:并行计算时,Token 的先后顺序信息丢失了。"轩辕养了鹦鹉"和"鹦鹉养了轩辕"会变成一样的输入。

解决:在每个 Token 的原始词向量上,额外加入表示位置信息的编码。

  • 原始 Transformer 使用正弦/余弦函数生成位置编码。
  • 词向量告诉模型"这个词是什么意思",位置编码告诉模型"这个词在什么位置"。

五、前馈神经网络 (FFN)

问题:Attention 只负责"收集信息"(如把"黑色""1万多块"的线索收集到"苹果"这里),但不做深度推理。

解决:在每个 Attention 层后接 FFN,它不看其他 Token,只专注分析当前 Token 已有的特征组合。

  • 例:苹果 + 高价 + 黑色 → FFN 推理出"这不像水果,像电子产品",从而压低"水果属性",增强"科技属性"。

分工

  • Attention:负责交流(从其他 Token 收集信息)。
  • FFN:负责思考(分析特征组合,做研判)。

六、残差连接 (Residual Connection) 与归一化

问题:网络堆叠很深时,梯度在反向传播中逐层衰减,导致前面层几乎收不到训练信号(梯度消失)。

解决:将层的输入 x 直接加到输出上:y = f(x) + x

  • 训练目标从"学完整的映射"变成"学还需要补多少"(残差)。
  • 反向传播时多了一条"高速公路"(导数为 1),极大缓解梯度消失。
  • 通常还会搭配 Layer Normalization(归一化) 使训练更稳定。

这让 Transformer 能稳定堆叠到几十层甚至上百层。

七、Encoder-Decoder 架构

原始 Transformer 为机器翻译设计,分为两部分:

1. 编码器 (Encoder)

  • 任务:理解原文。
  • 输入经词向量 + 位置编码后,通过多层自注意力 + FFN。
  • 每个 Token 可以查看整句话的所有 Token(包括后面的)。
  • 输出:一组融合了全文上下文信息的向量。

2. 解码器 (Decoder)

  • 任务:生成译文,一个 Token 一个 Token 地输出。
  • Masked Self-Attention(掩码自注意力):生成当前 Token 时,只能看自己和已经生成的 Token,后面的 Token 被 Mask 遮住(分数设为极小值),防止偷看答案。
  • Cross-Attention(交叉注意力):用解码器的 Q 去查询编码器输出的 K 和 V,确保生成时能"回头看"原文。
  • 最后经 FFN 处理,通过输出层对词表打分,Softmax 后取概率最高的词。

八、整体回顾:Transformer 的演化逻辑

Transformer 中的每个组件都不是凭空出现的,而是为了解决前一个结构暴露的问题:

问题解决方案
远距离 Token 无法直接通信自注意力机制
一套 QKV 无法捕捉多种关系多头注意力
并行计算丢失顺序信息位置编码
只收集信息不做深度分析前馈神经网络 (FFN)
网络太深导致梯度消失残差连接 + 归一化
生成时偷看未来 Token掩码自注意力 (Mask)
解码器需要参考原文交叉注意力 (Cross-Attention)