第 1 章 AI 算法概述
第1章 AI 算法概述
本章覆盖 Transformer 的原理与架构主线:从 NLP 范式演进与循环网络的结构性缺陷出发,追溯注意力机制的起源,剖 析自注意力与多头机制的数学细节,拼装完整的编解码器架构并与 RNN/CNN 系统对比,最后回顾论文发表以来大模型时 代的演进。输入表示、位置编码与训练技术的具体实现不在本章展开。
1.1 从 NLP 到 Transformer
自然语言处理(Natural Language Processing, NLP)是人工智能领域历史最悠久的分支之一。从 1950 年代图灵测试的 提出,到 2020 年代大语言模型的涌现,NLP 经历了三次范式转移:规则驱动、统计学习、深度学习。每一次转移都伴随 着方法论的根本变革和能力的指数级跃升,如图1-1 所示。
1.1.1 规则驱动的时代
1950 年代至 1980 年代,NLP 主要依赖手工编写的语法规则和词典。乔姆斯基(Noam Chomsky)的形式语言理论为这 一时期提供了理论基础:语言被视为由一组产生式规则生成的符号序列。代表性系统包括 ELIZA(1966 年,MIT)和 SHRDLU(1970 年,MIT),前者模拟心理治疗师对话,后者在受限的积木世界中理解自然语言指令。 这一阶段的局限明显:规则无法覆盖自然语言的歧义性和多样性。词汇的多义性、句法的灵活性、语用的上下文依赖性, 使得纯规则系统难以扩展到真实场景。1980 年代末,研究者开始将目光投向数据驱动的方法。
1.1.2 统计机器学习的崛起
1990 年代至 2000 年代,统计方法逐步取代规则系统。语言模型从 N-gram 的频次统计出发,引入平滑技术(如 Kneser- Ney)解决数据稀疏问题。隐马尔可夫模型(HMM)和条件随机场(CRF)在词性标注和命名实体识别等序列标注任务中 取得突破。 机器翻译领域的变化尤为显著:1990 年 IBM 提出了基于词对齐的统计机器翻译模型(Brown et al.),2003 年 Och 与 Ney 将翻译建模为对数线性模型,BLEU 评测指标的确立(Papineni et al., 2002)为系统比较提供了量化标准。统计 NLP 的核心思想——从数据中学习概率分布而非人工编写规则——为深度学习的登场铺平了道路。
1.1.3 深度学习的转折点
2010 年前后,两个因素推动 NLP 进入深度学习时代:词向量的成熟和 GPU 算力的普及。Mikolov 等人提出的 Word2Vec (2013 年)利用 CBOW 和 Skip-gram 架构,将词语映射到低维稠密向量空间,语义相似的词在向量空间中具有相近的表 示。GloVe(Pennington et al., 2014)进一步引入了全局共现矩阵因子化。 然而,深度学习取代统计方法并非一夜之间。关键性的过渡工作始于 Bengio 等人(2003 年)的神经概率语言模型(首 次将词的分布式表示与神经网络联合训练),以及 Collobert 与 Weston(2008 年,发表于 ICML 2008;2011 年发表于 JMLR)提出的统一 NLP 架构,用一个卷积神经网络同时处理多种标注任务,开创了多任务学习的先河。这些工作为后续 词向量技术和 Seq2Seq 架构提供了方法论基础。 这一时期的标志性模型是序列到序列(Seq2Seq)架构(Sutskever et al., 2014)和注意力机制(Bahdanau et al., 2014)。Seq2Seq 将编码器-解码器框架与循环神经网络(RNN)结合,在机器翻译、文本摘要任务中大幅超越统计方 法。注意力机制解决了长序列的信息瓶颈问题,为 Transformer 的诞生埋下了伏笔。
1.1.4 注意力成为关键组件
2014 年至 2017 年是序列建模快速迭代的三年。Seq2Seq 架构成为文本生成任务的标准范式:Bahdanau 注意力使解码 器在每个时间步动态访问编码器的所有隐藏状态,显著提升长句翻译质量;Luong 注意力提出全局与局部两种变体,并 将点积引入打分函数。两类机制的完整设计在本章注意力起源部分展开。 与此同时,ELMo(Peters et al., 2018)提出上下文相关的词表示,为预训练时代的到来埋下伏笔;卷积神经网络在文本 分类和机器翻译中展现出与 RNN 竞争的性能,说明序列建模未必依赖递推结构。尽管这些进展持续推动性能边界,底层 架构仍受限于 RNN 的串行计算本质,这成为 2017 年 Attention Is All You Need 要解决的核心问题。 1950s: Rule-Based System 1990s: Statistical NLP 2013: Word2Vec 2014: Seq2Seq + Attention 2017: Transformer 2018: BERT / GPT 2022: ChatGPT 2023: GPT-4 s 图1-1 NLP 发展的关键里程碑
1.1.5 Attention Is All You Need
2017 年 6 月,Vaswani 等八位作者(来自 Google Brain 与 Google Research)在 arXiv 上提交了题为 Attention Is All You Need 的论文。论文的核心主张可以从标题直接读出:注意力机制足以替代此前被视为序列建模必需的循环和卷积结 构。Transformer 完全由堆叠的自注意力和前馈网络层构成,没有任何循环单元或卷积核。 实验结果支持了这一主张。在 WMT 2014 英德翻译任务上,Transformer 的 BLEU 分数达到 28.4,超越此前所有单模型 结果;英法翻译任务的 BLEU 达到 41.0。更引人注目的是训练效率:Transformer 在 8 块 NVIDIA P100 GPU 上训练 3.5 天,而当时的最优模型通常需要数倍于此的计算量。 论文的八位作者——Ashish Vaswani、Noam Shazeer、Niki Parmar、Jakob Uszkoreit、Llion Jones、Aidan N. Gomez、Lukasz Kaiser 和 Illia Polosukhin——在接下来的数年间成为 AI 领域的核心人物,其中多位后续创立或参与了 Character.AI、Cohere 等公司。
1.2 循环网络的困境
序列数据(文本、语音、时间序列)的核心特点是元素之间的顺序依赖。在 Transformer 出现之前,循环神经网络 (RNN)及其变体是处理这类数据的主力架构,其串联计算范式在长序列上暴露了根本性缺陷,最终催生了全新的注意 力机制。
1.2.1 RNN 的梯度消失与爆炸
RNN 在每个时间步维护一个隐藏状态,通过共享的权重矩阵在时间轴上迭代更新。当序列长度 T 增加时,反向传播穿过 T 个时间步,梯度被同一组权重矩阵反复相乘。 对于简单的线性 RNN(h = W h ),BPTT 梯度精确为 W 的 T 次连乘,即 ∏ W 。对于标准 Elman RNN(h = ⊤ T ⊤ tanh(W h + W x )),梯度还包括激活函数导数的对角矩阵 diag(tanh (⋅)),与 W 共同构成链式乘积。若 W 的特征 t t−1 t=1 t ′ ⊤ 值 λ > 1,梯度指数增长(梯度爆炸);若 λ < 1,梯度指数衰减(梯度消失)。梯度消失意味着模型无法学习长距离依赖 hh t−1 xh t hh ——序列开头的词对序列末尾的预测几乎不产生影响。 梯度裁剪(gradient clipping)可以缓解爆炸,但消失问题无法根治,它从根本上限制了 RNN 的有效上下文窗口。
1.2.2 LSTM 与 GRU 的改进
长短期记忆网络(LSTM, Hochreiter & Schmidhuber, 1997)通过门控机制缓解了梯度消失问题。LSTM 引入了三个门: 遗忘门、输入门和输出门,以及一个独立于隐藏状态的细胞状态(cell state)。 细胞状态 c 的更新路径仅涉及逐元素加法和乘法,梯度沿时间反向传播时不必反复乘以权重矩阵,因此信息可以无损地 跨越数百个时间步。Hochreiter 将其称为恒定误差旋转木马(Constant Error Carousel, CEC)。 t 门控循环单元(GRU, Cho et al., 2014)将 LSTM 简化为两个门:重置门和更新门,去掉了独立的细胞状态。GRU 参数更 少,训练更快,在许多任务上与 LSTM 性能相当,因此在 Seq2Seq 架构中得到了广泛应用。
1.2.3 有效上下文的边界
门控机制缓解了梯度消失,却无法改变串行递推这一结构本身。实践中,标准 RNN 的有效记忆长度通常在 10 到 20 个时 间步以内;LSTM 和 GRU 将其扩展到约 100 至 200 个时间步,超过此范围后信息衰减和训练低效仍然显著。对典型句子 这已够用,但对篇章级翻译、文档理解等动辄数百词的任务,这一窗口远远不足。 更深层的障碍在于训练效率:串行依赖使 GPU 的数千个计算核心在每一步大量空闲,序列越长浪费越严重。结构缺陷与 效率缺陷相互叠加,推动研究者寻找能够一步访问全部位置的全新算子,注意力机制由此从辅助技巧走向舞台中央,如图 1-2 所示。 Input Sequence RNN Gradient Vanish/Explode LSTM: Cell State + Gates GRU: Fewer Gates, Faster Seq2Seq Architecture Attention as Workaround Transformer: Pure Attentio n 图1-2 从 RNN 到 Transformer 的序列建模演进
1.3 注意力机制的起源
注意力机制的诞生源于序列到序列(Seq2Seq)框架。理解这一框架是理解注意力的前提。
1.3.1 Seq2Seq 与上下文向量
- Seq2Seq 架构回顾 Sutskever 等人于 2014 年提出的 Seq2Seq 模型,将序列映射任务拆分为编码器(Encoder)与解码器(Decoder)两个 子网络。编码器读取变长输入序列 x = (x , …, x ),将其编码为固定长度的上下文向量 c;解码器以 c 为条件,自回归地 1 生成输出序列 y = (y , …, y )。 Tx Ty Input sequence x1,x2,...,xT Encoder (RNN) Context vector c Decoder (RNN) Output sequence y1,y2,..., yT' 图1-3 Seq2Seq 基本框架 数学上,编码器按时间步递推计算隐藏状态 h = f (x , h ),最终将末步状态作为上下文向量 c = h 。解码器以 s = g(y , s , c) 生成当前隐藏状态,再经输出层产生下一个词的条件概率分布,如图1-3 所示。 t t t−1 Tx t t−1 t−1 除 Seq2Seq 架构本身外,Sutskever 等人的核心创新是源句逆序输入(Reversing the Source Sentence)。在 WMT’14 英法翻译任务上,不逆序的 LSTM Seq2Seq 仅达 25.9 BLEU,将源句词序反转后升至 30.59 BLEU(提升 +4.7 点)。逆序 操作引入了大量短距离依赖:逆序后源句开头词(原句尾词)距目标句开头词仅 1–2 步,梯度传播路径大幅缩短,从而 显著降低了优化难度。最终,5 个逆序 LSTM 集成 + 束搜索(beam size 12)+ 从左到右重排序的完整系统在 WMT’14 EN→FR 测试集上取得 34.81 BLEU,逼近当时基于短语的 SOTA(37.0 BLEU),且未使用任何外部对齐数据或语言模型。 该论文同时揭示了一个关键现象:LSTM 编码器在输入序列长度约 20 词时 BLEU 开始下降,超过 35 词后性能急剧退化。 这一观察成为后续注意力机制研究的直接动机。Sutskever 等人采用的逆序技巧本质上也是一种隐式的注意力替代方案 ——通过人为构造短路径缓解信息衰减,而非像 Bahdanau 那样显式建模对齐关系。 关键论文:Sutskever et al., “Sequence to Sequence Learning with Neural Networks”, NeurIPS 2014.
- 编码器的信息压缩 编码器的核心任务是将变长的源序列压缩为一个固定维度向量。这一压缩过程是有损失的:序列越长,早期时间步的信息 在 RNN 梯度传播中衰减越严重。尽管 LSTM 和 GRU 的门控机制缓解了部分问题,压缩瓶颈依然存在。
Encoder pseudocode
h, c_state = initial_states for x_t in source_sequence: h, c_state = lstm_cell(x_t, (h, c_state)) context_vector = h # final hidden state as summary 编码器隐式假设最终隐藏状态 h 能完整表达整个输入序列的语义信息。这一假设在长句翻译任务中并不成立:一个 50 词的源语言句子,经过逐词递推后,开头几个词的语义特征在 h 中已基本不可辨认。 Tx 3) 解码器的条件生成 解码器在第 t 步生成输出 y 时,依赖三股信息:上一步输出 y (自回归先验)、自身历史状态 s ,以及编码器提供的 上下文向量 c。问题在于,c 在所有解码步中保持不变。 t t−1 t−1 这意味着无论解码器正在生成名词、动词还是介词,它看到的源语言信息完全一致。实践中,生成不同位置的词需要关注 源句的不同部分,固定上下文向量无法满足这一需求。 4) 上下文向量的瓶颈 固定长度上下文向量构成 Seq2Seq 框架的性能瓶颈,具体表现在三个方面: •信息容量受限:无论输入多长,编码器只能输出一个定长向量。Cho 等人 2014 年的实验表明,随着输入长度增加,模 型性能显著下降。 •时间折扣效应:RNN 的递推特性使近期输入权重远高于早期输入,源句开头的信息在上下文中几近消失。 •无对齐能力:解码器无法动态选择关注源句的哪些部分,丧失了翻译系统中天然存在的词对齐能力。 Long sentences (>50 words) Medium length (20-30 words) Short sentences (≤10 words) BLEU < 10 Severely degraded translat BLEU ≈ 20 Notably degraded translati BLEU ≈ 30 Acceptable translation qua ion quality on quality lity 图1-4 输入长度与翻译质量的关系 Bahdanau 等人在 2015 年的论文中通过实验证实了这一瓶颈:不引入注意力机制时,RNN 编码器-解码器在长句上的表 现远差于短句,如图1-4 所示。这一观察直接催生了注意力机制的提出。
1.3.2 Bahdanau 注意力
- 对齐模型的设计 面对固定上下文向量的瓶颈,Bahdanau、Cho 与 Bengio 于 2015 年在机器翻译任务中首次引入注意力机制,让解码器 在每一步动态查询编码器的所有隐藏状态,而非仅依赖末步向量。该机制的关键部件是对齐模型(Alignment Model): 一个小型前馈网络,输入为解码器前一时刻的隐藏状态 s 和编码器第 j 个隐藏状态 h ,输出一个标量能量值 e ,表示 解码器在第 i 步对源序列第 j 个位置的关注程度。 i−1 j ij eij = a(si−1 , hj ) = va⊤ tanh(Wa si−1 + Ua hj )
其中 W 、U 和 v 是可训练参数。这本质上是一个加性(additive)评分函数,将两个向量投影到同一空间后,通过非线 性激活和线性变换得到匹配分数,如图1-5 所示。 a a a Bahdanau 选择加性(additive/concat)评分函数而非更简洁的点积(dot-product)并非偶然。其编码器使用双向 GRU,每个位置产生 2 × 1000 = 2000 维的隐藏向量 h (前向 1000 维 + 后向 1000 维拼接),而解码器隐藏状态 s 为单 向 GRU 的 1000 维。两者维度不同,无法直接做内积。加性注意力通过 W ∈ R 和 U ∈ R 将 s 和 h 分别线 j i−1 n×1000 n×2000 性投影到共同的 n 维空间(论文中 n = 1000),再经 tanh 和 v 标量化。 a a i−1 j a 这一设计的理论优势在后续研究中得到证实:在编码器状态维度高于解码器的场景(如本节的 2000 维 vs 1000 维)下, 点积注意力必须先做维度适配,存在信息损失;而加性注意力天然支持异维向量匹配,无需额外维度适配层。Luong 等 人(2015)在其同维编码器-解码器上则可直接使用点积/General 评分,无需降维。此外,tanh 非线性提供了点积所没有 的非对称建模能力——tanh(W s + U h) 可以学习 s 的某些维度更适合匹配 h 的某些维度这类复杂交互模式,而点积 s h ⊤ 只能建模对称的线性相似度。 a a s(i-1) decoder state Concat & sum tanh activation v_a^T linear projection eij energy score hj encoder state 图1-5 Bahdanau 对齐模型计算流程 2) 注意力权重的计算 对于解码器的第 i 步,计算出所有源位置 j = 1, …, T 的能量值 e 后,通过 softmax 归一化得到注意力权重 α : x ij ij exp(eij ) αij = ∑Tk=1 x exp(eik ) 权重向量 α = (α , …, α ) 满足 ∑ α = 1,构成源序列位置上的概率分布。α 的值越大,表示解码器在当前步骤越关 注源序列的第 j 个词。 i i1 iTx j ij ij
# Attention weight computation
# encoder_states: (seq_len, hidden_dim)
# decoder_state: (hidden_dim,)
energy = v_a @ tanh(W_a @ decoder_state + U_a @ encoder_states.T) # (seq_len,)
alpha = softmax(energy) # (seq_len,), sum to 1- 加权上下文向量 获得注意力权重后,上下文向量 c 定义为编码器所有隐藏状态的加权和: i Tx ci = ∑ αij hj j=1
与前文编码器-解码器框架中固定的 c 不同,这里的 c 随解码步 i 变化。解码器在生成不同输出词时,可以从源序列的不 同位置获取信息。例如翻译 “I ate an apple” 为 “我吃了一个苹果”,生成“苹果”时模型会赋予 “apple” 更高的注 i 意力权重。 解码器的状态更新公式变为 s = g(y , s , c ),其中 c 成为解码步的函数,如图1-6 所示。 i i−1 i−1 i i Decoder (step i) Attention module Encoder s(i-1) Query all hj Return all hj Compute eij and alpha_ij Weighted sum produces ci ci si = g(yi-1, si-1, ci) Generate yi Decoder (step i) Attention module Encoder 图1-6 注意力机制下的解码器生成流程 4) 论文实验与效果 Bahdanau 等人在 WMT’14 英法翻译任务上验证了注意力机制的效果,关键发现如表1-1 所示: 训练长度 无注意力 (RNNencdec) 有注意力 (RNNsearch) 提升 30 13.93 21.50 +54% 50 17.82 26.75 +50% 表1-1 注意力机制对翻译质量的提升 最显著的效果体现在长句翻译上:根据论文 Figure 3 的 BLEU-句子长度曲线,无注意力模型(RNNencdec)在超过 30 词的句子中 BLEU 从约 30 跌至 10 以下,而注意力模型(RNNsearch)在 10–50 词区间内 BLEU 稳定在约 30,几乎不随 长度衰减。这证明了模型确实学会了动态对齐源句不同位置的信息。 注意力权重的可视化进一步验证了这一点:大多数 α 矩阵呈现沿对角线集中分布的模式,符合翻译中词序大体对应的直 觉。同时,某些对角偏移区域(如英语 “not” 与法语 “ne … pas” 的对应)体现了跨语言语序差异的自动学习。 ij 关键论文:Bahdanau et al., “Neural Machine Translation by Jointly Learning to Align and Translate”, ICLR 2015.
1.3.3 Luong 注意力扩展
- 全局注意力与局部注意力 Luong、Pham 与 Manning 在 2015 年提出了另一种注意力机制变体,与 Bahdanau 注意力几乎同时发布,两者共享核 心思想但在架构细节上存在重要差异。Luong 等人提出了两种注意力范式:全局注意力(Global Attention)与局部注意 力(Local Attention)。 全局注意力与 Bahdanau 注意力类似,解码器每一步考虑编码器的所有隐藏状态。计算公式为:
# Global attention: compute over
score = score_func(decoder_state, encoder_states) # (seq_len,)
alpha = softmax(score) # (seq_len,)
context = sum(alpha[j] * encoder_states[j] for j) # weighted sum局部注意力则仅聚焦于源序列的一个窗口区域,以提高计算效率。其思想源于 Xu 等人 2015 年在图像描述任务中的软/硬 注意力区分。局部注意力首先生成一个对齐位置 p (通过预测或简单假设 p = i 等),然后在 [p − D, p + D] 窗口内计算 注意力权重: i i i i exp(score(si , hj )) ⋅ exp (− (j−p 2σ 2 ) i) αij = pi +D exp(score(si , hk )) ⋅ exp (− (k−p 2σ 2 ) i) ∑k=p i −D 高斯项使窗口中心的词获得更高权重的先验偏向。局部注意力在长序列任务中显著降低了计算量,如图1-7 所示。 Local attention Global attention Predicts alignment positio Window [pi-D, pi+D] O(2D+1) per step Considers all encoder stat O(Tx) per step n pi es 图1-7 全局注意力与局部注意力的计算范围对比 2) 三种对齐评分函数 Luong 等人系统比较了三种评分函数(如表1-2 所示),用于计算解码器状态 s 与编码器状态 h 的匹配程度: i j 评分函数 公式 参数 Dot score(si , hj ) = s⊤ i hj 无参数 General score(si , hj ) = s⊤ i Wa h j Wa Concat score(si , hj ) = va⊤ tanh(Wa [si ; hj ]) Wa , v a 表1-2 三种对齐评分函数 Dot 函数最简单,假设 s 与 h 在同一向量空间中可直接比较。General 函数(也称乘法注意力)通过可学习矩阵 W 进 行双线性映射,增加了表达能力。Concat 函数与 Bahdanau 的对齐模型结构一致,但将 s 和 h 拼接后统一变换。 i j a i j 实验结果表明,在 WMT’14 英德翻译任务中,三种函数的表现接近,General 函数略优于 Dot。两者的参数效率明显高 于 Concat。 Luong 等人在 WMT’14 EN→DE 任务上的系统实验(论文 Table 1–2)提供了以下精确 BLEU 值: 全局注意力:Dot 17.04,General 17.32,Concat 16.99。General 相较 Dot 仅高出 0.28 BLEU(+1.6%),但无需 tanh 和额外线性层,参数效率显著优于 Concat(后者 BLEU 反低约 0.3 点)。 局部注意力(含高斯偏置):Local-p + General 取得 17.57 BLEU,是单模型最优结果。局部注意力在长句上的计算量约 为全局注意力的 1/2(窗口 D = 10,典型源句长度 40–50 词),且因高斯先验抑制了噪声位置的干扰,翻译质量反而略 优。 系统级结果:dropout + 8 模型集成 + 未知词替换(UNK replacement)后,Luong 系统在 WMT’15 EN→DE 测试集上 达到 25.9 BLEU,刷新当时 NMT 最高记录(此前最佳为 Jean 等人 2015 年的 24.9 BLEU)。输入馈送(Input Feeding) 机制的消融实验表明,移除该模块后 BLEU 下降约 1.2 点,验证了“注意力记忆”对解码连贯性的重要性。 3) 输入馈送与注意力结合 Luong 模型的一个关键设计是输入馈送(Input Feeding):将上一时刻的注意力上下文向量 c~ 拼接到解码器的输入 中,使模型在生成序列时持续感知过去的注意力决策。 i−1 si = RNN(si−1 , [embed(yi−1 ); c~i−1 ]) 这一设计让解码器拥有“注意力记忆”,避免了重复关注同一区域的问题。结合注意力机制的完整解码流程如图1-8 所 示: y(i-1) word embedding c_tilde(i-1) Concat RNN cell si decoder state Encoder states Attention computation c_tilde_i context Concat Output projection -> yi 图1-8 Luong 解码器中的输入馈送与注意力流程 4) 与 Bahdanau 的对比 尽管两者都实现了动态上下文向量,架构差异值得关注,如表1-3 所示: 维度 Bahdanau 注意力 Luong 注意力 时间步对齐 si−1 与所有 hj si 与所有 h j 维度 Bahdanau 注意力 Luong 注意力 评分函数 加性(Concat) 三种(Dot/General/Concat) 注意力范围 全局(所有位置) 全局或局部(窗口) 解码器结构 单向 RNN 可叠加多层、输入馈送 上下文使用 输入给 RNN 计算 si 与 s 拼接后做输出 i 表1-3 Bahdanau 与 Luong 注意力对比 核心区别在于计算顺序:Bahdanau 使用 s 计算注意力,再生成 s ;Luong 先生成 s ,再基于 s 计算注意力。Luong 的方式使得同一个 s 可以被用于多种注意力策略的比较,也便于在 s 层之上叠加更深的输出网络。 i−1 i i i i i 关键论文:Luong et al., “Effective Approaches to Attention-based Neural Machine Translation”, EMNLP 2015.
1.4 自注意力与缩放点积
注意力起源部分介绍的传统机制在编码器与解码器之间架起桥梁。本节引入一个更根本的概念:自注意力(Self- Attention),即序列内部元素之间的注意力。这是理解 Transformer 架构的关键跳板。
1.4.1 从序列间到序列内注意
传统注意力(Bahdanau、Luong)回答的问题是:“解码器当前步应关注源序列的哪些位置?”这是一种跨序列(cross- sequence)注意力。自注意力则将同一机制应用于单一序列内部,让序列中每个词关注序列内所有其他词(如图1-9 所 示)。 Self-attention (within sequence) x1 x2 x3 Cross-sequence attention Encoder: h1 h2 h3 Decoder: s1 s2 s3 图1-9 跨序列注意力与自注意力的对比 以句子 “The animal didn’t cross the street because it was too tired” 为例。传统编码器将整句压缩为固定向量,丢 失了词间关系。自注意力则显式建模每个词对序列中所有其他词的依赖:“it” 需要关注 “animal” 以消解指 代,“tired” 需要关注 “animal” 以理解状态归属。
1.4.2 自注意力的直观理解
自注意力的核心思想可以概括为:让序列中每个位置,根据与其他位置的相关性,聚合全局信息。它借鉴了信息检索的 Query-Key-Value 范式——每个位置既扮演「查询者」又扮演「被查询对象」。 具体来说,序列中每个位置 i 生成三个角色向量:查询向量 q (表示该位置「在寻找什么」)、键向量 k (表示该位置「能 提供什么」)、值向量 v (表示该位置「实际携带什么内容」)。位置 i 的输出由两步得到:先计算 q 与所有位置的 k 的匹 i i 配程度得到注意力分数,再用归一化后的分数对 v 加权求和。分数越高,位置 j 对 i 的贡献越大。 i i j j
# Self-attention conceptual pseudocode
def self_attention(X):
# X: (seq_len, d_model)
Q = X @ W_q # queries: what each position "looks for"
K = X @ W_k # keys: what each position "offers"
V = X @ W_v # values: what each position "provides"
scores = Q @ K.T / sqrt(d_k) # scaled dot-product
weights = softmax(scores, dim=-1)
output = weights @ V
return output缩放因子与 softmax 加权的数学依据将在本节后半部分逐项推导;此处只需建立「每个位置自主决定关注序列内哪些位 置」的直观图景。每对位置之间的权重构成一个 (T , T ) 的注意力矩阵,直观可视化了序列内部的依赖强度。
1.4.3 并行化与长距离依赖
自注意力相较 RNN 拥有两个根本优势:
- 完全并行化:RNN 必须顺序计算 h → h → … → h ,而自注意力的所有位置的 Q、K 、V 可以一次性通过矩阵乘法 1 2 并行生成。注意力分数矩阵也可并行计算。这使得 GPU 利用率大幅提升,训练时间显著缩短。 T
- 常数级路径长度:如图1-10 所示,RNN 中位置 i 和 j 之间的信息传播需要经过 ∣i − j∣ 步递推,信号随距离衰减。自注 意力中,任意两个位置直接通过一次注意力操作建立连接,路径长度为 O(1)。这意味着无论句子多长,任意词对之间 的依赖都可以在单层中被捕获。 Self-attention path length O(1)
RNN path length O(n) x1 xT x3 h1 h2 h3 ... hT x2 图1-10 RNN 与自注意力的信息传播路径对比 这两个优势使自注意力成为长序列建模的理想选择,但也带来了新挑战:O(T ) 的计算与内存开销。 2
1.4.4 QKV 三元组角色
- 查询的角色 自注意力机制的核心操作可以浓缩为三个矩阵的交互:查询(Query)、键(Key)和值(Value)。理解这三个矩阵各自 的语义角色,是掌握整个 Transformer 架构的关键入口。 查询向量 q 对应于输入序列中第 i 个位置发出的检索请求。它编码了当前 token 在当前位置下想要找什么的信息。在自 注意力中,每一个位置的 token 都同时扮演三种角色:它既是一个提问者(通过 Q),也是其他提问者的匹配目标(通过 i K),还承载了可供提取的内容(通过 V)。 具体而言,给定输入矩阵 X ∈ R ,其中 n 为序列长度,d 为模型维度,查询矩阵通过线性投影得到: n×dmodel model Q = XWQ
其中 W ∈ R Q 是可学习的权重矩阵,d 是每个注意力头的维度。查询矩阵 Q ∈ R 的每一行 q 即是位置 i 的查 dmodel ×dk n×dk 询向量。 k i 2) 键的角色 键向量 k 对应于输入序列中第 j 个位置发出的索引标签。它编码了当前 token 在当前位置下有什么特征可供匹配的信 息。当查询向量 q 与键向量 k 做点积时,得到的是位置 i 对位置 j 的匹配得分:得分越高,表示位置 j 的内容对位置 i j 而言越相关。 i j 键矩阵同样通过线性投影得到: K = XWK 其中 W ∈ R K 。在标准的自注意力中,W 和 W 是不同的参数矩阵,这允许模型学习不同的投影空间来分别表 dmodel ×dk Q K 示查询语义和键语义。 3) 值的角色 值向量 v 携带了位置 j 处实际要传递的信息内容。注意力机制根据查询与键的匹配程度(即注意力权重),对所有位置的 值向量做加权求和,得到最终的输出。值的维度 d 可以与 d 相同,也可以不同;在标准 Transformer 中,两者通常相 j 等。 v k V = XWV 其中 W ∈ R 。 V dmodel ×dv 4) 检索-读取的类比解释 QKV 三者的分工可以用数据库检索来类比。假设有一个键值数据库,每个条目由 key 和 value 组成。当用户提交一个 query 时,系统计算 query 与每个 key 的相似度,然后根据相似度加权聚合对应的 value 返回给用户。 自注意力正是以可微分的方式实现了这一过程。区别在于:它不是从一个静态数据库中检索,而是在同一个输入序列内部 做动态检索——每个 token 既是查询的发起者,也是被检索的目标。正因如此,它被称为“自”注意力。 V = X·W^V Input X Q = X·W^Q Weighted Sum Similarity Scores Attention Weights K = X·W^K 图1-11 QKV 投影与注意力计算流程 如图1-11 概括了从输入矩阵到注意力输出的完整流程:输入 X 经三个独立的线性投影生成 Q、K、V,随后 Q 与 K 计 算相似度分数,经 Softmax 归一化为注意力权重,最后用这些权重对 V 加权求和。 5) QKV 的线性投影 回到《Attention Is All You Need》原论文(Vaswani et al., 2017, §3.2.2),对于 h 个注意力头、每个头维度为 d = /h 的配置,投影矩阵的维度分别是: k d =d v model WiQ ∈ Rdmodel ×dk , WiK ∈ Rdmodel ×dk , WiV ∈ Rdmodel ×dv 这三个投影矩阵在每个注意力头内是独立的。这意味着不同头可以学习不同的 QKV 投影,从而在不同的表示子空间中捕 获不同类型的依赖关系。 用代码表达这个投影过程:
import torch
import torch.nn as nn
class MultiHeadAttention(nn.Module):
def __init__(self, d_model, num_heads):
super().__init__()
self.d_model = d_model
self.num_heads = num_heads
self.d_k = d_model // num_heads
# Q, K, V linear projections
self.W_q = nn.Linear(d_model, d_model)
self.W_k = nn.Linear(d_model, d_model)
self.W_v = nn.Linear(d_model, d_model)
def forward(self, x):batch_size, seq_len, _ = x.shape
q = self.W_q(x) # (batch, seq_len, d_model)
k = self.W_k(x)
v = self.W_v(x)
# ... attention computation follows三个投影矩阵的参数量各为 d model × dmodel (当将所有头的投影拼接在一起考虑时),合计为 3 ⋅ d ,这是自注意力层参 2 数的主体。 model
1.4.5 计算流程
- 点积相似度的计算 给定查询矩阵 Q ∈ R 和键矩阵 K ∈ R ,它们之间的相似度通过矩阵乘法一次性计算所有位置对: n×dk n×dk S = QK⊤
其中 S ∈ R ,元素 s = q ⋅ k 表示位置 i 的查询与位置 j 的键之间的内积相似度。 n×n ij i j 选择点积而非加性注意力(如 Bahdanau 注意力中用前馈网络计算对齐分数)的原因在于计算效率。点积可以用高度优 化的矩阵乘法实现,在 GPU 上执行极快。加性注意力虽然在理论上表达能力略强,但在 d 较大时与点积的效果差异不显 著,而计算开销却高出许多。 k def attention_scores(q, k): """ q: (batch, heads, seq_len, d_k) k: (batch, heads, seq_len, d_k) """ return torch.matmul(q, k.transpose(-2, -1)) 2) 缩放因子的数学依据 直接使用点积 QK 存在一个数值问题。假设 q 和 k 的各分量是独立同分布的随机变量,均值为 0,方差为 1,那么它 ⊤ 们的点积 q ⋅ k 的均值为 0,方差为 d : i j i j k dk Var(qi ⋅ kj ) = ∑ Var(qim ⋅ kjm ) = dk m=1 当 d 较大时(例如 d = 64),点积的幅值会显著增大。这就导致进入 Softmax 函数的值落在梯度极小的饱和区域(即所 谓“硬”Softmax),使得梯度几乎为零,训练变得困难。 k k 解决方案是将点积除以 d ,使方差归一化回 1: k qi ⋅ kj Var ( )=1 dk 由此得到缩放点积注意力公式: QK⊤ Attention(Q, K, V) = softmax ( )V dk Query Q Key K MatMul: Q·K^T Scale: / √d_k Mask (optional) Softmax Value V MatMul: · V Output 图1-12 缩放点积注意力的计算图 如图1-12 展示了从 Q、K、V 输入到最终输出的完整计算路径。Mask 操作用于解码器中的自回归生成或填充位的遮蔽, 在编码器自注意力中不出现。
1.4.6 注意力权重的属性
- Softmax 的温度效应 缩放因子 d 在功能上等价于为 Softmax 引入一个温度参数。标准的 Softmax 定义为: k exi softmax(xi ) = ∑j exj 带温度的 Softmax 形式为: xi exi /τ softmax ( )= ∑j exj /τ τ 对比可知,缩放点积注意力中的 d 充当了温度 τ 的角色。τ 越大(相当于除以更大的数),Softmax 的输出分布越软 (即更均匀,各个位置的权重差异缩小);τ 越小,分布越硬(即更集中于少数高分位置)。 k 在训练的初始阶段,参数接近随机初始化,较大的 d 意味着较大的 τ ,有助于模型以较均匀的注意力探索所有位置。随 着训练进行,投影矩阵学会产生更有区分度的 Q 和 K,注意力分布自然变得集中。 k
- 注意力权重的稀疏性 缩放点积注意力输出的权重矩阵 A = softmax(QK / d ) 是一个 n × n 的矩阵,每行之和为 1。尽管从计算上看这是一 ⊤ 个稠密矩阵(每个位置都给所有其他位置分配了一个非零权重),但在实践中,经过充分训练的模型往往产生高度稀疏的 k 注意力模式。 这种稀疏性表现为:对每个查询位置 i,只有少数几个键位置 j 获得了显著的注意力权重(例如 > 0.1),其余大量的权重 接近零。从信息论角度看,这是统计效率的体现。模型学会了区分需要关注的位置和可以忽略的位置,类似于人类阅读时 在长句中选择性地聚焦于关键修饰语。 后续研究(如 Sparse Transformer、Longformer)正是利用了这一经验观察,通过显式地限制每个查询只能关注一个固 定大小的局部窗口或一组稀疏的全局位置,将 O(n ) 的复杂度降低到 O(n log n) 甚至 O(n)。这些高效变体的存在反向印 证了注意力权重的内在稀疏假设。
1.4.7 注意力的演进
回顾本章的演进路线,如表1-4 所示:Seq2Seq 框架暴露了定长上下文向量的瓶颈;Bahdanau 和 Luong 注意力引入动 态加权机制,让解码器能根据当前生成需求选择源信息;自注意力则将这一机制泛化到序列内部,使序列的每个位置都能 感知全局上下文。 Transformer 在 2017 年的突破,本质上是将自注意力推向了极致:完全抛弃循环与卷积结构,用堆叠的多头自注意力层 和位置编码构建端到端的序列模型。 发展阶段 核心思想 代表工作 Seq2Seq 编码器-解码器分离 Sutskever et al. 2014 跨序列注意力 解码器动态查询编码器 Bahdanau et al. 2015 多样化注意力 评分函数与窗口策略 Luong et al. 2015 自注意力 序列内全域依赖建模 Vaswani et al. 2017 表1-4 注意力机制的发展阶段 关键论文:Vaswani et al., “Attention Is All You Need”, NeurIPS 2017.
1.5 多头注意力与分析
单头注意力只在一个表示子空间中计算依赖关系。多头注意力(Multi-Head Attention)将这一机制并行地扩展到多个子 空间,使模型能够同时关注来自不同位置的不同表示子空间的信息。
1.5.1 多头注意力机制
- 多头的动机与直觉 用一个日常生活场景来理解。阅读一段英文时,读者同时处理多个层面的信息:某个词的主谓宾语法关系、它所指代的先 行词、它与相邻词的局部搭配习惯、甚至它在段落中的主题角色。单一视角的“注意力”很难同时捕捉所有这些维度的关 系。 多头注意力的设计正是为了模拟这种多维度的并行关注能力。每个注意力头使用自己独立的 Q、K、V 投影矩阵,将输入 映射到不同的低维子空间中,在这些子空间中独立地计算注意力分布。不同的头可能学习到不同层面的依赖模式:有的头 关注短距离的局部语法,有的头关注长距离的语义关联,还有的头关注位置间的对齐关系。 原论文(Vaswani et al., 2017, §3.2.2)给出的多头注意力公式为: MultiHead(Q, K, V) = Concat(head1 , … , headh )WO 其中每个头的计算为: headi = Attention(QWiQ , KWiK , VWiV )
- 头内计算与头间独立 每个注意力头拥有自己的一套投影参数:W , W ∈ R 和 W ∈ R 。这些参数在不同头之间不共享,因此 Q K dmodel ×dk V dmodel ×dv 每个头可以学习不同的投影策略和不同的注意力模式。 i i i 在计算上,所有头的矩阵乘法和注意力操作是完全独立的,因此可以高效地批处理(batching)。标准实现将 Q、K、V 的形状从 (n, d ) 重塑为 (h, n, d ),然后以 h 为批维度并行执行缩放点积注意力。 model k def split_heads(x, num_heads, d_k): """ x: (batch, seq_len, d_model) returns: (batch, num_heads, seq_len, d_k) """ batch_size, seq_len, d_model = x.shape
x = x.view(batch_size, seq_len, num_heads, d_k)
return x.transpose(1, 2)
def scaled_dot_product_attention(q, k, v, mask=None):
d_k = q.size(-1)
scores = torch.matmul(q, k.transpose(-2, -1)) / math.sqrt(d_k)
if mask is not None:
scores = scores.masked_fill(mask == 0, -1e9)
attn_weights = torch.softmax(scores, dim=-1)
output = torch.matmul(attn_weights, v)
return output, attn_weights这段代码展示了 head 拆分与缩放点积注意力的标准实现。 split_heads 将 d 维的输入按头数切分为 h 个 d 维的子 model 空间,随后在 h 维度上并行计算注意力。 k 3) 头输出的拼接与投影 各头独立计算完毕后,h 个头的输出被沿特征维度拼接,形成一个 h ⋅ d = d 维的向量(因为通常设 d = d /h)。 model model 然后通过一个额外的线性投影 W ∈ R 进行混合: v v O dmodel ×dmodel Concat(head1 , … , headh )WO 这个输出投影的作用不容忽视。它不仅将多头输出映射回 d 维空间以供后续残差连接使用,更重要的是允许不同头之 model 间的信息发生交互。如果没有 W ,各头的输出互相隔离,模型只能通过堆叠多层来间接实现头间交互,这会损失一层内 O 的综合建模能力。 Input X (n × d_model) Linear: W^Q Linear: W^K Linear: W^V Split into h heads Head 1: Attention Head 2: Attention Head h: Attention Concat Linear: W^O Output (n × d_model) 图1-13 多头注意力的并行计算架构 如图1-13 概括了多头注意力的完整处理流程:输入经共享的大投影矩阵线性变换后,分割为 h 个头并行计算注意力,各 头输出拼接后经 W 混合得到最终输出。 O 4) 头数选择与消融实验 原论文在 Transformer Base 模型中使用 h = 8 个头,每个头 d = d = 64(d = 512)。在 Big 模型中使用 h = 16 个 model 头。这篇论文中的消融实验(Table 3, §5.4)显示: k v •单头注意力(h = 1)的 BLEU 分数比 8 头低约 1.4 个点(25.9 vs 27.3),验证了多头设计的有效性。 •将头数增加到 16 或 32 时,在 d 相应缩小的条件下,性能基本持平但计算量增加。 k •关键约束是总计算量(由 d 决定)保持不变——头数增加意味着每头的维度 d 减小。 model k 后续研究(如 Michel et al., 2019, “Are Sixteen Heads Really Better than One?”)发现,在推理阶段可以剪枝掉大量注 意力头而几乎不影响性能,某些层甚至可以只保留 1–2 个头。这一现象提示了多头注意力的表达能力存在冗余,也为模 型压缩和推理加速提供了思路。但训练阶段的多头冗余可能具有正则化效果,帮助模型在大量参数空间中更鲁棒地收敛。 为降低推理阶段 KV 缓存的显存开销,工业界提出了参数共享的多头变体:多查询注意力(Multi-Query Attention, MQA) 让所有头共享单一 K/V 投影,分组查询注意力(Grouped-Query Attention, GQA)则将头分为若干组共享 K/V,LLaMA- 2 70B 即采用 GQA。DeepSeek 的多头潜在注意力(Multi-head Latent Attention, MLA)进一步将 K/V 压缩到低维潜在 空间,在保持多头表达力的同时显著缩小缓存。这些变体已成为现代大模型的标准组件。
1.5.2 计算复杂度分析
- 单头注意力的 FLOPs 自注意力的强大表达能力伴随不可忽视的计算代价,量化其成本是设计高效模型、评估工程可行性的前提。首先考察单头 缩放点积注意力:给定输入 X ∈ R ,投影为 d 维的 Q、K、V。分析精度为浮点乘加运算(multiply-add),一次 n×dmodel 乘加计为 2 FLOPs。 k 线性投影:Q = XW ,其中 X ∈ R ,W ∈ R 。矩阵乘法 XW 需要 n ⋅ d ⋅ d 次乘加,即 2nd d Q n×dmodel Q dmodel ×dk Q model model k FLOPs。三个投影的总 FLOPs 为: k 6 ⋅ n ⋅ dmodel ⋅ dk 注意力分数:QK 需要 n ⋅ d ⋅ n = n d 次乘加,即 2n d FLOPs。 ⊤ k k k Softmax:指数运算和归一化的计算量通常远小于矩阵乘法,在此分析中近似忽略。 加权求和:softmax(⋅)V 需要 n ⋅ n ⋅ d 次乘加,即 2n d FLOPs。 k k 单头注意力的总计算量(不含输出投影)为: Fsingle-head ≈ 6ndmodel dk + 4n2 dk
- 多头注意力的总计算量 对于 h 个头的多头注意力,设 d = d k model /h 。每个头独立执行上述计算,总计算量为 h 倍的单头计算量: Fmulti-head ≈ 6nd2model + 4n2 dmodel
第一项 6nd 来自 QKV 投影(注意 h ⋅ d = d )。第二项 4n d model model 来自注意力分数和加权求和。此外,输出投影 W 贡献 2nd FLOPs。 model k O 2 model 总计,多头注意力的 FLOPs 约为: FMHA ≈ 8nd2model + 4n2 dmodel QKV Projection: 6n·d² Attention Scores: 2n²·d Weighted Sum: 2n²·d Output Projection: 2n·d² 图1-14 多头注意力各阶段的 FLOPs 分布 从图1-14 可见,计算量由两个主导项构成:与序列长度 n 成线性的投影项,和与 n 成二次方的注意力项。当 n 较小时 2 (如 n < d ),投影项主导;当 n 较大时,注意力项迅速增长并成为瓶颈。 model 3) 序列长度的二次复杂度 注意力分数矩阵 QK 的尺寸为 n × n,这是 O(n ) 复杂度的直接来源。无论在训练还是推理阶段,序列长度翻倍意味着 ⊤ 2 注意力的计算和存储代价翻四倍。 以实际数字来感受这一增长: 序列长度 n 注意力矩阵元素数 相对计算量(以 n = 512 为基准) 512 2.6 × 105 1x 1024 1.0 × 106 4x 2048 4.2 × 106 16x 8192 6.7 × 107 256x 32768 1.1 × 109 4096x 表1-5 注意力矩阵规模随序列长度的增长 如表1-5 所示,序列长度从 512 增长到 32768,计算量激增 4096 倍,这正是长序列成为 Transformer 核心挑战的原因。 GPT-4 等现代大语言模型需要处理数万甚至数十万 token 的上下文,O(n ) 的注意力计算在工程上几乎不可行。 2 FlashAttention(Dao et al., 2022)通过 IO 感知的分块计算策略缓解了存储瓶颈,但并未改变计算复杂度的阶。稀疏注 意力和线性注意力试图从算法层面降低复杂度。 4) 与 FFN 的计算量对比 在 Transformer 的每一层中,自注意力之后紧跟着一个前馈神经网络(FFN)。标准 FFN 包含两层线性变换和一个非线性 激活: FFN(X) = ReLU(XW1 + b1 )W2 + b2 其中 W ∈ R 1 ,W ∈ R dmodel ×dff ,且通常 d = 4 ⋅ d 。 dff ×dmodel ff model FFN 的 FLOPs 为: •第一层:2nd d = 8nd (因为 d = 4d ) model ff model ff model •第二层:2nd d = 8nd ff model model 总计 FFN 的计算量为 16nd FLOPs。对比 MHA 的投影项 8nd 加上注意力项 4n d ,可以发现: model model model •对于短序列(n ≪ d ):FFN 的计算量约为 MHA 的两倍。model •对于长序列(n ≫ d ):MHA 的 O(n ) 项超过 FFN 的 O(n) 项,注意力成为主导。 model 在原论文的 base 配置(n ≈ 100 到 200 token,d = 512)中,MHA 和 FFN 的计算量大致相当,这也是 Transformer model 层结构设计的一个精妙平衡。
1.5.3 注意力模式可视化
- 注意力热图的解读 注意力权重矩阵 A ∈ R 的每一个元素 a 都表示位置 i 对位置 j 的注意力强度,将这一矩阵可视化是研究 Transformer n×n 内部行为最直接的手段之一。热图通常以 n × n 的方格矩阵呈现,行对应查询位置(目标位置),列对应键位置(源位 ij 置),颜色深度或亮度表示注意力权重的强度。典型的解读模式包括: •对角线集中:如果热图中的显著权重集中在主对角线附近,说明该头主要关注局部上下文,类似于卷积神经网络中的局 部感受野。 •纵向条纹:如果某几列整列都呈高亮(所有查询位置都关注某几个固定的键位置),这些键位置可能对应特殊的全局 token,例如 BERT 中的 [CLS] token 或句子中的标点符号。 •横向均匀:如果某一行呈现几乎均匀分布,说明该位置当前的查询缺乏明确的关注偏好,可能对应语义信息较弱的 token(如停用词)。 •块状结构:当序列具有明显分段特征时(如多句子输入),注意力矩阵常常呈现块对角结构,表明模型倾向于在句子边 界内部进行注意力分配。
import matplotlib.pyplot as plt
import seaborn as sns
def plot_attention_heatmap(attn_weights, tokens, head_idx, layer_idx):
"""attn_weights: (num_heads, seq_len, seq_len) tokens: list of token strings for axis labels
"""
plt.figure(figsize=(10, 8))
sns.heatmap(attn_weights[head_idx].detach().cpu().numpy(), xticklabels=tokens, yticklabels=tokens, cmap='Blues', square=True, cbar=True )
plt.title(f'Layer {layer_idx}, Head {head_idx}')
plt.xlabel('Key Position')
plt.ylabel('Query Position')绘制热图时,选择线性色阶还是对数色阶会影响视觉效果。注意力权重通常高度稀疏,对数色阶可以更好地展现微弱但非 零的权重的分布模式,而线性色阶则更能突出主导的注意力关系。 2) 不同头的功能分化 多头注意力最引人入胜的发现之一是,不同注意力头在训练后自然分化出不同的功能模式。Clark et al.(2019, “What Does BERT Look At?”)对 BERT 的注意力头进行了系统分类,识别出几类典型模式: •相邻头(Attends to adjacent tokens):注意力权重高度集中在紧邻的前后几个 token 上,这类头行为类似 n-gram 特 征提取器。 •句法头(Attends to syntactic relations):注意力集中在特定语法关系的词对上,如动词关注其直接宾语、介词关注其 宾语名词。 •指代头(Attends to coreferents):关注当前词的先行词,如代词关注它所指代的名词短语。 8 Attention Heads in Layer Head 1: Local Adjacent Head 2: Local Adjacent Head 3: Syntactic (Verb->O Head 4: Syntactic (Prep->N Head 5: Coreference Head 6: Position Bias Head 7: Diffuse Head 8: [SEP] Focus bject) oun) 图1-15 注意力头的功能分化示意 如图1-15 展示了单个 Transformer 层中 8 个头可能呈现的不同注意力模式。多个头可能服务于相似的功能(如 Head 1 和 Head 2 都关注局部相邻),但大多数头会分化出独特的行为特征。 3) 句法关系与指代消解 句法关系的捕获是注意力机制可解释性研究中的重要发现。在依赖解析(dependency parsing)的上下文中,注意力权 重与标准句法树中的依存关系存在显著的相关性。例如,在句子“The cat sat on the mat”中,某些注意力头可能表现 出 sat → cat (主语-动词关系)或 mat → on (介词宾语关系)的注意力模式。 指代消解(coreference resolution)是另一类被多头注意力自然捕获的语言现象。当一个代词(如“it”)需要被解析为 其所指代的名词短语时,相应的注意力头会将代词位置的查询权重高度集中在先行词的位置上。Jawahar et al.(2019) 通过探针分类器实验证实,BERT 的中间层注意力分布包含足够的句法信息来重构依赖树。 4) 可视化的局限与误读 注意力可视化虽然直观,但存在若干需要警惕的局限。Jain & Wallace(2019, “Attention is not Explanation”)和 Wiegreffe & Pinter(2019, “Attention is not not Explanation”)两篇对立的论文引发了关于注意力可解释性的一场经 典辩论,其核心结论如下: •注意力权重不等于特征重要性:一个高的注意力权重并不必然意味着对应的 token 对模型预测有决定性作用。模型可 能通过 FFN 层的非线性变换,让低权重的 token 对输出产生更大影响。 •替代分布问题:可以通过对抗性地构造一组截然不同的注意力权重,使得模型产生完全相同的输出。这意味着仅凭注意 力权重不足以唯一地解释模型的决策过程。 •层间交互:上层注意力的行为依赖于下层的输出,单层的注意力热图无法捕捉跨层的复合效应。 因此,注意力权重提供的是模型行为的一个有用但非充分的信号。将其视为理解模型在关注什么的窗口而非解释模型为何 如此预测的决策路径图,是更为审慎的使用态度。结合梯度归因(如 Integrated Gradients)或探针分类实验进行交叉验 证,可以得出更可靠的结论。
1.6 整体架构与数据流
Transformer 是 Vaswani 等人在 2017 年论文《Attention Is All You Need》中提出的序列到序列模型,其核心创新在于 完全摒弃了循环神经网络(RNN)和卷积神经网络(CNN),仅依赖注意力机制完成序列变换。
1.6.1 架构设计概览
- 设计哲学与关键决策 Transformer 的设计遵循三个核心原则: •全局并行计算:RNN 的每步计算依赖前一步的隐藏状态,形成无法并行的顺序瓶颈;自注意力一次性计算序列中所有 位置之间的关联,将串行依赖从 O(n) 降到 O(1)。 •最小化归纳偏置:相比 CNN 预设的局部感受野和 RNN 预设的时间递推结构,Transformer 不做任何关于序列结构的先 验假设,让模型从数据中自行学习 token 间的关系。 •模块化与可扩展性:编码器和解码器均由相同结构的层堆叠而成,每层内部子模块(注意力、前馈网络、层归一化)职 责清晰,便于实验、替换和扩展。 关键设计决策随之确定:采用多头注意力以允许模型在不同表示子空间同时关注信息;引入位置编码弥补自注意力对序列 顺序不敏感的缺陷;使用残差连接和层归一化保证深层网络的训练稳定性。
- 五项核心创新 论文的技术贡献可归纳为五项相互咬合的创新:
- 自注意力机制:每个位置的表示通过查询、键、值三个投影矩阵计算,实现对序列中所有位置的并行加权聚合;序列长 度为 n 时,RNN 需要 O(n) 步串行计算,自注意力仅需 O(1) 步。
- 多头注意力:将注意力计算拆分到多个子空间并行执行,使模型能够同时关注句法依存、共指消解、语义关联等不同类 型的关系。
- 位置编码:以正弦余弦函数将位置索引编码为向量,与词嵌入逐元素相加,弥补自注意力天然缺失的序信息;这一设计 不需要额外参数,且支持未见过的序列长度。
- 残差连接与层归一化:每个子层(注意力或前馈网络)的输出与输入相加后归一化,确保深层网络的稳定训练。
- 解码器的掩码自注意力:训练时通过掩码矩阵屏蔽未来位置信息,使自回归生成的损失可以在整个目标序列上并行计 算。 Multi-Head Self-Attention Positional Encoding Residual + LayerNorm Masked Self-Attention
Parallel Computation Global Receptive Field Order Without Recurrence Deep Stack (6+ layers) Efficient Autoregressive Tr aining Transformer 图1-16 Transformer 的核心创新及其协同关系 这五个组件并非孤立发明,而是围绕「用注意力完全替代循环」这一目标协同工作:自注意力提供核心算子,多头扩充其 容量,位置编码补足其盲区,残差与归一化撑起深度,掩码解锁并行训练。如图1-16 所示,它们共同构成 Transformer 的能力基座。 3) 端到端流程概览 Transformer 的处理流程分为编码和解码两个阶段,如图1-17 所示。编码阶段,源语言文本经分词后映射为词嵌入,叠 加位置编码后依次通过 N 个结构相同的编码器层,每层包含多头自注意力子层和前馈网络子层,最终输出上下文感知的 连续表示。解码阶段,目标语言文本经同样的嵌入与位置编码后,逐层通过掩码自注意力(确保当前位置只能关注已生成 的前缀)、编码器-解码器交叉注意力(从编码器输出中提取相关信息)和前馈网络。解码器的顶层输出经线性投影和 Softmax 映射到词表概率分布,实现逐 token 的自回归生成。 Source Tokens Input Embedding Target Tokens + Positional Encoding Output Embedding Encoder Stack N=6 + Positional Encoding Encoder Output Decoder Stack N=6 Linear Projection Softmax Output Probabilities 图1-17 Transformer 端到端架构流程
1.6.2 编码器与解码器设计
- 超参数与规模选择 Transformer 的超参数分为结构参数和训练参数两类。结构参数包括: • d_model (模型维度,默认 512):控制所有子层和嵌入层的输出维度。 • N (层数,默认 6):决定编码器和解码器的深度。 • h (注意力头数,默认 8):允许模型学习多种不同的注意力模式。 • d_k = d_v = d_model / h = 64 :每个注意力头的维度。 • d_ff (前馈网络内层维度,默认 2048):通常是 d_model 的 4 倍。 这些默认值的选取在计算效率和模型容量之间取得了经验平衡。 训练参数包括: •Adam 优化器: beta_1=0.9 , beta_2=0.98 , epsilon=10^{-9} 。 •学习率 warmup 策略:前 warmup_steps=4000 步线性增长,之后按步数平方根的倒数衰减。 •Dropout 比率: P_drop=0.1 ,应用于所有子层输出、嵌入求和以及位置编码。
- 基准模型配置 论文提出了两种标准配置,如表1-6 所示。 •Base 模型: N=6 , d_model=512 , d_ff=2048 , h=8 , 总参数量约 65M,在 WMT 2014 英德翻译任务上达到 27.3 BLEU。 •Big 模型: N=6 , d_model=1024 , d_ff=4096 , h=16 , 总参数量约 213M,在英德翻译上达到 28.4 BLEU,在英法翻译 上达到 41.0 BLEU,刷新了当时的单模型最佳成绩。 两者的层数均为 6,说明在约 200M 参数规模下,原论文选择了增宽策略。 Base 和 Big 的关键差异在于宽度而非深度。然而,更大规模的实验(Kaplan et al., 2020; Hoffmann et al., 2022)表明 最优扩展需同时考虑深度和宽度,BERT Large(N=24)和 GPT-3(96 层)等后续模型验证了深度的重要性。 超参数 Base Big N 6 6 d_model 512 1024 d_ff 2048 4096 h 8 16 d_k , d_v 64 64 P_drop 0.1 0.1 参数量 65M 213M 表1-6 原始 Transformer 两种配置的超参数
- 编码器堆叠设计 如图1-18 所示,每个编码器层包含两个子层。第一个子层是多头自注意力机制,允许序列中每个位置关注所有其他位 置;第二个子层是逐位置的前馈全连接网络。每个子层之后都应用残差连接和层归一化: LayerNorm(x + Sublayer(x)) 。由于自注意力子层输出的每个位置都融合了全序列的信息,前馈网络虽然逐位置独立计算,但处理的是 已经富含上下文的表示。 N 个编码器层串联堆叠,第 l 层的输出直接作为第 l+1 层的输入。这种同构堆叠保证了每一层的输入和输出维度均为 (batch_size, seq_len, d_model) ,使得层数可灵活调整而无需修改其他组件。
- 解码器堆叠设计 解码器层在每个编码器层的基础上增加了一个交叉注意力子层,共三个子层。
- 掩码多头自注意力:将未来位置的注意力权重置为 -inf ,确保位置 i 只能关注到位置 1 到 i,从而维护自回归生成的 因果约束。
- 编码器-解码器交叉注意力:Query 来自解码器前一子层的输出,Key 和 Value 来自编码器的顶层输出,使解码器能够 从源序列中提取相关信息。
- 前馈网络:与编码器一致,逐位置应用。 每个子层同样应用残差连接和层归一化。 训练时,解码器一次性接收完整的目标序列(含起始符),通过掩码机制并行计算所有位置的损失。推理时,解码器以自 回归方式逐 token 生成,每次将已生成的 token 序列作为输入,预测下一个 token。
- 层间数据传递 编码器内部的数据流动是单向自底向上的:源序列经过嵌入和位置编码后,依次通过 N 个编码器层,每一层对表示进行 精炼,逐步提取从局部到全局的语义特征。编码器顶层输出作为完整的上下文表示,被传递至每个解码器层的交叉注意力 子层。 解码器的数据流动同样是自底向上,但交叉注意力子层额外接收编码器的顶层输出。这意味着解码器的每一层都能直接访 问源序列的全局表示,而不是像 RNN 那样通过压缩的单一上下文向量间接传递。这种设计是 Transformer 长距离依赖建 模能力的重要来源:信息从源序列到目标序列的最短路径长度为 O(1)。 From Layer l-1 Encoder Layer l Multi-Head Self-Attention
Add & Norm From Layer l-1 Feed Forward Decoder Layer l Masked Multi-Head Self-At Add & Norm tention Add & Norm To Layer l+1 Multi-Head Cross-Attentio n Add & Norm Feed Forward Add & Norm To Layer l+1 图1-18 单层编码器与解码器内部结构 6) 参数量与计算量分布 以 Base 模型为例,嵌入层(输入和输出共享)约占 19M 参数(词表大小 37K × d_model=512 ),6 层编码器约 19M 参 数,6 层解码器约 25M 参数,总计约 65M。解码器参数多于编码器的根本原因是其每层多了交叉注意力子层的 4 个投影 矩阵( W_Q^cross 、 W_K^cross 、 W_V^cross 、 W_O^cross )。 从计算量角度,自注意力的矩阵乘法复杂度为 O(n^2 * d_model),其中 n 为序列长度,在短序列场景下前馈网络的 O(n
- d_model^2) 实际上主导了总计算量。当序列长度超过约 1000 个 token 时,注意力计算的平方复杂度成为瓶颈,这也 是后续高效 Transformer 变体的主要优化目标。 层归一化和残差连接的参数极少(每层的 LayerNorm 仅含 2 * d_model 个可学习参数,约 1024 个),在总量中可忽略不 计,但它们对训练稳定性的贡献不可替代。 架构形态同样在持续演变。原始 Transformer 采用对称的编码器-解码器结构,而解码器每层比编码器多出交叉注意力的 4 个投影矩阵。2020 年后,以 GPT 系列为代表的纯解码器(decoder-only)架构逐步统治大模型领域——LLaMA、 Qwen、DeepSeek、Gemini 等主流模型全部为纯解码器设计,省去交叉注意力子层,统一了预训练与下游任务的训练目 标,工程与部署栈也更简单。截至 2026 年,编码器-解码器与编码器结构(如 T5、BERT)仍活跃于翻译、检索与表示学 习等场景,但已非通用大模型的默认选择。
1.6.3 数据流路径
- 从文本到输入张量 如图1-19 所示,原始文本首先经过分词器处理为词元(token)序列,每个词元映射为整数索引,源序列表示为形状 (batch_size, src_len) 的整数索引向量。词元随后通过嵌入层映射为稠密向量,与位置编码相加后得到形状 (batch_size, src_len, d_model) 的输入张量。此处只需建立「文本 → token → 嵌入 → 输入张量」的整体心智模 型。
- 从输入嵌入到编码器输出 缩放后的嵌入向量与位置编码相加,得到编码器的输入张量,形状为 (batch_size, src_len, d_model) 。该张量依次 通过 N 个编码器层。 在每个编码器层中,数据流的路径为:输入首先进入多头自注意力子层,该子层为序列中每对位置计算注意力权重并聚合 Value 向量;注意力输出与输入相加(残差连接)后经层归一化;结果再进入前馈网络子层,经两个线性变换和 ReLU 激 活后,再次通过残差连接和层归一化。 N 层编码器处理后,输出张量形状保持 (batch_size, src_len, d_model) ,但每个位置的表示已融合了整个源序列的 上下文信息。这个输出作为编码器的最终表示,将传递给所有解码器层的交叉注意力子层。
- 从编码器输出到解码器 解码器端的起点是对目标序列的嵌入和位置编码,形状为 (batch_size, tgt_len, d_model) 。在每个解码器层中,数 据依次通过三个子层:
- 掩码自注意力:对目标序列每个位置计算它与之前各位置的注意力,掩码确保位置 i 不可见位置 i+1 及之后。输出 形状不变。
- 交叉注意力:Query 来自上一子层的输出(形状 (batch_size, tgt_len, d_model) ),Key 和 Value 来自编码器顶 层输出(形状 (batch_size, src_len, d_model) )。该子层是源序列和目标序列的唯一信息交汇点。
- 前馈网络:与编码器中的前馈网络结构相同,逐位置应用。 N 层解码器处理后,顶层输出通过线性投影矩阵 W_proj (形状 d_model × vocab_size )映射到词表维度,再经 Softmax 得到每个位置的下一个 token 概率分布,形状为 (batch_size, tgt_len, vocab_size) 。 Encoder Side Token IDs [B, S] Embedding [B, S, 512] Decoder Side Token IDs [B, T] + PE [B, S, 512] Embedding [B, T, 512] Encoder Layer 1..6 + PE [B, T, 512] Encoder Output [B, S, 512]
Decoder Layer 1..6 Decoder Output [B, T, 512] Linear Projection Softmax [B, T, V] 图1-19 数据张量形状在各阶段的演变 训练时的损失函数为交叉熵,计算预测概率分布与真实目标序列在每个位置的差异。推理时,解码器以自回归方式逐个生 成 token,每次将前一步的输出 token 拼接到输入序列末尾,重复执行解码器前向传播直到生成结束符或达到最大长度。
1.7 与 RNN/CNN 的对比
Transformer 对序列建模的范式变革,在与 RNN 和 CNN 的对比中体现得最为清晰。三者均可处理变长序列,但在并行化 能力、长距离依赖建模、计算效率和归纳偏置四个维度上有根本差异。
1.7.1 并行化能力对比
RNN 的根本瓶颈在于其递推定义:计算位置 t 的隐藏状态 h_t = f(h_{t-1}, x_t) 必须等待 h_{t-1} 计算完毕。这 一串行依赖意味着序列中 n 个位置需要 n 个顺序执行的计算步骤,GPU 的大量并行单元在大部分时间处于空闲。 CNN 在卷积窗口内并行计算,一层卷积即可覆盖感受野范围的所有位置。对于感受野为 k 的卷积,O(n/k) 个窗口可并行 处理。然而,要建模长距离依赖需要堆叠多层,层间仍存在顺序依赖。 如图1-20 所示,Transformer 的自注意力层将序列中所有位置两两配对计算,任何两个位置之间的信息交互均在同一计 算步骤中完成。整个序列只需 O(1) 个顺序步骤。这是 Transformer 训练效率远超 RNN 的核心原因。
1.7.2 长距离依赖建模
从“信息传播的路径长度”角度衡量,三种架构的差距更加直观。路径长度定义为前向传播中信息从输入位置 i 到达输 出位置 j 所经过的最少层数。 在 RNN 中,位置 i 和 j 之间的信息必须依次经过 |j - i| 个隐藏状态更新,最大路径长度为 O(n)。梯度反向传播时 同样需要穿越 O(n) 个时间步,极易发生梯度消失或爆炸。 CNN 中,感受野随深度扩展的方式取决于是否使用空洞卷积(Dilated Convolution)。对于不使用空洞的标准卷积,l 层 堆叠的感受野为 l ⋅ (k − 1) + 1(线性增长),最大路径长度为 O(n/k)。对于 ByteNet 等采用空洞卷积的架构,感受野按 指数增长至 k ,最大路径长度为 O(log n)。原论文的比较基准为后者。 l k Transformer 中,自注意力层一次性连接所有位置对。信息从任意输入位置到达任意输出位置的最大路径长度为 O(1) (即一个注意力子层)。这从根本上消除了 RNN 的梯度衰减问题,是 Transformer 在长文本任务上表现优异的结构性原 因。
1.7.3 计算复杂度分析
设序列长度为 n,表示维度为 d,卷积核宽度为 k,三类架构的单层计算对比如下: 架构 每层计算复杂度 顺序操作数 最大路径长度 RNN(含 LSTM/GRU) O(n ⋅ d2 ) O(n) O(n) CNN(卷积宽度 k) O(k ⋅ n ⋅ d2 ) O(1) O(logk n) Self-Attention O(n2 ⋅ d) O(1) O(1) 表1-7 三类序列架构的复杂度对比 如表1-7 中三项指标的工程含义各不相同: •每层计算复杂度:决定单层前向与反向传播的 FLOPs。当 n ≪ d 时(如典型神经机器翻译的 n ≈ 50、d = 512),O(n ⋅ d ) 与 O(n ⋅ d) 数值接近,RNN 与 Self-Attention 的计算开销处于同一量级;当 n 增长时(如长文档建模的 n ≈ 4096 2 2 ),n 项迅速主导,Self-Attention 的 FLOPs 反超 RNN 数倍。这也是后续 Longformer、BigBird 等稀疏注意力变体的 设计动机。 •顺序操作数:才是关键战场。RNN 的 O(n) 顺序依赖意味着 GPU 的数千个计算核心在每一步大量空闲:第 t 步必须等 待第 t − 1 步完成,流水线无法展开。Self-Attention 的 O(1) 顺序操作使所有 n 个位置的 Query-Key 内积完全并行。 这一差异在训练阶段表现尤为剧烈:Transformer Big 在 8 块 P100 上训练 3.5 天,而同等参数量的 LSTM Seq2Seq 需 要数周,速度差距主要源于并行度而非单步 FLOPs。 •最大路径长度:衡量任意两个位置之间信号传播的最短步数。RNN 中相距 n 步的两个 token 需经历 O(n) 次变换,梯 度被反复缩放,信息衰减不可逆;CNN 通过堆叠 O(log n) 层建立远距离连接,但卷积的局部感受野天然偏向近邻交 互;Self-Attention 的一跳全局连通性是其在共指消解、篇章级翻译等长距离依赖任务上大幅领先的根本原因。 k 综合来看,Self-Attention 并非在所有维度上都优于 RNN:n 极大时 O(n ⋅ d) 的内存与计算消耗是显著缺陷,平方项在长 2 序列下超过 FFN 的线性项成为主要瓶颈。但其 O(1) 的顺序操作数与 O(1) 的最大路径长度——全并行训练叠加一跳全局依 赖——在 GPU 大规模并行化的硬件趋势下构成了不可替代的技术基座,也划定了稀疏注意力与线性注意力两条后续优化 路线。
1.7.4 归纳偏置的差异
归纳偏置(inductive bias)是模型架构对数据分布所做的先验假设。不同架构的归纳偏置决定了它们在数据有限时的泛 化行为。 RNN 具有强烈的序列性和时间局部性偏置:模型天然假设相邻时间步的信息相关性最高,适合处理语音、时间序列等具 有自然顺序的数据。这一偏置在小数据集上是有利的正则化,但在训练数据充裕时限制了模型学习更复杂的长程模式的能 力。 CNN 的归纳偏置是平移等变性和局部感受野:无论特征出现在序列的哪个位置,同一卷积核都以相同方式响应。CNN 天 然适合处理图像等具有局部相关性的数据,但在建模序列中相隔较远的两个元素之间的关系时,需要堆叠足够深的层。 Transformer 的归纳偏置极弱。自注意力不对序列元素间距做任何假设,仅依赖数据中的统计模式来学习 token 间关系。 这一特性使 Transformer 在大规模数据场景下具有极强的表达能力和泛化能力,但在小数据集上容易过拟合。位置编码 是 Transformer 中唯一的显式结构偏置,但其作用远弱于 RNN 的递推结构或 CNN 的局部感受野——位置编码仅提供排列 信息,不约束 token 间的交互模式。 Transformer: Direct CNN: Hierarchical RNN: Sequential t=1 t=2 t=3 t=4 t=n Layer 1 Layer 2 Layer 3 ... Layer log_k n t=1 t=2 t=3 ... t=n 图1-20 三种架构的信息传播路径对比 弱归纳偏置的双面性深刻影响了 Transformer 的后续发展:在预训练-微调范式中,大规模预训练弥补了弱偏置在少量标 注数据上的不足,使得 Transformer 系列模型(BERT、GPT、ViT 等)在几乎所有序列建模任务上超越传统架构。
1.7.5 后继挑战者与混合架构
Transformer 的地位并非没有受到过挑战。2023 年底,Mamba(Gu & Dao)以选择性状态空间模型(Selective State Space Model)将序列建模复杂度降至线性 O(n),一度被视为有力挑战者。2024 至 2025 年间,Jamba、Zamba 等混合 模型尝试将 SSM 层与注意力层交错堆叠,但纯 SSM 在长程依赖、检索与指令遵循等任务上始终难以追平同规模 Transformer。截至 2026 年,行业共识逐渐收敛:SSM 系更多作为线性复杂度的补充构件而非替代品,主流模型仍以全 注意力为核心,稀疏注意力与全注意力组合的混合方案成为长上下文场景的主流工程选择。
1.8 从论文到大模型时代
Transformer 发表至今近十年,不仅没有被后续架构取代,反而扩张为整个 AI 产业的基座。本节沿时间线梳理论文发表 后的连锁反应:预训练范式、规模定律、对齐技术、推理模型与开源生态。
1.8.1 预训练范式的确立
Transformer 的传播速度在 AI 领域前所未有。2018 年 6 月,Radford 等人(OpenAI)发布 GPT-1,首次验证 Transformer 解码器的生成式预训练路径;同年 10 月,Devlin 等人(Google)发布 BERT,将 Transformer 编码器用于 大规模无监督预训练,以 80.5 分刷新 GLUE 纪录(此前最优仅约 73 分),在 11 项 NLP 基准任务上同时登顶。BERT 揭示 的核心规律是:在海量无标注文本上预训练语言模型,再在下游任务上微调,可以大幅降低对标注数据的依赖。 2019 年至 2020 年,预训练-微调成为 NLP 标准流程。XLNet(排列语言模型)、RoBERTa(系统消融 BERT 的设计选 择)、ALBERT(参数共享压缩尺寸)和 T5(统一的文本到文本框架)密集发布,从预训练目标、数据规模和训练策略三 个维度持续迭代,将 GLUE 得分推至 90 分以上、超过人类基线。GPT 路线则走向另一极:GPT-2(2019 年 2 月,1.5B 参 数)展示了解码器在海量文本上涌现的语言建模与生成能力,GPT-3(2020 年 5 月,175B 参数)则以少样本学习能力证 明了规模本身的威力。 架构的外溢同样迅速。2020 年 10 月,Dosovitskiy 等人提出 Vision Transformer(ViT),首次将 Transformer 直接应用 于图像分类,打破了卷积神经网络在计算机视觉领域近十年的垄断,开启了 Transformer 向多模态领域的扩展浪潮。
1.8.2 规模定律与涌现能力
2020 年,Kaplan 等人(OpenAI)发表 Scaling Laws for Neural Language Models,通过横跨 6 个数量级的实验(从 768 参数到 1.5B 参数),揭示了测试损失与模型参数量、数据集大小、训练计算量之间的幂律关系:损失 L 与计算量 C 满足 L ∝ C 。这一发现彻底改变了研究范式,模型设计从架构创新转向资源分配的优化。2022 年 3 月,Hoffmann −0.05 等人(DeepMind)在 Chinchilla 论文中修正了结论:最优策略是模型参数与训练 token 数同比缩放(每参数约 20 个 token),而非此前认为的参数优先。这一定律直接影响了 LLaMA 的设计思路,即以更大规模的 token 训练相对较小的模 型,用数据量补偿参数量。 同年,Wei 等人(Google)在 Emergent Abilities of Large Language Models 中系统论证:当训练计算量跨越特定阈值 (约 10 FLOPs,对应 100B 参数量级),多步推理、指令遵循、上下文学习等任务能力从零跃升,呈现非线性的涌现特 征。规模定律回答「该训多大」,涌现能力则回答「大了能得到什么」,两者共同构成大模型时代的资源决策依据。
1.8.3 对齐与推理模型
架构的工程优势在 2017 年已充分展现,但将这一架构转化为面向亿万用户的安全产品,需要解决原始论文未曾触及的问 题:能力不等于可控性。2022 年初,OpenAI 发布 InstructGPT,将强化学习从人类反馈(Reinforcement Learning from Human Feedback, RLHF)引入语言模型训练。其三步流程(监督微调 SFT、奖励模型训练 RM、近端策略优化 PPO)使 1.3B 参数的模型在人类评估中以 85% 的胜率压倒 175B 参数的 GPT-3。RLHF 的工业意义在于:它将优化目标 从预测下一个 token 扩展为产生人类偏好的文本,把安全与有用性的约束内化进训练信号。2022 年 11 月,基于 RLHF 的 ChatGPT 上线,两个月内用户突破 1 亿,成为史上增长最快的消费级应用。 2024 年 9 月,OpenAI 发布 o1,首次在推理阶段引入显式的长思维链(chain-of-thought),标志大模型从快速应答转向 深度推理范式。2025 年 1 月,DeepSeek-R1 以纯强化学习复现了接近 o1 的推理能力,证明无需监督微调冷启动即可激 发思维链推理。2025 年至 2026 年间,推理模型进入全行业铺开阶段:OpenAI 的 o3、DeepSeek-V4、月之暗面 Kimi K3、阿里 Qwen3 先后发布,均将思考-验证-作答的内置推理循环作为标准能力;同期开源社区进一步追平闭源差距,推 理时延与成本持续下探。截至 2026 年,长思维链训练与测试时计算已成为继预训练之后最重要的竞争维度。
1.8.4 开源生态与产业格局
2023 年 2 月,Meta 发布 LLaMA 系列(7B 至 65B),选择了与 Chinchilla 直觉相反的路径:更小模型加极致数据规模, LLaMA-13B 在 1T token 上训练后在多数基准超越 GPT-3-175B。模型权重随后泄露并在社区广泛传播,意外引爆全球开 源微调运动:斯坦福 Alpaca 以不到 600 美元的 API 成本完成指令微调,Vicuna、Koala 等模型数周内涌现,证明高质量 微调数据对下游性能的决定作用不亚于模型规模。此后小模型的竞争力持续提升:Mistral 7B 以分组查询注意力(GQA) 和滑动窗口注意力在 7B 规模超越了 LLaMA-13B;DeepSeek-V2 以多头潜在注意力(MLA)和 DeepSeekMoE 架构,在 236B 总参数、21B 激活参数下达到 GPT-4 级别性能,训练成本约为 GPT-4 的二十分之一;Qwen、Gemma 等开源系列 相继跟进,与闭源模型的差距持续收窄。 工程栈层面,FlashAttention(Dao et al., 2022)、vLLM(Kwon et al., 2023)与 GPTQ、AWQ 等量化方案将推理吞吐推 升 10 倍以上,使大模型的商业化部署成为可能;训练与推理硬件(NVIDIA H100/H200/B200 系列、Google TPU v5p 及 后续型号)的设计指标紧密围绕自注意力的矩阵乘法与内存带宽需求展开。Attention Is All You Need 截至 2026 年引用 量超过 15 万次,是计算机科学领域被引最高的论文之一。 截至 2026 年,Transformer 生态形成三层结构: •顶层:闭源旗舰模型(OpenAI o3、Gemini 3、Claude 4),定义能力上界。 •中层:高性能开源模型(Qwen3 全系、DeepSeek-V4、LLaMA 4),已在多项基准逼近乃至追平闭源旗舰,满足私有化 部署需求。 •底层:专业领域模型(金融的 BloombergGPT、医疗的 Med-PaLM),在垂直场景超越通用模型。 这一结构意味着 Transformer 的影响已远超单篇论文的技术贡献,它催生了从硬件、编译器(Triton)、框架 (vLLM/SGLang)到应用的完整技术栈,相关经济规模在 2024 年已超过 300 亿美元。 多模态方面,GPT-4o、Gemini 2.5、Qwen3-VL 将文本、图像、音频与视频统一到 Transformer 的编码与自回归解码框 架内;推理方面,o1 与 R1 系列将注意力堆叠的思考过程显式展开为更长思维链,使推理计算成为可扩展的新维度。回顾 NLP 七十年的演进:从手工规则到统计模型花费了 40 年,从统计模型到深度学习花费了 20 年,而从 Transformer 到通 用大语言模型仅用了 5 年——这一加速度至今未见衰减迹象,Transformer 已构成现代 AI 的底层计算范式。