1. 从序列到序列自回归与Transformer的范式革命在自然语言处理乃至整个序列建模领域我们经历了从统计语言模型到神经网络的漫长演进。早期循环神经网络RNN及其变体LSTM、GRU一度是处理序列数据的绝对主力它们像一个拥有“记忆”的读者逐字逐句地阅读文本将历史信息压缩到一个隐藏状态中。然而这种串行处理方式带来了两个根本性的瓶颈一是训练时的梯度消失/爆炸问题使得模型难以学习长距离依赖二是推理时的串行计算导致速度缓慢无法充分利用现代并行计算硬件的优势。正是在这样的背景下自回归模型作为一种强大的序列生成范式与Transformer这一彻底摒弃循环结构的革命性架构结合引爆了从NLP到CV、音频乃至科学计算的范式转移。今天我们就来深入拆解这对“黄金搭档”理解自回归如何定义了生成任务的核心逻辑以及Transformer的架构是如何通过“注意力”这一机制完美地支撑并极大优化了这一逻辑。简单来说你可以把自回归模型想象成一个极其严谨的“接龙大师”。给定一段文本的开头它每次只预测下一个最可能的词或字然后将这个预测出的词作为新的输入继续预测下一个如此循环往复直至生成完整的句子或篇章。GPT系列、BERT的生成模式如文本续写都是这一思想的体现。而Transformer则是为这位“大师”打造的一个全新工作台。这个工作台的核心是一个叫做“自注意力”的超级工具它允许模型在生成当前词时瞬间“瞥见”并权衡输入序列或已生成序列中所有位置信息的重要性而无需像RNN那样一步步回溯。这种全局的、并行的信息交互能力正是Transformer横扫各项任务的杀手锏。无论你是刚入门的新手想弄懂ChatGPT、Sora等大模型背后的基础原理还是有一定经验的开发者希望深入理解Transformer的每一行代码和每一个设计抉择亦或是研究者试图把握这一领域的思想脉络这篇文章都将带你从第一性原理出发剥丝抽茧不仅讲清楚“是什么”更重点剖析“为什么这么设计”。我们会从自回归的数学定义和动机开始过渡到Transformer如何用注意力机制实现它并深入编码器-解码器结构、位置编码、层归一化等核心细节最后结合Vision TransformerViT、Swin Transformer等变体探讨其超越NLP的泛化能力。过程中我会穿插大量我在模型调试和代码实现中踩过的坑和总结的经验让你获得一份可以直接“抄作业”的深度理解。2. 自回归模型序列生成的因果律与核心范式2.1 核心思想与数学表述自回归模型的核心理念源于一个直观的假设序列中的下一个元素其概率分布依赖于它之前的所有元素。用更技术的话说它建模的是序列的联合概率分布的链式分解。给定一个长度为 (T) 的序列 (x (x_1, x_2, ..., x_T))其联合概率 (P(x)) 可以分解为一系列条件概率的乘积 [ P(x) P(x_1) \cdot P(x_2 | x_1) \cdot P(x_3 | x_1, x_2) \cdot ... \cdot P(x_T | x_1, x_2, ..., x_{T-1}) ] [ \prod_{t1}^{T} P(x_t | x_{t}) ]这里的 (x_{t}) 代表位置 (t) 之前的所有元素 ((x_1, ..., x_{t-1}))。自回归模型的任务就是学习这个条件概率 (P(x_t | x_{t}))。在训练时我们使用大量的序列数据通过最大化整个序列的似然即最小化负对数似然损失来训练模型参数。在推理生成时我们从起始标记如s开始每一步都基于当前已生成的序列 (x_{t})从模型预测的条件分布 (P(x_t | x_{t})) 中采样或取最可能得到下一个标记 (x_t)然后将其追加到序列中重复此过程直到生成结束标记如/s或达到最大长度。注意这里的“标记”在NLP中通常是词或子词如BPE编码后的结果在图像生成中可能是像素或图像块Patch。自回归是一种通用范式不局限于文本。这种范式有几个关键特性因果性Causal生成 (x_t) 时只能看到它之前的信息 (x_{t})绝不能“偷看”未来的信息 (x_{\ge t})。这是保证生成过程逻辑正确的核心约束。顺序性生成过程是严格从左到右或按某种预定顺序进行的一步接一步。暴露偏差Exposure Bias这是一个经典的训练-推理不一致问题。训练时模型在预测 (x_t) 时其条件输入 (x_{t}) 总是来自真实的训练数据即“教师强制”模式。而在推理时条件输入变成了模型自己之前生成的结果这些结果可能会有错误。一旦模型在某个步骤出错错误会累积并导致后续生成质量下降。这是自回归生成的一个固有挑战虽有诸如计划采样等缓解方法但无法根除。2.2 自回归与RNN/LSTM的羁绊与局限在Transformer出现之前RNN/LSTM是实现自回归模型的自然选择。LSTM的循环单元就像一个带有“记忆门”和“遗忘门”的状态机在每一步接收当前输入 (x_t) 和上一步的隐藏状态 (h_{t-1})输出当前隐藏状态 (h_t)然后通过一个全连接层和Softmax来预测 (P(x_{t1} | x_{\le t}))。为什么说它们“自然”因为RNN的串行处理方式与自回归的因果、顺序特性完美契合。隐藏状态 (h_t) 天然地编码了截至 (t) 时刻的全部历史信息 (x_{\le t})用来预测下一个词 (x_{t1}) 顺理成章。那么局限在哪里并行化训练困难尽管通过“时间展开”和“教师强制”整个序列的损失可以并行计算因为每一步的真实标签 (x_{t1}) 是已知的但隐藏状态 (h_t) 的计算本身是严格串行的。你必须先算完 (h_1)才能算 (h_2)依此类推。这导致训练速度受限于序列长度无法充分利用GPU的大规模并行计算能力。长程依赖学习能力弱虽然LSTM通过门控机制缓解了梯度消失但对于非常长的序列如数百上千个词信息在一步步的传递中仍然会衰减或扭曲模型难以有效捕捉远距离词之间的关系。单向信息流标准的自回归LSTM是单向的只考虑左侧上下文。对于某些理解任务双向上下文更有益。虽然可以训练两个LSTM前向和后向然后拼接但这又增加了复杂性且生成时依然只能是单向。正是这些局限催生了对一种既能保持自回归因果性又能实现完全并行化训练的新架构的迫切需求。Transformer的解码器部分就是对这个需求的完美回答。3. Transformer架构总览注意力驱动的并行化引擎Transformer最初在2017年谷歌的论文《Attention Is All You Need》中提出用于机器翻译任务。它完全摒弃了循环结构仅依赖注意力机制和前馈神经网络来构建编码器和解码器。其整体架构如下图所示此处为描述不生成图表一个标准的Transformer包含一个编码器Encoder和一个解码器Decoder。编码器用于将输入序列如源语言句子编码成一个富含上下文信息的表示序列。解码器则以自回归的方式利用编码器的输出和已生成的部分目标序列来生成下一个目标词。编码器由N个原论文N6相同的层堆叠而成。每一层包含两个核心子层多头自注意力层Multi-Head Self-Attention让序列中的每个位置都能关注到输入序列中的所有位置从而捕获丰富的上下文信息。前馈神经网络层Position-wise Feed-Forward Network一个应用于每个位置独立且相同的全连接网络通常包含一个非线性激活函数用于进行特征变换。每个子层周围都有一个残差连接Residual Connection然后接一个层归一化Layer Normalization。即输出为LayerNorm(x Sublayer(x))。残差连接有助于缓解深层网络中的梯度消失问题让模型更容易训练。解码器同样由N个相同的层堆叠。每一层包含三个核心子层掩码多头自注意力层Masked Multi-Head Self-Attention这是实现自回归的关键。它在计算注意力时通过一个掩码Mask确保在生成位置 (t) 时只能“看到”位置 (t) 及之前的位置即 (x_{t})未来的位置被屏蔽。这强制了因果约束。多头交叉注意力层Multi-Head Cross-Attention这一层连接编码器和解码器。它的Query向量来自解码器上一层的输出而Key和Value向量来自编码器的最终输出。这样解码器在生成每一个词时都能有选择地聚焦于输入序列的不同部分类似于传统机器翻译中的对齐。前馈神经网络层与编码器中的相同。解码器的每个子层同样有残差连接和层归一化。为什么这个架构能解决RNN的痛点关键在于注意力机制特别是自注意力。它允许序列中任意两个位置直接进行交互计算它们之间的相关性权重而无需像RNN那样经过O(n)步的传递。这种“直接连接”使得模型能够轻松捕获长距离依赖。更重要的是自注意力层的计算本质上是矩阵运算可以高度并行化。在训练时对于整个序列我们可以一次性计算出所有位置之间的注意力权重和所有位置的输出极大提升了训练效率。4. 核心机制深度解析注意力、位置与归一化4.1 自注意力机制从Scaled Dot-Product到多头这是Transformer的灵魂。我们首先理解最基本的点积注意力。假设我们有一个输入序列的矩阵表示 (X \in \mathbb{R}^{n \times d_{model}})其中 (n) 是序列长度(d_{model}) 是模型维度如512。第一步生成Q K V我们通过三个不同的线性变换矩阵 (W^Q, W^K, W^V \in \mathbb{R}^{d_{model} \times d_k})通常 (d_k d_v d_{model}/h)h是头数将输入 (X) 投影到查询Query、键Key、值Value空间 [ Q X W^Q, \quad K X W^K, \quad V X W^V ] 这里(Q, K, V \in \mathbb{R}^{n \times d_k})。为什么需要三个不同的投影这赋予了模型更大的灵活性。Query可以理解为当前位置“想要寻找什么”Key是其他位置“拥有什么”而Value是其他位置“实际提供的信息”。通过独立的投影模型可以学习到不同方面的表示从而进行更精细的匹配和信息提取。第二步计算注意力分数和权重注意力分数通过Query和Key的点积来计算衡量两个位置之间的相关性 [ \text{Scores} Q K^T \in \mathbb{R}^{n \times n} ] 然后为了稳定梯度点积结果可能很大导致Softmax梯度极小将分数除以 (\sqrt{d_k})再应用Softmax函数得到归一化的注意力权重矩阵 [ \text{Attention}(Q, K, V) \text{softmax}(\frac{QK^T}{\sqrt{d_k}}) V ]为什么要除以 (\sqrt{d_k})假设 (Q) 和 (K) 的每个分量是独立同分布、均值为0、方差为1的随机变量那么 (Q \cdot K) 的均值为0方差为 (d_k)。当 (d_k) 很大时如原论文的64点积的绝对值可能会变得很大将Softmax函数推入梯度非常小的饱和区极端值处这不利于训练。除以 (\sqrt{d_k}) 相当于将方差缩放回1使得Softmax的输入保持在合理的范围内梯度更稳定。第三步多头注意力单一的注意力头可能只关注到一种模式的关系例如语法依赖。为了允许模型同时关注来自不同表示子空间的信息Transformer采用了“多头”机制。 具体来说我们使用 (h) 组不同的 (W^Q_i, W^K_i, W^V_i) 矩阵并行地执行 (h) 次上述的注意力计算得到 (h) 个输出头 (head_i)。然后将这 (h) 个头拼接起来再通过一个线性投影 (W^O) 映射回 (d_{model}) 维 [ \text{MultiHead}(Q, K, V) \text{Concat}(head_1, ..., head_h) W^O ] 其中 (head_i \text{Attention}(XW^Q_i, XW^K_i, XW^V_i))。这类似于卷积神经网络中使用多个滤波器来提取不同特征。在实践中多头注意力被证明能显著提升模型性能。4.2 位置编码为无位置感的注意力注入顺序信息自注意力机制本身是**置换等变Permutation Equivariant**的。也就是说如果你打乱输入序列的顺序输出序列只是相应地被同等地打乱但元素之间的关系注意力模式可能不变。这对于需要理解顺序的语言来说是灾难性的。“猫追老鼠”和“老鼠追猫”的意思完全不同。因此我们必须显式地将序列中元素的位置信息注入模型。Transformer使用的是正弦余弦位置编码Sinusoidal Positional Encoding。对于位置 (pos) 和维度 (i)(i) 是维度索引其编码值 (PE_{(pos, 2i)}) 和 (PE_{(pos, 2i1)}) 由不同频率的正弦和余弦函数给出 [ PE_{(pos, 2i)} \sin(pos / 10000^{2i/d_{model}}) ] [ PE_{(pos, 2i1)} \cos(pos / 10000^{2i/d_{model}}) ]这个设计非常巧妙它对于每个位置是唯一的且能编码绝对位置。它允许模型轻松学习相对位置。因为对于固定的偏移量 (k)(PE_{posk}) 可以表示为 (PE_{pos}) 的线性函数。这使得模型能够捕捉到“距离pos偏移k的位置”这样的相对关系。它的值域有界在[-1, 1]之间且随着位置变化平滑易于模型学习。在实现中位置编码矩阵 (PE)形状为[max_seq_len, d_model]被计算出来然后直接加到输入词嵌入矩阵上X Embedding PE。这样输入给Transformer的每个词向量都同时包含了语义信息来自嵌入和位置信息。实操心得在预训练模型中位置编码有时会被替换为可学习的参数nn.Embedding这被称为“学习式位置编码”。例如BERT就采用了这种方式。在实践中对于固定最大长度的任务如分类学习式编码可能更方便而对于需要泛化到更长序列的任务正弦编码因其外推性可能更有优势。但最新的研究如RoPE Rotary Position Embedding提供了更好的解决方案。4.3 层归一化与残差连接稳定深度训练的基石Transformer的每一子层都遵循“Sublayer - Add - Norm”的顺序即LayerNorm(x Sublayer(x))。这与原始的“Norm - Sublayer”顺序Pre-Norm或没有残差的版本不同。残差连接Add其思想来源于ResNet。它让输入信号 (x) 有一条“捷径”直接传到加法器与子层的输出 (F(x)) 相加。这带来了两个好处缓解梯度消失在反向传播时梯度可以通过这条捷径直接传递避免了经过复杂非线性变换时的梯度衰减使得训练非常深的网络成为可能。恒等映射网络可以轻松地学习到“如果这个子层没用那就输出输入本身”即令 (F(x) \approx 0)这降低了优化的难度。层归一化LayerNorm层归一化是对一个样本的所有特征维度进行归一化与批归一化BatchNorm对整个批次中同一特征维度进行归一化不同。对于向量 (x \in \mathbb{R}^d)层归一化计算 [ \text{LayerNorm}(x) \gamma \odot \frac{x - \mu}{\sqrt{\sigma^2 \epsilon}} \beta ] 其中 (\mu, \sigma^2) 是 (x) 在所有 (d) 个维度上计算的均值和方差(\gamma, \beta) 是可学习的缩放和偏移参数(\epsilon) 是防止除零的小常数。为什么用LayerNorm而不是BatchNorm对于序列数据BatchNorm要求同一批次内所有样本在同一个特征维度上统计稳定。但在NLP中不同句子的长度不同需要padding且同一特征在不同位置如句首和句尾的分布可能天然不同BatchNorm的效果不佳。LayerNorm对每个样本独立归一化不依赖批次大小对序列长度变化更鲁棒非常适合变长序列数据。“Add Norm”的顺序原论文采用“后归一化”Post-Norm即先残差相加再归一化。后续研究发现“前归一化”Pre-Norm即x Sublayer(LayerNorm(x))在训练极深模型时如100层以上通常更稳定收敛更快已成为许多大型模型如GPT系列的标准配置。Post-Norm在原始6层Transformer上工作良好但深度增加时梯度容易不稳定。5. 编码器与解码器的协同从理解到生成5.1 编码器双向上下文的构建者编码器的目标是理解整个输入序列为每个输入位置生成一个融合了全局上下文信息的表示。由于其不涉及自回归生成它的自注意力层是非掩码的。这意味着在计算位置 (i) 的表示时它可以“看到”序列中所有位置 (j)包括 (j i)的信息即双向上下文。这种双向性对于理解任务至关重要。例如在句子“这个苹果很好吃我不喜欢那个”中要理解“那个”指代的是“苹果”需要看到后面的“不喜欢”。编码器的双向自注意力完美地捕获了这种前后文关系。编码器堆叠多层每一层都在前一层的表示基础上进一步抽象和融合信息。最终顶层编码器的输出可以被视为输入序列的“深度语义表示”将传递给解码器作为参考。5.2 解码器因果掩码下的自回归生成器解码器是自回归模型在Transformer中的具体实现。它的工作分两步走对应其两个注意力层掩码自注意力层Masked Self-Attention 这一层处理的是目标序列正在生成的序列。为了保证自回归的因果性必须防止当前位置关注到未来的位置。这是通过一个下三角掩码矩阵实现的。 在计算注意力分数矩阵Scores QK^T后我们加上一个掩码矩阵Mask。Mask是一个下三角矩阵对角线及以下元素为0右上角未来位置为负无穷大实践中是一个很大的负数如-1e9。 [ \text{MaskedScores} \text{Scores} \text{Mask} ] 然后进行Softmax。由于未来位置的分数是负无穷经过Softmax后其权重变为0。这样在计算位置 (t) 的输出时它只能聚合位置 (1) 到 (t) 的信息。这是实现自回归生成的关键技术。交叉注意力层Cross-Attention 这一层连接了编码器和解码器。它的Query来自解码器掩码自注意力层的输出代表当前已生成目标序列的上下文而Key和Value来自编码器的最终输出代表源序列的上下文。 其计算过程与普通注意力无异Attention(Q_dec, K_enc, V_enc)。 这一机制允许解码器在生成每一个目标词时动态地、有选择地去“查阅”编码器表示中与之最相关的部分。例如在翻译“我爱机器学习”成“I love machine learning”时生成“machine”时解码器的注意力可能会高度集中在源句的“机器”和“学习”这两个词上。解码器的输出经过最后的线性层和Softmax就得到了词汇表上的概率分布 (P(x_t | x_{t}, \text{encoder_input}))我们从中采样或取argmax得到下一个词。注意事项在训练解码器时我们同样使用“教师强制”。即无论上一步生成的是什么当前步的输入都是真实目标序列的嵌入并右移一位。但在计算掩码自注意力时掩码确保了模型在预测位置 (t) 的词时无法利用位置 (t) 及之后的目标序列信息。损失函数是预测序列与真实目标序列的交叉熵。6. Transformer的变体与超越NLP的泛化Transformer的成功远不止于机器翻译。其核心思想——基于注意力的全局信息交互——被证明是一种强大的通用建模工具。6.1 仅解码器模型Decoder-Only与GPT系列在文本生成领域GPT系列模型采用了仅解码器的架构。它去掉了编码器和解码器中的交叉注意力层只保留了解码器栈使用掩码自注意力。这种架构纯粹用于自回归语言建模给定一段上文预测下一个词。为什么有效对于通用的文本理解和生成任务一个强大的、基于海量文本训练的自回归语言模型本身就能学习到丰富的世界知识和语言规律。它不需要一个明确的“编码器”来提供额外的源信息因为所有的信息都来自它正在生成的文本历史本身。GPT通过将任务都转化为文本提示Prompt的形式利用其强大的续写能力来解决各种问题如问答、摘要、代码生成等。与原始编解码器Transformer的区别架构简化只有解码器块没有编码器和交叉注意力。归一化方式通常采用Pre-Norm层归一化在子层之前以获得更稳定的训练。位置编码早期GPT用学习式位置编码GPT-3及以后可能采用了更先进的方案。规模巨大参数量从亿级GPT-1增长到千亿级GPT-3证明了缩放定律的有效性。6.2 Vision TransformerViT当Transformer遇见图像ViT的工作是将图像分割成固定大小的图像块Patches例如16x16像素然后将每个块展平通过一个线性投影层映射成一个向量类似于词嵌入。同时会添加一个额外的可学习的[CLS]标记向量用于最终的图像分类。这些向量序列加上位置编码后就作为输入送入标准的Transformer编码器注意是编码器不是解码器。为什么图像块可以看作“词”在NLP中词是离散的语义单元。在图像中一个局部图像块也包含了局部区域的视觉特征边缘、纹理、颜色。通过在大规模数据集如ImageNet-21k或JFT-300M上预训练ViT的Transformer编码器学会了将这些“视觉词”组合起来理解整幅图像。ViT的成功证明了只要将数据转化为序列形式Transformer强大的全局建模能力就能在视觉领域大放异彩甚至在某些任务上超越传统的CNN。6.3 Swin Transformer引入层次化与局部性先验ViT将图像视为一维序列失去了图像的二维结构信息空间邻近性和尺度信息。Swin Transformer通过两个创新解决了这个问题层次化架构像CNN一样构建了特征金字塔。它通过“Patch Merging”操作在深层将相邻的小块合并成一个大块从而逐渐扩大感受野并减少序列长度形成多尺度特征表示。滑动窗口注意力为了降低计算复杂度原始自注意力是序列长度的平方复杂度并引入局部性归纳偏置图像中相邻区域关联性更强Swin Transformer将注意力计算限制在不重叠的局部窗口内。同时为了允许跨窗口的信息流动它在相邻层之间交替使用常规窗口和移动窗口划分。Swin Transformer在图像分类、目标检测、分割等多个视觉任务上达到了SOTA展示了将Transformer与视觉领域先验知识结合的巨大潜力。6.4 其他重要变体与技巧线性注意力为了解决标准注意力 (O(n^2)) 复杂度对长序列不友好的问题一系列线性注意力变体被提出如Linformer, Performer它们通过核函数近似等方式将复杂度降至 (O(n))。相对位置编码正弦位置编码是绝对编码。相对位置编码如Transformer-XL、T5使用的直接建模序列中两个元素之间的相对距离在许多任务上表现更好。自适应计算时间让模型动态决定对输入的不同部分投入多少计算资源如更多的注意力头或层。7. 实战中的关键问题与调优经验理解了原理在真正实现或调优Transformer模型时还有一些“坑”和经验需要分享。7.1 训练不稳定与学习率预热Transformer模型尤其是深层的在训练初期非常不稳定损失可能剧烈波动。一个被广泛采用的技巧是学习率预热Learning Rate Warmup。具体做法在训练的前 (N) 个步数或周期内将学习率从0线性或某种曲线增加到预设的初始学习率。例如前4000步预热到1e-4。为什么有效在训练初期模型参数是随机初始化的直接使用较大的学习率可能导致梯度更新步伐过大破坏掉那些已经初步学习到的、有用的特征表示。预热给了模型一个“热身”阶段让参数先在小学习率下朝着一个大致正确的方向移动稳定下来后再加速。7.2 梯度裁剪Gradient Clipping这是防止训练爆炸梯度爆炸的另一个标准操作。在反向传播计算出梯度后如果梯度的L2范数超过某个阈值max_norm就将整个梯度向量按比例缩放使其范数等于max_norm。# 伪代码示例 torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm1.0)对于Transformer梯度裁剪通常与学习率预热配合使用是稳定训练的必要手段。7.3 标签平滑Label Smoothing在分类任务如机器翻译的词汇预测中我们通常使用交叉熵损失其中目标是一个one-hot向量正确类为1其余为0。这可能导致模型对它的预测过于自信概率接近1可能降低泛化能力并让训练变得脆弱。标签平滑将真实标签的1替换为 (1 - \epsilon)并将其他类的0替换为 (\epsilon / (K-1))其中 (K) 是类别数(\epsilon) 是一个小常数如0.1。这相当于给模型增加了一点正则化鼓励它不要给出极端概率通常能带来轻微的精度提升和更好的校准。7.4 注意力权重的可视化与调试注意力机制的可解释性是其一大优点。在调试模型时可视化注意力权重矩阵是非常有用的。检查因果掩码在解码器的第一层确保注意力权重矩阵是严格的下三角形状未来位置权重为0。如果不是说明掩码实现有误。理解对齐在机器翻译任务中可视化解码器交叉注意力层第二层的权重可以看到目标词与源词之间的“对齐”关系这有助于判断模型是否学到了合理的对应。发现异常如果某个头的注意力权重非常均匀或非常集中于对角线可能意味着这个头没有学到有用的模式或者模型存在退化。7.5 长序列处理与内存优化Transformer的自注意力内存消耗是 (O(n^2))对于长序列如长文档、高分辨率图像这会成为GPU内存的瓶颈。应对策略梯度检查点在训练时不保存所有中间激活值用于反向传播而是在反向传播时重新计算部分激活。以时间换空间。使用线性注意力变体如前所述的Linformer, Performer等。分块处理对于极长序列可以将其分成重叠的块分别处理再融合结果但这会损失块间的全局交互。Flash Attention等优化内核使用高度优化的CUDA内核来加速注意力计算并减少内存占用。自回归模型定义了生成式AI的因果逻辑而Transformer架构则为这一逻辑提供了迄今为止最强大、最可并行化的实现引擎。从最初的机器翻译到如今的GPT、ViT、Swin其变体已渗透到AI的每一个角落。理解其核心——注意力机制如何实现全局交互、位置编码如何注入顺序、编解码器如何协同、以及各种训练技巧为何有效——是深入现代深度学习不可或缺的一课。这套框架的美妙之处在于其简洁与通用将数据视为序列用注意力建立联系。当你下次使用或阅读关于大模型的文章时不妨在脑中过一遍Q、K、V的投影想想那个下三角掩码如何守护着生成的因果性或许会有更深的体会。