Transformer 架构自 2017 年在开创性论文《Attention Is All You Need》中提出以来,已从根本上重塑了人工智能领域。作为深度学习模型的首选架构,它支撑着包括 OpenAI 的 GPT、Meta 的 Llama 和 Google 的 Gemini 在内的主流文本生成模型。其应用范围早已超越自然语言处理,延伸至音频生成、图像识别、蛋白质结构预测及游戏玩法等领域,展现出极强的通用性。

从原理上看,基于 Transformer 的文本生成模型遵循“下一个 Token 预测”机制:给定用户输入的文本提示,模型需推断出最可能的下一个 Token(单词或子词)。该架构的核心创新在于自注意力机制(Self-Attention),使其能够并行处理整个序列,并比传统架构更有效地捕捉长距离依赖关系。
GPT-2 系列是理解这一架构的理想切入点。由 Georgia Institute of Technology 团队开发的交互式工具“Transformer Explainer”,底层运行的是拥有 1.24 亿参数的 GPT-2 (Small) 模型。尽管并非当前最强大的模型,但它具备与现代 SOTA 模型相同的架构组件和原则,适合用于解析基础概念。
一个典型的文本生成 Transformer 包含三个关键组成部分:
- 嵌入层(Embedding):将文本输入分割为 Token,转换为捕捉语义信息的数字向量。
- Transformer Block:模型的基本处理单元,包含核心组件——注意力机制(允许 Token 间通信以捕捉上下文关系)以及 MLP 层(多层感知器,独立优化每个 Token 的表示)。
- 输出概率层:通过线性层和 Softmax 函数,将处理后的嵌入转化为概率分布,从而预测序列中的下一个 Token。
嵌入层详解
当用户输入如“visua 数据可视化使用户能够”这样的提示时,模型首先需要将其转换为可计算的数值格式。这一过程分为四个步骤:Tokenization(分词)、Token Embedding(词嵌入)、Positional Encoding(位置编码)以及 Final Embedding(最终嵌入)。
图 1:嵌入层视图展开,展示输入提示如何转换为向量表示。过程涉及 (1) 分词, (2) 词嵌入, (3) 位置编码, 和 (4) 最终嵌入。
第一步:分词(Tokenization)
分词是将输入文本分解为更小、更易管理的片段(Token),可以是完整单词或子词。例如,“数据”和“可视化”可能对应独立的 Token,而某些复杂词汇可能被拆分。GPT-2 在训练前确定了包含 50,257 个独特 Token 的固定词汇表。分词后,每个 Token 获得唯一的 ID,以便后续查找其向量表示。
第二步:词嵌入(Token Embedding)
GPT-2 (Small) 将词汇表中的每个 Token 映射为一个 768 维的向量。这些向量存储在一个形状为 (50,257, 768) 的矩阵中,包含约 3900 万个参数。这种高维空间使得语义相近的 Token 在空间中彼此靠近,而差异较大的 Token 则相距较远,从而赋予模型对词语语义的理解能力。
第三步:位置编码(Positional Encoding)
由于 Transformer 本身不具备序列顺序的概念,嵌入层还需编码每个 Token 在输入提示中的位置信息。不同模型采用不同的策略,GPT-2 从头开始训练自己的位置编码矩阵,并将其直接集成到训练过程中。
第四步:最终嵌入(Final Embedding)
最后,将词嵌入向量与位置编码相加,得到最终的嵌入表示。这种组合既保留了 Token 的语义意义,又包含了其在序列中的位置信息。
Transformer Block 核心机制
Transformer 的处理核心在于多个堆叠的 Transformer Block。GPT-2 (Small) 模型由 12 个这样的块组成,数据从第一个块流向最后一个块,逐步建立对每个 Token 的复杂理解,形成更高阶的输入表示。每个块主要包含多头自注意力(Multi-head Self-Attention)和多层感知器(MLP)。
多头自注意力(Multi-head Self-Attention)
自注意力机制使模型能够捕捉序列内 Token 之间的关系,让每个 Token 的表示受到其他 Token 的影响。多头设计允许模型从不同角度审视这些关系:例如,某些头可能专注于短距离语法链接,而其他头则追踪广泛的语义上下文。
步骤 1:计算查询、键和值矩阵
QKVij=(d=1∑768Embeddingi,d⋅Weightsd,j)+Biasj图 2:从原始嵌入计算 Query, Key, 和 Value 矩阵。
每个 Token 的嵌入向量通过乘以学习到的权重矩阵,转换为三个向量:查询 (Query, Q)、键 (Key, K) 和值 (Value, V)。这可以通过搜索引擎类比来理解:
- 查询 (Q):类似于用户在搜索引擎中输入的搜索词,代表想要获取更多信息的 Token。
- 键 (K):类似于搜索结果页面的标题,代表可供匹配的可能 Token。
- 值 (V):类似于网页的实际内容,一旦查询与相关的键匹配,即提取对应的值。
模型利用这些 QKV 值计算注意力分数,确定在生成预测时每个 Token 应获得的关注程度。
步骤 2:多头分割
在 GPT-2 (Small) 中,Q、K、V 向量被分割为 12 个头。每个头独立处理嵌入的部分维度,捕捉不同的语法和语义关系。这种并行处理方式增强了模型的表达能力。
步骤 3:掩码自注意力计算
图 3:使用 Query, Key, 和 Value 矩阵计算掩码自注意力。
在每个头部内部,执行以下操作:
- 点积:计算查询矩阵和键矩阵的点积,生成反映所有输入 Token 之间关系的注意力分数方阵。
- 缩放与掩码:对注意力分数进行缩放,并对矩阵的上三角部分施加掩码(设置为负无穷),防止模型访问未来的 Token。这确保模型仅根据历史上下文预测下一个 Token。
- Softmax 与 Dropout:通过 Softmax 将掩码后的分数转换为概率分布,随后应用 Dropout 进行正则化。每一行的总和为 1,表示左侧每个符号的相关性权重。
步骤 4:输出与拼接
将掩码自注意力的得分与值矩阵相乘,得到每个头的输出。GPT-2 的 12 个注意力头分别捕捉 Token 间的不同关系,它们的输出被拼接在一起,并通过线性投影合并,形成自注意力层的最终输出。
多层感知器(MLP)
图 4:使用 MLP 层将自注意力表示投影到更高维度,以增强模型的表示能力。
自注意力层整合了跨 Token 的信息后,输出进入 MLP 层以进一步增强表示能力。MLP 块由两个线性变换和一个 GELU 激活函数组成:
- 扩展:第一个线性变换将维度从 768 扩大到 3072(4 倍)。这一步骤将 Token 表示投射到更高维空间,以捕捉原始维度中不可见的丰富模式。
- 压缩:第二个线性变换将维度降回原来的 768。此步骤在保留非线性转换带来的有用特征的同时,将表示恢复至可管理的大小。
与自注意力机制不同,MLP 独立处理每个 Token,不路由 Token 间的信息,而是单纯地将每个 Token 的表示从一个空间映射到另一个空间,从而丰富整体模型容量。
输出概率与采样策略
经过所有 Transformer Block 处理后,输出通过最后的线性层准备进行 Token 预测。该层将最终表示投射到一个 50,257 维的空间中,每个维度对应词汇表中的一个 Token,产生的值称为 Logit。随后,Softmax 函数将这些 Logit 转换为总和为 1 的概率分布,指示每个 Token 成为下一个字的似然度。
图 5:词汇表中的每个 Token 根据模型输出的 logits 分配概率。这些概率决定了每个 Token 成为序列中下一个字的可能性。
生成下一个 Token 的过程是从该概率分布中抽样。温度(Temperature)超参数在此过程中起关键作用,数学上表现为将模型输出的 Logit 除以温度值:
- 温度 = 1:Logit 保持不变,Softmax 输出无影响。
- 温度 < 1:降低温度会使概率分布更加尖锐,模型输出更具确定性和可预测性。
- 温度 > 1:提高温度会产生更平滑的概率分布,增加生成的随机性,常被称为模型的“创造性”。
此外,采样过程可通过 Top-k 和 Top-p 参数进一步细化:
- Top-k 采样:仅考虑概率最高的 k 个候选 Token,排除低概率选项。
- Top-p 采样(核采样):选择累积概率超过 p 值的最小 Token 集合,确保只有最可能的 Token 参与生成,同时保留多样性。
通过调整温度、Top-k 和 Top-p,可以在决定性与多样化输出之间取得平衡,定制模型行为。
辅助架构特征
除了核心组件外,还有一些辅助特征对于提升 Transformer 性能至关重要,尤其是在训练阶段。主要包括层规范化、Dropout 和残差连接。
层规范化(Layer Normalization)
层规范化有助于稳定训练过程并加速收敛。它通过对各个特征进行规范化,确保激活值的均值和方差保持一致,从而减轻内部协变量偏移问题,降低模型对初始权重的敏感性。在 GPT-2 的每个 Transformer Block 中,层规范化应用两次:一次在自注意力机制之前,一次在 MLP 层之前。
Dropout
Dropout 是一种正则化技术,通过在训练过程中随机将部分神经元权重置零,防止神经网络过拟合。这迫使模型学习更鲁棒的特征,减少对特定神经元的依赖,从而提高对新数据的泛化能力。在推理阶段,Dropout 被禁用,相当于使用训练期间众多子网络的组合,通常能带来更好的性能。
残差连接(Residual Connections)
残差连接最初在 2015 年的 ResNet 模型中引入,彻底改变了深层神经网络的训练方式。本质上,它是绕过一层或多层的快捷路径,将某一层的输入直接加到其输出上。这有助于缓解梯度消失问题,使深度网络更容易训练。在 GPT-2 中,每个 Transformer Block 内部使用两次残差连接(分别在 MLP 前后),确保梯度在网络反向传播时顺畅流动,并使早期层获得足够的更新。
交互探索与技术实现
为了深入理解 Transformer 的内部运作,用户可以利用交互式功能进行实验:
- 输入自定义文本序列:观察模型如何处理输入并预测下一个字。可以查看注意力权重、中间计算过程以及最终输出概率的计算方式。
- 调节温度滑块:控制模型预测的随机性。通过改变温度值,探索如何让输出变得更确定性或更具创造性。
- 选择 Top-k 和 Top-p 采样方法:调整推理时的采样行为。尝试不同数值,观察概率分布的变化及其对模型预测的影响。
- 交互注意力地图:查看模型如何聚焦于输入序列中的不同 Token。悬停在 Token 上可高亮显示其注意力权重,直观展示模型如何捕捉上下文和词间关系。
“Transformer Explainer”工具直接在浏览器中运行实时的 GPT-2 (Small) 模型。该模型源自 Andrej Karpathy 的 nanoGPT 项目中的 PyTorch 实现,并转换为 ONNX Runtime 以实现无缝的浏览器端执行。前端界面使用 JavaScript 构建,采用 Svelte 框架,并利用 D3.js 创建动态可视化效果,数值随用户输入实时更新。
该项目由 Georgia Institute of Technology 的研究人员 Aeree Cho, Grace C. Kim, Alexander Karpekov, Alec Helbling, Jay Wang, Seongmin Lee, Benjamin Hoover 和 Polo Chau 共同开发。





