深入浅出理解 Transformer 的模型结构与注意力机制

255 阅读3分钟

从零开始理解 Transformer 模型结构与注意力机制


一、为什么需要 Transformer?

在深度学习发展初期,RNN 和 LSTM 一度是自然语言处理的主力军。但它们存在两个显著问题:

  1. 串行处理:RNN 必须一个一个词处理,无法并行;
  2. 长距离依赖难捕捉:句子长了之后,模型难以记住前面的词。

为了打破这两点限制,Google 团队在 2017 年提出了 Transformer 架构,它完全抛弃了循环结构,基于注意力机制,让模型能够:

  • 并行处理所有词;
  • 更好地捕捉全局信息。

二、Transformer 整体结构图

👇下图是 Transformer 的典型结构:

image.png


三、各个模块详解

1. 输入嵌入(Embedding)

每个词通过查词向量表,变成一个向量。比如:

输入句子: "I love NLP"
→ Embedding 后变成一个 3x512 的矩阵(假设词向量维度是 512

2. 位置编码(Positional Encoding)

由于没有 RNN 的顺序处理能力,Transformer 使用位置编码来加点“顺序感”。方法如下:

  • 加入固定的正弦/余弦位置编码;
  • 或者使用可学习的位置向量。

3. 自注意力机制(Self-Attention)

核心思想是:每个词都能关注句子中其他所有词,而不是只看相邻词。

简单公式表示:

image.png

  • Q(Query)、K(Key)、V(Value)都是从词向量经过线性层变换而来。
举个例子(3 个词):
输入词: ["I", "love", "NLP"]
每个词都生成一个 QKV
通过打分矩阵 → 计算每个词对其他词的注意力

4. 多头注意力(Multi-Head Attention)

不是用一组 QKV,而是用 多组 QKV 并行计算,然后拼接结果。

好处:不同的“头”可以关注句子的不同语义维度,比如:

  • 一组关注主谓关系
  • 一组关注情感词
  • 一组关注实体名词

5. 前馈全连接层(Feed Forward)

每个词向量都独立通过一个小型 MLP,增加非线性能力:

FFN(x) = max(0, xW1 + b1)W2 + b2

6. 残差连接 + 层归一化

每一层都通过:

LayerNorm(x + Sublayer(x))
  • 防止深层网络的训练困难;
  • 稳定梯度传播。

四、Encoder 和 Decoder 的区别

  • Encoder:主要做输入的理解。
  • Decoder:根据 Encoder 输出生成目标序列(比如翻译句子、写摘要等)。

Decoder 比 Encoder 多了一个:

  • Masked Self-Attention:防止模型看到未来词,保证自回归生成。

五、一个实际例子:句子翻译

假设输入英文:

"Hello world"
  1. 每个词转成 embedding
  2. 加上位置编码
  3. 多层 Encoder 编码后生成上下文向量
  4. Decoder 依次生成目标语言(如“你好,世界”),每一步预测下一个词

六、总结

模块作用
Embedding把词变成向量
Positional Encoding加入顺序信息
Self-Attention让词互相“看”
Multi-Head多角度理解信息
Feed Forward非线性增强能力
LayerNorm + 残差稳定训练效果