Transformer
把注意力包装成可深度堆叠、可并行训练的标准积木
Transformer · 变换器
- 它是什么——注意力已经很强,为什么还要「Transformer」这层包装。
- 一层里有什么——四件套各自负责什么,为什么缺一不可。
- 位置编码——无顺序信号的全连接自注意力如何获得词序信息。
- 三种搭法——同样的积木怎么搭出理解型、生成型模型。
- 模态无关——为什么图像、音频也能用同一套架构。
- 历史意义——一句话,它到底改变了什么。
- 注意力只管「位置间传信息」,要搭成大模型,需要一块可无限堆叠的标准积木——Transformer。(§1)
- 每层四件套:多头注意力 + 前馈网络(两主角)+ 残差 + 层归一化(两配件)。(§2)
- 一次数值前向显示:注意力写入跨位置内容,前馈逐位置变换,残差保留主干。(§3)
- 残差提供短梯度路径,层归一化控制子层输入尺度,使深层堆叠更可优化。(§4)
- 无顺序信号的全连接自注意力对排列等变;位置表示可提供词序,因果掩码也会限制顺序。(§5)
- 编码器/解码器/二者组合,通过可见范围与交叉注意力形成不同任务骨架。(§6)
- 只要对象能表示为 token 序列,架构可扩展到图像、音频等模态。(§7)
- 矩阵化并行与稳定堆叠共同提高可扩展性,但算力、数据和系统仍是约束。(§8)
1Transformer 是什么直觉
注意力解决的是“不同位置之间如何交换信息”:某个位置可以根据相关性,从其他位置读取并汇总内容。但单有这套信息传递机制,还不足以构成一个能够逐层学习和加工语言的深层模型。模型还需要一种结构稳定、能够重复堆叠的标准模块,让每一层都接收上一层的表示,完成一次信息交互与变换,再把结果交给下一层。
Transformer 就是这样的标准模块。它把注意力与前馈网络、残差连接和归一化组合成一层:注意力负责在位置之间传递信息,前馈网络继续加工每个位置得到的表示,残差连接保留并传递已有信息,归一化则帮助各层在较稳定的数值尺度上工作。由于这些组件被封装成统一结构,同一种层可以连续堆叠,使表示在一层层处理中逐渐变化。
因此,注意力与 Transformer 不是同一个层级的概念。注意力更像核心的信息交换机制;Transformer 则是把这套机制装进可批量拼装、可训练的完整积木。输入经过第一层后得到新的表示,这些表示成为下一层的输入,如此反复,最终形成由几十层到上百层标准模块组成的大模型。
这种“可堆叠”并不意味着层数可以无限增加。更深的模型仍然受到优化难度、显存容量、设备间通信成本和推理延迟等条件约束。Transformer 提供的是一条能够系统扩展深度的结构路径,而不是取消所有工程与训练边界。
2一层里的四件套数学直觉
一个典型的 Transformer 层可以按数据流拆成四类功能:多头注意力、前馈网络、残差连接和层归一化。常见结构先让输入经过多头注意力,再经过前馈网络;注意力和前馈两个子层各自配有一组残差连接与层归一化。把这样的完整层按相同结构堆叠 N 次,就得到一个多层 Transformer。
多头注意力负责跨位置的信息交换。对于序列中的每个位置,它根据相关性从其他位置取得信息并汇总上下文;“多头”让这种信息汇总能够在多个投影空间中并行进行。其输出仍然对应原来的各个位置,但每个位置的表示已经融入了来自上下文的信息。
前馈网络随后对每个位置独立进行非线性特征变换。“独立”是指不同位置使用同一套变换参数,但某个位置在这一步不会直接读取其他位置;跨位置信息已经由注意力汇入该位置的表示。
残差连接把子层输入沿旁路直接送到输出端,再与子层计算结果相加。若子层函数记为 F,基本关系可写成 y = x + F(x)。这样,已有表示 x 不必完全经过复杂变换才能继续向后传播,梯度也获得更直接的路径。残差连接因此是把网络堆到很深的重要前提。
层归一化把每层内部表示的数值尺度控制在较稳定的范围,降低层层堆叠时数值分布不断漂移并导致训练发散的风险。它与残差连接共同支撑深层优化:残差提供直接的信息与梯度通路,归一化提供受控的数值尺度。
从功能上看,多头注意力和前馈网络是两个主要计算模块:前者跨位置传递信息,后者逐位置加工特征;残差连接和归一化则为这些计算能够稳定地反复堆叠提供结构条件。不过,“四件套”描述的是功能地图,而不是所有模型逐字相同的配方。现代实现可能用 RMSNorm 替代 LayerNorm,改变归一化在子层前后的位置,或加入门控结构;判断一个具体实现时,应关注这些功能如何实现以及数据按什么顺序流动。
| 零件 | 做什么 |
|---|---|
| 多头注意力 | 在位置之间传信息、汇总上下文(见「注意力机制」) |
| 前馈网络 | 对每个位置独立做非线性特征变换;部分事实关联可在其中被定位,但知识并不只存在这里 |
| 残差连接 | 让输入直接绕过本层相加,是能堆到上百层的前提 |
| 层归一化 | 稳定每层的数值分布,防止训练发散 |
3手算一次 Pre-Norm Transformer 块数值例子
Pre-Norm Transformer 块把归一化放在每个子层之前,其基本形式是:
r = x + Attention(Norm(x))
y = r + FFN(Norm(r))
第一式完成注意力子层与第一次残差相加,第二式完成前馈子层与第二次残差相加。两条残差路径都保留进入对应子层前的主干表示,而子层只需要在主干上写入新的变化量。
用二维玩具向量 x = [1, 2] 可以手算这条数据流。这里忽略归一化中的 ε,并令仿射参数 γ = 1、β = 0。x 的两个分量以均值为中心并按尺度归一化后,得到 Norm(x) = [−1, 1]。这个例子只用于展示结构,不代表真实模型的参数或权重。
先处理注意力子层。假设多头注意力根据 Norm(x) 以及上下文完成信息汇总后,给当前 token 产生结果 A = [0.4, −0.2]。第一次残差相加为:
r = x + A = [1, 2] + [0.4, −0.2] = [1.4, 1.8]
A 表示从其他位置汇总并写入当前 token 的信息;相加后的 r 同时保留原输入 x,并叠加注意力带来的改变量。
接着对 r 再次归一化。在同样的简化设定下,Norm(r) = [−1, 1]。假设前馈网络对这个归一化表示进行逐位置变换,得到:
F(Norm(r)) = [0.3, 0.5]
第二次残差相加于是得到最终输出:
y = r + F(Norm(r)) = [1.4, 1.8] + [0.3, 0.5] = [1.7, 2.3]
最终向量 [1.7, 2.3] 可以理解为三部分沿主干逐步累积的结果:原始表示先被保留下来,注意力写入跨位置汇总的信息,前馈网络再对当前位置已有的表示进行独立加工。真实网络会对所有 token 并行执行这套计算,并由多头注意力实际产生每个位置的 A。
阅读结构图时必须确认归一化的位置。本例采用 Pre-Norm,即 x + Sublayer(Norm(x));原始论文常写成 Post-Norm,即 Norm(x + Sublayer(x))。两种结构的输入输出张量形状可以相同,但梯度路径不同,因此不能只凭形状把二者视为等价,更不能在已经训练好的权重上随意互换。
| 阶段 | 计算 | 结果 |
|---|---|---|
| 注意力残差 | r=x+A | [1.4,1.8] |
| 再次归一化 | Norm(r) | [−1,1] |
| 前馈变换 | 假设 F(Norm(r))=[0.3,0.5] | [0.3,0.5] |
| 前馈残差 | y=r+F(Norm(r)) | [1.7,2.3] |
4残差和归一化为什么是深层训练的关键配件数学
深层 Transformer 的训练不仅取决于注意力和前馈网络能做什么,还取决于信息与梯度能否穿过许多层而保持可控。把大量非线性层直接串联时,反向传播的梯度需要连续乘过各层导数;这些乘积可能迅速变小,也可能不断放大。与此同时,前向传播中的激活尺度也可能随深度漂移,逐层变得过大或过小。残差连接与归一化分别针对这两类条件。
残差连接把一个子层写成 y = x + F(x)。其中 F(x) 是注意力或前馈子层计算出的变化量,x 则沿旁路原样加入输出。反向传播时,y 对 x 的导数包含一条来自恒等映射的直接路径,因此梯度不必完全依赖所有非线性变换导数的连续乘积,便能向更浅的层传播。这条“直通”路径降低了深层网络因连乘而出现梯度衰减的风险,同时也让每个子层可以在已有表示上学习增量,而不必从头重建全部信息。
归一化处理的是数值尺度。它把每层表示的分布拉回相对受控的范围,减少激活在连续传播中越来越大或越来越小的趋势。这样,后续子层接收到的输入尺度更稳定,训练也较不容易因数值失控而发散。残差关注的是信息与梯度路径,归一化关注的是表示尺度;二者作用不同,却共同决定深层堆叠是否容易优化。
这些作用来自完整结构与训练配方,而不是某个组件名称本身永远不可替换。部分架构会以 RMSNorm 实现归一化功能,或采用门控残差、专门的残差缩放等设计。它们可以承担相近职责,但具体梯度路径和数值行为仍可能不同。
因此,移除残差连接或改变归一化的位置,并不是一个局部、无影响的替换。这样的变化会显著改变深层优化条件,往往需要连同初始化、学习率和残差缩放一起重新设计。一个已经验证有效的深层配方被改动后,不能仅因张量形状仍然匹配,就认为新结构与原结构等价。
5一个容易忽略的点:位置编码直觉数学
先考虑不含位置表示、因果掩码或其他顺序信号的全连接自注意力:每个位置都能读取全部位置,信息汇总只依赖 token 内容。此时,自注意力对输入排列具有等变性:把输入 token 按某种顺序重新排列,输出也只会按同样方式重新排列。机制会跟着排列移动计算结果,却无法仅凭内容判断原始先后顺序。
在上述无顺序信号的条件下,“小明打小红”和“小红打小明”包含相同的一组词,注意力会为同一个词汇总相同的内容,输出仅跟着词移动;但句中谁打谁已经改变。要让这些表示反映词的先后关系,就需要引入顺序信号。
位置机制接收每个 token 的位置索引或 token 之间的相对距离,再产生顺序信号。这个信号可以加入输入表示,也可以作用于注意力分数。加入位置后,模型计算的不再只是“两个 token 的内容是否相关”,还能够利用“它们位于什么位置、谁在谁前面、相隔多远”等信息。于是,即使两段输入包含相同的词集合,不同排列也可以形成不同的关系表示。
图 2 的词序例子、图中文字与图注,都只适用于上述不含任何顺序信号的全连接自注意力。“结果相同”应理解为同一个词的输出随它一起重排,而非每个固定位置上的输出数值不变。在这个例子中,给输入嵌入叠加位置编码,就能让表示利用词所处的位置。
第 6 节的因果解码器不满足上述前提。固定因果掩码按位置限制可见范围:把 token 重排而保持掩码不变,同一个 token 能读取的前缀通常也会改变,输出一般不会只是原输出的同样重排。因此,不能从“没有显式位置编码”推出因果解码器无法区分词序;掩码本身已带入顺序限制。
位置机制提供的是可供学习使用的顺序信号,并不保证模型自动掌握所有顺序关系。模型能否正确使用长距离的位置信息,仍取决于训练和评测。位置编码的设计还会影响模型能否外推到训练阶段未见过的更长序列,因此它也是长上下文模型需要处理的技术难点之一。
6编码器与解码器如何衔接直觉
原始 Transformer 由编码器栈和解码器栈连接而成。编码器把输入符号序列变成一串连续表示;解码器读取这些表示与已经产生的输出前缀,逐步给出后续输出。理解这套连接方式时,关键要沿两条信息路径追踪:子层内部允许看到哪些位置,以及解码器怎样读取编码器的结果。
编码器接收输入 token 的嵌入与位置表示。编码器自注意力没有解码器那样的因果遮挡,因此一层中的每个输入位置都可以汇总输入序列其他位置的信息;经过注意力、前馈、残差与归一化后,它输出同长度的一串连续表示,供下一层或解码器读取。
解码器先对右移后的输出序列做带掩码的自注意力。掩码阻止某个位置读取它右侧、尚未产生的输出,因此训练时该位置的预测不能偷看未来 token;生成时也只能依据已有前缀继续。经过线性映射与 softmax 后,解码器给出下一个输出 token 的概率分布,再把新 token 纳入前缀继续计算。
两条路径通过编码器—解码器注意力相连:解码器用当前表示形成查询,用编码器输出形成键和值,从而在产生每个输出位置时选择性读取输入序列。于是,编码器负责形成输入上下文,带掩码的解码器负责维护输出前缀,交叉注意力负责把两者连接成从输入序列到输出序列的转换过程。
核对原始架构时,可以把数据流概括为:输入序列→编码器连续表示;右移的输出前缀→带掩码的解码器表示;编码器—解码器注意力→把输入信息写入输出过程。这个描述不需要借助后来模型家族的名称或用途分类。
| 搭法 | 典型代表 | 输入与输出 | 常见用途 |
|---|---|---|---|
| 只用编码器 | BERT 类 | 完整序列→每个位置的双向上下文表示 | 分类、抽取、判断 |
| 只用解码器 | GPT 类 | 已有前缀→下一个 token 的概率分布 | 逐 token 生成 |
| 编码器+解码器 | T5 类 | 完整输入序列与输出前缀→下一个输出 token 的概率分布 | 翻译、摘要等转换任务 |
| 搭法 | 代表 | 擅长 |
|---|---|---|
| 只用编码器 | BERT 类 | 理解:分类、抽取、判断(能同时看左右全文) |
| 只用解码器 | GPT 类 | 生成:逐词往下写,是当今大模型的主流 |
| 编码器 + 解码器 | T5 类 | 转换:翻译、摘要等明确的「输入→输出」任务 |
7从 token 到向量序列:输入接口直觉综合
原始 Transformer 不直接计算文字字符串,而是先把输入与输出 token 映射到维度为 d_model 的向量,再加入位置编码。送入第一层的是一串带顺序信号的向量;层与层之间传递的也保持为同宽度的序列表示。
进入标准层后,自注意力在序列位置之间汇总信息,前馈网络再逐位置变换,残差连接把子层输入与输出相加。因为这些操作都围绕统一的序列形状组织,上一层的输出可以直接成为下一层的输入,这正是标准层能够反复堆叠的接口条件。
这里需要严格区分“核心层接收向量序列”和“任意原始数据都已被证明可直接使用同一架构”。本页现有来源只支持原始 Transformer 中 token 嵌入、位置编码以及编码器—解码器的数据流,不能据此推出图像切块、ViT、音频、视频、蛋白质或跨模态注意力等后续方案。
若要把 Transformer 接到另一类原始对象上,仍需说明对象如何切分、怎样投影到 d_model、位置或结构信号如何注入,以及输出如何解释;这些设计必须由相应模态的材料单独支持。仅仅说“都能变成向量”,不足以证明适配方法、参数共享方式或任务效果。
8为什么它改变了一切综合
Transformer 的历史意义,在于它让大规模序列模型更适合用现代加速硬件训练,并为模型规模持续扩大提供了可行的结构路径。
经典 RNN 按时间步处理序列:后一个时间步依赖前一个时间步的状态,因此同一条序列中的许多计算必须依次进行。Transformer 在训练时把多个序列位置的计算组织成大规模矩阵运算,使这些位置能够更充分地并行处理。矩阵运算与 GPU、TPU 的计算方式更匹配,因此硬件利用率显著提高。
这种计算结构也更容易与不同层面的并行策略结合。训练可以在数据维度分配不同样本,在张量维度拆分大型计算,也可以把不同层安排成流水线。再加上残差与归一化所支持的稳定深层堆叠,以及不同模态都能采用的统一序列接口,扩大参数量、训练数据和计算投入变得更可行。Transformer 因而不是单纯替换了一种序列模型,而是打通了通往大规模训练的重要道路。
可扩展并不等于没有代价。注意力随序列长度增加会带来显著开销,设备间通信与显存容量会限制模型和上下文规模;在自回归生成中,下一个 token 仍然依赖已经生成的前缀,推理过程不能像训练时那样把所有输出位置一次并行算完,因此延迟依旧是硬约束。
模型规模扩大后的效果也不能全部归功于 Transformer 这个单一模块。缩放表现还依赖训练目标、数据质量、优化方法和硬件系统。Transformer 的关键贡献是把可并行训练、深层堆叠和统一序列处理结合在一起,提供了更适合扩展的基础结构;最终能力则来自这套结构与数据、算法和系统工程的共同作用。
9把整条因果链连起来综合
Transformer 把从 token 向量到深层可训练模型的过程组织成一条完整因果链。注意力首先解决位置之间如何传递信息,但只靠注意力还不是一个完整的大模型结构;还需要把信息交互、特征变换和深层优化所需的组件封装成能够反复堆叠的标准层。
每一层包含两类主要计算与两类结构配件。多头注意力在不同位置之间读取和汇总内容,前馈网络再对每个位置独立进行非线性变换;残差连接保留进入子层前的主干表示,层归一化控制子层输入的数值尺度。一次前向传播中,注意力先把跨位置内容写入当前 token,前馈网络随后加工这个位置已有的特征,而两次残差相加都让原有信息继续沿主干传递。
这四类组件之所以能形成闭环,是因为模型不仅要有表达能力,还要能够训练。注意力和前馈网络提供实际的信息处理能力;残差连接为反向传播提供较短的梯度路径,层归一化则减少输入尺度随深度失控的风险。前两者回答“一层能计算什么”,后两者回答“这样的层如何堆得更深并保持可优化”。
token 的顺序如何进入计算链,还取决于注意力的可见范围。不含位置表示、因果掩码等顺序信号的全连接自注意力对排列等变;加入位置表示后,模型能在内容关系之外利用顺序关系。固定因果掩码也会按位置限制可见前缀,因此不能把这一等变结论推广到所有缺少显式位置编码的解码器。
同一标准层可以通过改变信息可见范围与连接方式形成不同任务骨架。编码器允许位置利用更完整的上下文;解码器用受限的可见范围支持逐步生成;编码器与解码器组合时,解码器还可通过交叉注意力读取编码后的输入。架构由此适配理解、生成和输入到输出的转换任务。
这套结构并不只限于文字。只要对象能够表示成 token 序列,Transformer 就可以处理这些向量之间的关系,因此能扩展到图像、音频等模态。与此同时,序列位置计算可以组织为适合硬件的大规模矩阵运算,深层结构又有残差和归一化提供优化条件,两者共同提高了模型的可扩展性。
整条链路可以概括为:原始对象→token 向量与位置表示→多头注意力进行跨位置汇总→前馈网络逐位置加工→残差保留主干、归一化控制尺度→标准层反复堆叠→按可见范围组合成不同架构。Transformer 相对单独的注意力机制多做的,正是把信息传递装入一个完整、可训练、可扩展的深层模块。它为大模型规模化提供了关键结构条件,但实际规模仍然受到算力、数据和系统条件的约束。
12概念依赖与延伸学习路线
理解 Transformer 可以沿“先修基础→核心结构→相邻主题→更远工程问题”的层级展开。各层并非彼此孤立,而是从基本表示与训练机制逐步走向模型规模化和实际应用。
先修概念包括注意力机制、神经网络、残差连接、梯度消失和嵌入。嵌入解释了原始符号如何变成可计算的向量;神经网络提供参数化变换的基本框架;注意力机制说明不同位置之间如何选择并汇总信息;残差连接与梯度消失则帮助理解为什么网络加深后需要更直接的信息和梯度路径。这些概念共同构成理解 Transformer 数据流与训练条件的基础。
Transformer 的核心知识集中在五个方面:可堆叠标准层说明模型如何由统一积木逐层加深;“四件套”说明注意力、前馈、残差和归一化如何分工;位置编码补足序列顺序信息;编码器、解码器及其组合展示同一积木如何形成不同的信息可见范围与任务结构;模态无关性则说明这种架构为何能够处理不同来源的 token 序列。
掌握核心结构后,可以紧接着学习大语言模型、缩放定律、多模态和上下文窗口。大语言模型把 Transformer 用于大规模语言建模;缩放定律关注模型、数据与算力扩大时的整体表现;多模态把统一序列处理扩展到不同信息类型;上下文窗口则聚焦模型一次能够处理的上下文范围。这些主题都直接延伸了 Transformer 的结构能力与规模边界。
更远一层的学习包括混合专家 MoE、推理优化、预训练和微调。MoE 探索不同的参数组织与激活方式,推理优化关注模型运行阶段的效率,预训练与微调则对应模型获得通用能力以及适配具体任务的训练过程。沿这一顺序学习,可以先建立 Transformer 的结构因果链,再进入规模、模态、训练和部署层面的系统问题。
| 学习层级 | 涉及概念 |
|---|---|
| 先修 | 注意力机制、神经网络、残差连接、梯度消失、嵌入 |
| 本页核心 | 可堆叠标准层、四件套、位置编码、编码器/解码器变体、模态无关 |
| 紧邻延伸 | 大语言模型、缩放定律、多模态、上下文窗口 |
| 更远 | 混合专家 MoE、推理优化、预训练、微调 |
- Vaswani et al., Attention Is All You Need:原始架构、缩放点积注意力、位置编码与并行性。
- Dao et al., FlashAttention:标准注意力的内存访问瓶颈与精确高效实现。
- Xiong et al., On Layer Normalization in the Transformer Architecture:Pre-LN/Post-LN 差异,说明“标准层”存在重要变体。
Meng et al. — Locating and Editing Factual Associations in GPT (NeurIPS 2022):特定自回归 Transformer 中间层前馈模块参与事实关联存储、定位与编辑;不表示所有知识仅存在于前馈网络。
Raffel et al. — Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (JMLR 2020):T5 的编码器—解码器文本到文本框架及问答、摘要等任务用途。