字体大小
第五编 注意力机制与大语言模型的形成 · 05_第五编_注意力机制与大语言模型的形成/第19章_Transformer的数学原理/chapter.md

第19章 Transformer的数学原理

本章核心问题

如果第18章已经说明注意力机制能够让模型动态访问历史信息,那么更进一步的问题就是:是否可以不再把注意力当作 RNN 的辅助模块,而是直接让它成为整个序列建模架构的中心?

更具体地说,本章要回答:Transformer 为什么要以自注意力为主干来重构序列建模;Query、Key、Value 如何把“相关性匹配”和“信息内容”明确分离;缩放点积注意力、多头注意力、位置编码、残差连接与层归一化分别解决了什么数学问题;以及为什么 Transformer 会成为后续大规模预训练与大语言模型的统一架构基础。

1. 问题背景

第18章已经说明,注意力机制的提出改变了序列建模对“记忆”的基本理解。历史不必在编码阶段一次性压缩成固定向量,模型可以在每一步计算时,动态访问最相关的历史表示。这一步极其关键,因为它第一次突破了编码器—解码器固定压缩瓶颈,也使“对齐”从人工规则变成了可学习的数学机制。

但第18章也清楚指出,早期注意力仍然附着在 RNN 编码器—解码器结构上。也就是说,尽管解码器已经能够动态查看源端信息,整体计算仍然主要依赖循环递推。序列各位置的表示仍然需要一位一位地更新,长序列训练的并行效率问题并没有被根本解决。于是,一个更深的问题自然浮现出来:既然注意力已经提供了任意位置之间直接建立联系的能力,那么为什么序列建模还必须以循环路径作为主干?

这就是 Transformer 出现的真正背景。它并不是在注意力机制上加几个工程改进,而是做出一个更激进的判断:如果序列中任意两个位置之间的依赖都可以通过注意力直接建模,那么序列表示也许不必再依赖单一路径递推,而可以通过全局自注意力一次性建立位置之间的关系。换言之,Transformer 的问题意识并不是“怎样让 RNN 更强”,而是“如何让注意力本身成为架构中心”。

这一变化的历史意义非常深。第四编中的序列模型一直在回答“如何压缩历史”,从 n-gram 的固定窗口,到 HMM 的有限状态,再到 RNN 的连续隐状态;而 Transformer 则进一步提出,也许问题根本不应主要被理解成“如何压缩历史”,而应被理解成“如何让当前位置与全序列中的相关位置直接交互”。这是一次从状态压缩范式到关系建模范式的转变。

从全书位置看,第19章是第五编的核心枢纽。第18章提出了注意力机制,第19章则把它提升为完整架构原则;后面的预训练语言模型、大语言模型、对齐技术和多模态扩展,几乎都建立在这一架构基础之上。因此,本章不只是讨论一个模型,而是在讨论现代大模型时代最关键的数学框架是如何形成的。

2. 数学原理

2.1 自注意力为何不同于早期注意力

在第18章的注意力机制中,解码器状态 $s_t$ 作为查询,源端表示 $h_1,\dots,h_T$ 作为候选信息来源,模型据此计算当前上下文 $c_t$。这种结构本质上是在两个不同序列之间建立注意力:一个是当前解码序列的内部状态,另一个是源序列表示集合。

Transformer 的关键推进,是把这种“跨序列注意力”推广为“序列内部各位置之间的自注意力”。设输入序列表示矩阵为

$$ X=(x_1,x_2,\dots,x_T)^\top\in\mathbb R^{T\times d}, $$

其中 $x_t\in\mathbb R^d$ 表示第 $t$ 个位置的输入表示,$T$ 表示序列长度,$d$ 表示表示维数。自注意力的目标,是让每个位置 $t$ 在更新自己的表示时,不只看自身,而是根据与序列中全部位置的关系来聚合信息。

这一步的意义非常重大。它意味着序列建模不再默认依赖“前一个状态如何传到后一个状态”,而是直接把序列写成一个由所有位置相互作用构成的整体。也就是说,Transformer 的核心对象不是递推链条,而是位置之间的全局关系图。

2.2 Query、Key、Value 为什么要分开

为了让“相关性匹配”和“信息内容传递”分离,自注意力把每个输入位置表示 $x_t$ 映射成三类向量:

$$ q_t=W_Q x_t,\qquad k_t=W_K x_t,\qquad v_t=W_V x_t, $$

其中 $q_t$ 表示第 $t$ 个位置的 Query,$k_t$ 表示 Key,$v_t$ 表示 Value;$W_Q,W_K,W_V$ 分别是三个可学习线性映射矩阵。若把全序列写成矩阵形式,则可记为

$$ Q=XW_Q,\qquad K=XW_K,\qquad V=XW_V. $$

这里 $Q,K,V$ 都是由输入序列表示线性变换得到的新矩阵。

为什么要做这样的拆分?因为在注意力机制中,一个位置既要表达“我当前在寻找什么”,也要表达“我能被别人怎样匹配到”,还要表达“若别人选择了我,我真正提供什么信息”。这三件事在概念上并不完全相同。Query 负责提出当前需求,Key 负责被比较时的索引特征,Value 负责最终传递内容。把它们分开后,模型就可以分别学习“如何比较相关性”和“如何传递信息”。

这一步是 Transformer 数学结构中的关键精炼。第18章已经把注意力骨架抽象为 query、key、value 的形式,而在 Transformer 中,这种抽象第一次成为整个架构的基础语言。

2.3 缩放点积注意力如何计算

给定 Query、Key 和 Value 之后,自注意力的核心计算是:先用 Query 与 Key 计算相关性,再用该相关性对 Value 做加权求和。Transformer 中最经典的形式是缩放点积注意力:

$$ \mathrm{Attention}(Q,K,V)=\mathrm{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V. $$

这里 $d_k$ 表示 Key 向量的维数,$QK^\top$ 表示所有 Query 与所有 Key 之间的点积矩阵。这个公式需要逐步解释。

首先,

$$ QK^\top $$

给出的是所有位置之间的两两相似性分数矩阵。若第 $i$ 行第 $j$ 列元素较大,表示第 $i$ 个位置的 Query 与第 $j$ 个位置的 Key 匹配程度较高。

其次,除以

$$ \sqrt{d_k} $$

是一个缩放步骤。之所以需要它,是因为当维度 $d_k$ 较大时,点积的数值幅度会随维度增大而增大,从而使 softmax 容易进入过度尖锐区域,导致梯度变差。缩放的作用,就是把分数维持在更稳定的数值范围内。

最后,对分数矩阵做 softmax 后,再乘以 $V$,就得到每个位置根据全序列信息更新后的表示。这个过程完全对应第18章的“打分、归一化、加权求和”三步,只不过这里所有位置一起并行计算。

2.4 单个位置的自注意力如何理解

虽然矩阵公式非常紧凑,但为了真正理解 Transformer,最好回到单个位置的角度。设第 $i$ 个位置的 Query 为 $q_i$,所有位置的 Key 与 Value 分别为 $k_j,v_j$,则该位置对第 $j$ 个位置的未归一化分数为

$$ e_{ij}=\frac{q_i^\top k_j}{\sqrt{d_k}}. $$

把这些分数归一化后,得到注意力权重

$$ \alpha_{ij}=\frac{\exp(e_{ij})}{\sum_{m=1}^T \exp(e_{im})}. $$

于是,第 $i$ 个位置更新后的表示写成

$$ z_i=\sum_{j=1}^T \alpha_{ij} v_j. $$

这个公式的含义非常清楚:位置 $i$ 会查看全序列中所有位置 $j$ 的 Value,但每个位置被参考的程度由当前 Query 和对应 Key 的匹配度决定。换言之,当前表示不是由固定窗口或递推前态决定,而是由“与全序列中哪些位置最相关”决定。

这正是 Transformer 能够直接处理长距离依赖的核心原因。两个位置之间无论距离多远,只要它们的 Query-Key 匹配度高,就可以在一次注意力计算中直接建立联系,而不必经过多步递推传递。

2.5 多头注意力为何不是简单重复

若只有一组 Query、Key、Value 投影,模型可能倾向于在单一关系模式上聚焦。Transformer 因此进一步引入多头注意力。设头数为 $H$,则第 $h$ 个头可写成

$$ \mathrm{head}_h=\mathrm{Attention}(QW_Q^{(h)},KW_K^{(h)},VW_V^{(h)}), $$

其中 $W_Q^{(h)},W_K^{(h)},W_V^{(h)}$ 是第 $h$ 个头各自的投影矩阵。然后把所有头的输出拼接起来,再做一次线性映射:

$$ \mathrm{MultiHead}(Q,K,V)=\mathrm{Concat}(\mathrm{head}_1,\dots,\mathrm{head}_H)W_O. $$

这里 $W_O$ 是输出投影矩阵。多头注意力的意义不在于“把同样的事情做很多遍”,而在于允许不同头在不同子空间中学习不同类型的关系模式。有的头可能更关注局部邻接关系,有的头可能更关注长距离依赖,有的头可能更关注句法匹配,有的头则可能更偏向语义对齐。

因此,多头机制在本质上扩展的是关系表达能力。它让模型不必把所有序列关系压缩成单一加权模式,而能并行捕捉多种相互重叠的依赖结构。

2.6 位置编码为何是必需的

自注意力本身只看 Query 与 Key 的内容匹配,并不天然知道序列顺序。若输入表示集合被任意重排,而对应的 Query、Key、Value 也一同重排,则纯自注意力计算对这种重排是等变的。换言之,若不额外注入位置信息,模型很难区分“同样的词出现在第 1 个位置”和“同样的词出现在第 10 个位置”。

因此,Transformer 必须显式加入位置编码。设原始词表示为 $e_t$,位置编码为 $p_t$,则输入层常写成

$$ x_t=e_t+p_t. $$

这里 $e_t$ 表示第 $t$ 个位置对应的词或 token 表示,$p_t$ 表示该位置的位置编码。最经典的正弦位置编码写成

$$ p_t^{(2i)}=\sin\left(\frac{t}{10000^{2i/d}}\right),\qquad p_t^{(2i+1)}=\cos\left(\frac{t}{10000^{2i/d}}\right), $$

其中 $i$ 表示维度索引,$d$ 表示表示维数。这个设计的直观意义是:用不同频率的正弦和余弦函数,把位置信息编码进向量空间,使模型既能区分绝对位置,也更容易通过线性组合表达相对位移关系。

位置编码这一部分特别重要,因为它说明:Transformer 虽然摆脱了递推结构,却并没有忽略顺序;它只是把顺序信息从“递推路径隐式携带”改成了“位置表示显式注入”。

2.7 前馈层、残差连接与层归一化为何缺一不可

Transformer 不仅仅由注意力组成。标准编码器块通常包含两层主要子结构:多头自注意力层和逐位置前馈网络层。若记注意力子层输出为

$$ \mathrm{MHA}(X), $$

前馈子层为

$$ \mathrm{FFN}(X)=W_2\,\sigma(W_1X+b_1)+b_2, $$

则一个典型的 Transformer 块会在每个子层周围加入残差连接与层归一化。抽象写法可记为

$$ Y=\mathrm{LayerNorm}(X+\mathrm{MHA}(X)), $$

以及

$$ Z=\mathrm{LayerNorm}(Y+\mathrm{FFN}(Y)). $$

这里残差连接的作用,是让信息和梯度可以更稳定地跨层流动,缓解深层训练困难;层归一化的作用,则是稳定各层内部表示的数值尺度,使训练更加平稳。前馈层则负责在每个位置上进一步做非线性变换,提高表示能力。

因此,Transformer 的成功并不只来自注意力公式本身,而来自一整套结构:全局关系建模、自适应多头表示、显式位置信息、稳定深层训练机制,这些共同构成了现代序列建模的新骨架。

2.8 掩码机制如何支持自回归生成

若任务是编码器理解,位置之间通常可以双向互看;但若任务是自回归生成,例如根据前文预测下一个词,则当前位置不应看到未来 token。Transformer 通过掩码矩阵来实现这一点。

设注意力分数矩阵为

$$ S=\frac{QK^\top}{\sqrt{d_k}}, $$

若第 $i$ 个位置不允许看到第 $j$ 个位置,则在 softmax 前把该位置加上一个极小值掩码,得到

$$ \tilde S_{ij}= \begin{cases} S_{ij}, & j\le i,\\ -\infty, & j>i. \end{cases} $$

然后计算

$$ \mathrm{softmax}(\tilde S)V. $$

这意味着未来位置在 softmax 后获得的权重为 0,从而保证模型在训练和推理时都只能使用过去上下文。掩码机制的意义在于,它说明同一个自注意力框架既可以用于双向编码,也可以通过结构约束用于单向生成。这种统一性,正是 Transformer 极具扩展性的原因之一。

2.9 Transformer 为何构成序列建模范式重构

把前面几节连起来,可以看到 Transformer 并不是对 RNN 的局部修补,而是对序列建模基本形式的重构。首先,它把“历史如何传递”从递推路径问题改成了“位置之间如何直接建立关系”问题。其次,它把第18章的注意力机制从辅助模块提升为中心算子。再次,它通过多头、自注意力、位置编码、残差和归一化,构成了一种既能并行训练、又能建模全局依赖的统一架构。

因此,Transformer 的真正突破不只是性能提高,而是把序列建模的主语言从“状态递推”改写成了“关系计算”。也正因为如此,它才会成为后续预训练语言模型和大语言模型时代几乎不可替代的统一架构基础。

3. 代表模型或算法

3.1 Transformer 编码器—解码器

最初的 Transformer 结构包含编码器和解码器两部分。编码器负责把输入序列表示成一组上下文化表示,解码器则在自回归生成时,一边通过掩码自注意力处理目标前缀,一边通过交叉注意力访问编码器输出。训练方式上,通常通过最大化条件序列概率进行端到端优化;推理方式上,则逐步生成目标序列。

它在本章中的典型性极强,因为它最完整地展示了 Transformer 的原始问题场景:不是单纯做编码,也不是单纯做生成,而是在统一的注意力框架中完成序列到序列映射。

3.2 自回归 Transformer

自回归 Transformer 是后续语言模型路线中最关键的变体之一。结构上,它主要保留解码器式掩码自注意力堆叠,不再需要单独编码器;训练方式上,通常以 next-token prediction 为目标;推理方式上,则依靠历史 token 逐步生成下一个 token。

它在本章中的典型性在于:它最清楚地展示了 Transformer 如何从翻译架构进一步演化成通用生成模型的骨架,并最终成为 GPT 路线和大语言模型的直接前身。

4. 典型应用

4.1 机器翻译

机器翻译是 Transformer 最早取得决定性成功的场景之一。设源序列编码后得到表示矩阵

$$ H\in\mathbb R^{T\times d}, $$

目标端解码状态表示矩阵为

$$ S\in\mathbb R^{T'\times d}. $$

在这个任务中,本章的数学对象有明确对应关系:编码器自注意力负责在源句内部建立全局依赖,解码器掩码自注意力负责建模目标端已生成前缀,交叉注意力则负责目标端当前位置对源句所有位置的动态访问。也就是说,Transformer 在翻译中的突破,并不是简单替代 RNN,而是把“源端内部关系”“目标端内部关系”和“源—目标对齐关系”统一到同一注意力框架中。

4.2 文本理解

在文本理解任务中,例如句子分类、自然语言推断或问答,模型往往需要同时整合局部信息与长距离依赖。RNN 虽然理论上能够处理长上下文,但其串行递推和路径长度问题会影响效率和效果。Transformer 编码器则可以通过自注意力,在一次层内计算中让任意两个位置直接交互。

这里本章的数学内容在应用中的对应关系尤其清楚:QKV 机制决定哪些词之间应建立强联系,多头注意力允许模型并行捕捉不同类型的语义和句法关系,位置编码保留顺序结构,残差和层归一化保证深层训练稳定。因此,文本理解中的成功,实际上就是“全局关系建模”这一数学思想在语言任务中的直接兑现。

4.3 序列生成

在一般序列生成任务中,模型需要根据过去上下文持续生成后续输出。自回归 Transformer 在这里的核心数学结构,就是掩码自注意力:

$$ \tilde S_{ij}= \begin{cases} S_{ij}, & j\le i,\\ -\infty, & j>i. \end{cases} $$

这个掩码保证当前位置只能访问过去 token,而不能泄露未来信息。与 RNN 相比,虽然生成时仍需逐步展开,但训练阶段可以并行计算整段序列上的条件分布。这使序列生成从“完全递推训练”转向“并行训练 + 自回归推理”的新范式。

4.4 后续大语言模型

Transformer 对后续大语言模型的意义不只是“又一个表现好的架构”,而是它提供了一种规模扩展非常自然的统一形式。给定足够大数据、足够大参数和足够强算力,自回归 Transformer 可以直接用 next-token prediction 目标做大规模预训练。

在这个应用中,本章的数学对象与后续大模型几乎完全同构:自注意力负责长上下文关系建模,多头机制负责不同关系模式的并行表达,位置编码负责顺序信息注入,掩码机制负责自回归约束,残差与归一化负责深层可训练性。也就是说,后面的大语言模型并不是脱离 Transformer 的新物种,而是这一章数学架构在更大规模上的继续展开。

5. 局限性与历史转折

Transformer 虽然完成了序列建模的范式重构,但它并非没有代价。最直接的问题是,自注意力通常需要构造长度为 $T$ 的序列之间的两两关系矩阵,因此计算与存储开销往往随序列长度增长到

$$ O(T^2). $$

当上下文很长时,这会成为明显负担。也就是说,Transformer 在摆脱 RNN 串行路径瓶颈的同时,引入了新的长序列计算复杂度问题。

其次,Transformer 虽然高度并行、全局建模能力强,但它本身并不会自动解决“如何获得足够知识和能力”的问题。架构只是基础,真正让它形成大规模语言能力的,还需要大语料预训练、合适目标函数和规模化训练策略。换言之,本章解决的是“什么架构适合大规模序列建模”,而不是“如何让这种架构学出通用语言能力”的全部问题。

然而,与 RNN 相比,Transformer 的可扩展性已经明显更优。正因为它更适合并行训练、更容易利用现代硬件、也更擅长建模全局依赖,它迅速成为大规模预训练的首选架构。这就自然把第五编继续推向下一阶段:一旦有了这样一种统一而可扩展的架构,研究者会进一步追问,若在海量语料上用统一目标去训练它,会发生什么?这正是第20章预训练语言模型建立的历史背景。

6. 本章小结

本章讨论了 Transformer 如何通过自注意力机制重构序列建模的基本形式。核心结论是:Transformer 不再把序列表示建立在单一路径递推状态上,而是通过 Query、Key、Value、自注意力、多头机制、位置编码和深层稳定训练结构,把序列建模改写成位置之间的全局关系计算。

它在 AI 发展史上的意义,在于它不是对 RNN 的局部改良,而是一种序列建模范式的重构。也正因为如此,Transformer 成为后续预训练语言模型和大语言模型时代的统一架构基础。

关键公式

$$ Q=XW_Q,\qquad K=XW_K,\qquad V=XW_V $$
$$ \mathrm{Attention}(Q,K,V)=\mathrm{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V $$
$$ z_i=\sum_{j=1}^T \alpha_{ij} v_j $$
$$ \mathrm{MultiHead}(Q,K,V)=\mathrm{Concat}(\mathrm{head}_1,\dots,\mathrm{head}_H)W_O $$
$$ x_t=e_t+p_t $$
$$ Y=\mathrm{LayerNorm}(X+\mathrm{MHA}(X)) $$

关键概念

  • Transformer
  • 自注意力
  • Query、Key、Value
  • 缩放点积注意力
  • 多头注意力
  • 位置编码
  • 残差连接
  • 层归一化