Transformer架构深度解析

本文详细解析了 Transformer 架构的核心组件及其工作原理,涵盖了从分词嵌入、位置编码到多头注意力机制、前馈网络及残差连接的完整流程。文章还对比了编码器与解码器的功能差异,并探讨了该架构为何能成为现代大语言模型基石的原因。

Image

在这篇博客中,我们将通过逐步解码 Transformer 架构来学习它——理解每个组件的功能、它们如何协同工作,以及为什么这种架构能够为每一个现代大语言模型(LLM)提供动力。

当我们听到“Transformer”时,它听起来很复杂。但如果我们将其拆解为单个部分,每一个部分都很简单。复杂性源于它们堆叠在一起的方式,而不是因为任何一个部分难以理解。我们的目标是清晰地解码这一架构,以便在结束时,我们能够向任何人解释 Transformer 是如何工作的。

宏观景象

从高层级来看,Transformer 是一个“tokens-in, tokens-out”的机器。它接收一个 Token 序列作为输入,并产生一个 Token 序列作为输出。由于 Token 代表文本,它实际上充当了一个文本输入、文本输出的机器。

例如:

  • 输入: "Translate: I love learning" -> 输出: "J'adore apprendre"
  • 输入: "What is the capital of France?" -> 输出: "The capital of France is Paris."

为什么需要 Transformer?

在 Transformer 出现之前,模型按顺序处理单词,就像从左到右阅读句子一样。这种方法有两个主要缺陷:

  1. 遗忘: 随着句子变长,模型难以记住前面的单词。到第 50 个单词时,对第 1 个单词的记忆变得非常微弱。
  2. 缓慢: 顺序处理意味着第 2 个单词必须等待第 1 个,第 3 个等待第 2 个,依此类推。这使得训练变得非常缓慢。

Transformer 在 2017 年的论文 Attention Is All You Need 中提出,通过同时处理所有输入 Token 解决了这些问题。这种并行处理使训练更快,并允许每个 Token 直接查看其他每个 Token,从而克服了长距离记忆问题。

架构的两半

原始的 Transformer 由两个主要部分组成:

  • Encoder(编码器): 这一半负责阅读和理解输入。
  • Decoder(解码器): 这一半负责生成输出。

可以把它看作是读者和作者之间的对话。读者(编码器)在文档上做详细的笔记,而作者(解码器)使用这些笔记来生成一个新文档。

第 1 步:将单词转换为数字

模型只理解数字,因此文本必须通过两个阶段进行转换:

  1. Tokenization: 文本被分割成称为 Token 的小片段(单词、单词的一部分或字符)。例如,“I love learning” 变成了 ["I", "love", "learning"]。
  2. Embedding: 每个 Token 被转换成一个数字向量(数字指纹)。具有相似含义的单词(如 “happy” 和 “joyful”)会得到相似的 Embedding,而无关的单词(如 “happy” 和 “car”)会得到截然不同的 Embedding。

第 2 步:添加词序(位置编码)

因为 Transformer 同时处理所有 Token,它本质上并不知道单词的顺序。"I love AI""AI love I" 看起来会是一样的。

Positional Encoding 通过向每个 Embedding 添加一个表示其在句子中位置的特定向量来解决这个问题。可以把它想象成剧院里的座位号;即使所有人同时进入,他们的座位号也会告诉我们他们具体属于哪里。

第 3 步:注意力机制 (Attention Mechanism)

注意力是 Transformer 的核心。它允许每个单词查看句子中的其他每个单词,并决定对每个单词给予多少关注。

考虑这个句子:"The cat sat on the mat because it was tired." 当处理 “it” 时,注意力机制帮助模型更多地关注 “cat” 而不是 “mat”,因为 “cat” 是 “it” 的相关上下文。

注意力如何工作

每个单词被转换为三个向量:

  • Query (Q): 这个单词正在寻找什么。
  • Key (K): 这个单词能提供什么。
  • Value (V): 单词携带的实际信息。

该过程遵循以下步骤:

  1. 评分 (Score): 每个单词使用其 Query 与所有其他单词的 Key 进行比较(点积)。
  2. 缩放 (Scale): 分数除以 √dₖ 以保持在稳定范围内。
  3. 归一化 (Normalize): 分数通过 Softmax 函数转换为概率,其总和为 1。
  4. 加权和 (Weighted Sum): 模型根据这些概率收集 Value 的加权组合。

多头注意力 (Multi-Head Attention)

Transformer 并行多次运行注意力机制,被称为“多头注意力”。每个“头”关注不同的关系,例如主语-谓语连接或形容词-名词配对。

                Input
                  |
   -------------------------------
   |       |       |       |     |
 Head 1  Head 2  Head 3  ...  Head N    (并行处理)
   |       |       |       |     |
   -------------------------------
                  |
              Combined
                  |
                Output

第 4 步:前馈网络 (Feed-Forward Network)

在注意力机制之后,输出通过一个前馈网络。注意力机制侧重于单词之间的关系,而前馈网络则加深对每个单词个体的理解,强化信号并去除噪声。

第 5 步:残差连接和层归一化

两个关键组件确保了有效的学习:

  • 残差连接 (Residual Connection/Skip Connection): 原始输入被加回到子层输出中(output = sub-layer(input) + input)。这防止了在许多层中丢失重要信息。
  • 层归一化 (Layer Normalization): 调整数字以保持在稳定范围内,使训练过程保持平滑。

第 6 步:堆叠多个层

单个 Transformer “块”由一个注意力子层和一个前馈子层组成。Transformer 将许多这样的块堆叠在一起。

        Input
          |
  -----------------
  |   Layer 1     |    (注意力 + 前馈)
  -----------------
          |
  -----------------
  |   Layer 2     |    (注意力 + 前馈)
  -----------------
          |
         ...
          |
  -----------------
  |   Layer N     |    (注意力 + 前馈)
  -----------------
          |
        Output

原始的 Transformer 使用了 6 层。像 GPT-3 这样的现代模型使用多达 96 层。每一层都建立在上一层的基础上,使理解更加丰富和深刻。

第 7 步:编码器详解

编码器的任务是创建输入的上下文感知表示。在每一层中:

  1. 自注意力 (Self-Attention): 每个单词查看输入中的所有其他单词。
  2. 前馈网络: 每个表示被单独细化。

到最后一层时,“I love learning” 中的单词 “learning” 不仅仅是一个静态定义;它编码了它是主语 “I” 所喜爱的这一特定上下文。

第 8 步:解码器详解

解码器使用三个组件逐个生成输出 Token:

  1. 掩码自注意力 (Masked Self-Attention): 每个输出单词查看之前的输出单词,但被“掩盖”而无法看到未来的单词(因果掩码)。
  2. 交叉注意力 (Cross-Attention): 解码器连接到编码器。Query 来自解码器,而 Key 和 Value 来自编码器的输出。这架起了输入理解与输出生成之间的桥梁。
  3. 前馈网络: 细化表示。

解码器如何选择下一个词

最终输出通过一个 线性层 (Linear Layer) 来获得词汇表中每个单词(例如 50,000 个单词)的分数。Softmax 函数将这些分数转换为概率。然后模型选择概率最高的单词(或使用 top-k 等采样策略)。

第 9 步:完整流程

示例:将 "I love learning" 翻译为法语。

编码器阶段

  1. Tokenize & Embed: "I", "love", "learning" 变成向量。
  2. 位置: 添加顺序信息。
  3. 处理: 通过 6 层创建英语句子的深度上下文图。

解码器阶段

  1. 生成 "J'": 从一个“开始” Token 开始,查看编码器输出,并选择 "J'"。
  2. 生成 "adore": 查看 ["start", "J'"] 和编码器输出以选择 "adore"。
  3. 生成 "apprendre": 查看之前的 Token 和编码器输出以选择 "apprendre"。
  4. 结束: 生成一个“结束” Token 以停止。

三种变体

  1. Encoder-Only (例如 BERT): 用于理解任务,如情感分析或分类。
  2. Decoder-Only (例如 GPT): 用于生成文本、回答问题和编写代码。
  3. Encoder-Decoder (例如 T5): 用于翻译或摘要,其中一段文本被转换为另一段文本。

为什么 Transformer 如此强大

  • 并行处理: 在海量数据集上训练速度快得多。
  • 长距离连接: 注意力机制解决了遗忘问题。
  • 可扩展性: 添加更多层和数据能持续提高性能。
  • 多功能性: 一种架构几乎可以处理任何 NLP 任务。

快速总结

  • Tokenization & Embedding 将单词转换为数字。
  • 位置编码 (Positional Encoding) 添加词序。
  • 注意力机制 (Attention) 允许单词关注相关的上下文。
  • 前馈网络 (Feed-Forward Networks) 细化单个单词的含义。
  • 残差连接与归一化 (Residual Connections & Normalization) 保持模型稳定。
  • 编码器 (Encoder) 理解输入;解码器 (Decoder) 生成输出。
  • 原文链接: x.com/amitiitbhu/status/...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
amitiitbhu
amitiitbhu
江湖只有他的大名,没有他的介绍。