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

在这篇博客中,我们将通过逐步解码 Transformer 架构来学习它——理解每个组件的功能、它们如何协同工作,以及为什么这种架构能够为每一个现代大语言模型(LLM)提供动力。
当我们听到“Transformer”时,它听起来很复杂。但如果我们将其拆解为单个部分,每一个部分都很简单。复杂性源于它们堆叠在一起的方式,而不是因为任何一个部分难以理解。我们的目标是清晰地解码这一架构,以便在结束时,我们能够向任何人解释 Transformer 是如何工作的。
从高层级来看,Transformer 是一个“tokens-in, tokens-out”的机器。它接收一个 Token 序列作为输入,并产生一个 Token 序列作为输出。由于 Token 代表文本,它实际上充当了一个文本输入、文本输出的机器。
例如:
在 Transformer 出现之前,模型按顺序处理单词,就像从左到右阅读句子一样。这种方法有两个主要缺陷:
Transformer 在 2017 年的论文 Attention Is All You Need 中提出,通过同时处理所有输入 Token 解决了这些问题。这种并行处理使训练更快,并允许每个 Token 直接查看其他每个 Token,从而克服了长距离记忆问题。
原始的 Transformer 由两个主要部分组成:
可以把它看作是读者和作者之间的对话。读者(编码器)在文档上做详细的笔记,而作者(解码器)使用这些笔记来生成一个新文档。
模型只理解数字,因此文本必须通过两个阶段进行转换:
因为 Transformer 同时处理所有 Token,它本质上并不知道单词的顺序。"I love AI" 和 "AI love I" 看起来会是一样的。
Positional Encoding 通过向每个 Embedding 添加一个表示其在句子中位置的特定向量来解决这个问题。可以把它想象成剧院里的座位号;即使所有人同时进入,他们的座位号也会告诉我们他们具体属于哪里。
注意力是 Transformer 的核心。它允许每个单词查看句子中的其他每个单词,并决定对每个单词给予多少关注。
考虑这个句子:"The cat sat on the mat because it was tired." 当处理 “it” 时,注意力机制帮助模型更多地关注 “cat” 而不是 “mat”,因为 “cat” 是 “it” 的相关上下文。
每个单词被转换为三个向量:
该过程遵循以下步骤:
Transformer 并行多次运行注意力机制,被称为“多头注意力”。每个“头”关注不同的关系,例如主语-谓语连接或形容词-名词配对。
Input
|
-------------------------------
| | | | |
Head 1 Head 2 Head 3 ... Head N (并行处理)
| | | | |
-------------------------------
|
Combined
|
Output
在注意力机制之后,输出通过一个前馈网络。注意力机制侧重于单词之间的关系,而前馈网络则加深对每个单词个体的理解,强化信号并去除噪声。
两个关键组件确保了有效的学习:
output = sub-layer(input) + input)。这防止了在许多层中丢失重要信息。单个 Transformer “块”由一个注意力子层和一个前馈子层组成。Transformer 将许多这样的块堆叠在一起。
Input
|
-----------------
| Layer 1 | (注意力 + 前馈)
-----------------
|
-----------------
| Layer 2 | (注意力 + 前馈)
-----------------
|
...
|
-----------------
| Layer N | (注意力 + 前馈)
-----------------
|
Output
原始的 Transformer 使用了 6 层。像 GPT-3 这样的现代模型使用多达 96 层。每一层都建立在上一层的基础上,使理解更加丰富和深刻。
编码器的任务是创建输入的上下文感知表示。在每一层中:
到最后一层时,“I love learning” 中的单词 “learning” 不仅仅是一个静态定义;它编码了它是主语 “I” 所喜爱的这一特定上下文。
解码器使用三个组件逐个生成输出 Token:
最终输出通过一个 线性层 (Linear Layer) 来获得词汇表中每个单词(例如 50,000 个单词)的分数。Softmax 函数将这些分数转换为概率。然后模型选择概率最高的单词(或使用 top-k 等采样策略)。
示例:将 "I love learning" 翻译为法语。
- 原文链接: x.com/amitiitbhu/status/...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!