Decoder-only 架构全景:任务统一、信息交互与表示更新
Decoder-only 架构全景:任务统一、信息交互与表示更新
Decoder-only 将任务描述、输入内容和生成历史组织成一条连续的 Token序列,并以自回归方式预测下一个 Token。自然语言理解、问答、摘要、代码生成和部分逻辑推理任务都可以转换为这种序列形式,进而使用统一的训练目标和主要计算路径。
在模型内部,因果自注意力按照序列顺序整合已有信息,前馈网络更新每个位置的表示,多层结构则持续重复这两类计算。统一的结构使不同来源的数据能够共同训练一套模型参数,因果掩码也明确限制了每个位置可以读取的信息范围。
本文先介绍 Decoder-only 的自回归任务定义,再比较它与 Encoder–Decoder 的计算路径,随后说明注意力机制、前馈网络、网络深度和训练目标在统一序列生成中的作用。
一、自回归语言建模是 Decoder-only 的基础
自回归语言模型对一个 Token 序列建立如下概率模型:
根据概率的链式法则,整个序列的联合概率可以写成:
在每一个位置上,模型估计的条件概率为:
这个概率表示:模型根据当前位置之前的内容,计算下一个 Token 的概率分布。
GPT 系列沿用了这种生成式预训练方式 [2]。GPT-2 的实验显示,在大规模、多来源文本上使用下一 Token 预测目标进行训练,模型能够初步处理问答、摘要和翻译等任务 [3]。GPT-3 则把任务说明和少量示例直接放入上下文,并展示了模型在不更新参数的情况下完成多种任务的能力 [5]。
在上述自回归任务中,Transformer 将已有序列转换为当前位置的上下文表示:
其中,\(h_t\) 是结合了历史信息的上下文表示。语言模型输出层再将它映射到词表空间:
\(V\) 表示词表大小,\(z_t\) 中的每一项对应一个候选 Token 的分数。
Decoder-only 可以据此概括为一种面向自回归语言建模的上下文表示系统。
二、从 Encoder–Decoder 到 Decoder-only:任务接口和计算路径的变化
1. Encoder–Decoder 与机器翻译的信息结构
2017 年提出的 Transformer 主要面向机器翻译等序列到序列任务 [1]。这类任务通常可以写成:
例如:
在开始生成时,输入 \(X\) 和输出 \(Y\) 的可见范围不同:
- 输入 \(X\) 在开始生成之前已经完整给出;
- 输出 \(Y\) 需要按照顺序逐个生成。
因此,原始 Transformer 将计算分为两个阶段:
Encoder 通过双向自注意力处理完整输入,得到输入表示 \(H_X\)。Decoder 先通过带因果掩码的自注意力处理已经生成的内容,再通过交叉注意力(Cross-Attention)读取 \(H_X\),最后预测下一个输出 Token。
这种结构与机器翻译中输入完整可见、输出逐步生成的特点一致。
2. 两种架构的信息融合路径不同
设输入为:
已经生成的输出为:
在 Encoder–Decoder 中,计算过程可以简化为:
也就是说,Decoder 先形成输出序列内部的表示,再使用这份表示查询输入信息。自注意力和交叉注意力通常使用不同的参数,因此模型可以分别学习输出内部的关系,以及输出与输入之间的关系。
Decoder-only 则把输入和输出拼接为一条序列:
并统一使用带因果掩码的自注意力:
当序列末尾是 \(y_2\)、模型准备预测下一个 Token 时,当前位置可以读取排在它之前的全部输入和输出。输入信息与输出历史在同一个自注意力模块中参与计算,不再设置单独的交叉注意力层。
两种架构都能让输出读取输入,但信息融合方式不同。Encoder–Decoder 分阶段处理输入和输出,并分别建立对应表示;Decoder-only 按一条连续序列处理二者,共享主要计算路径。
3. 因果掩码带来的边界
Encoder 的自注意力通常不使用因果掩码,因此每个输入位置都可以读取输入序列中的其他位置,并结合完整输入形成表示。标准 Decoder-only 使用因果掩码,每个位置只能读取它自己及之前的 Token,不能读取后面的 Token。
例如,在序列:
中,\(y_2\) 可以读取 \(x_1,x_2,x_3,y_1\);但 \(x_1\) 不能读取 \(x_2\) 和 \(x_3\)。所以,把输入和输出拼接后进行因果自注意力,与 Encoder 对输入进行完整的双向编码并不等价。
这一差异也说明,两种架构各有适用范围:
- Encoder–Decoder 能够先对完整输入进行双向编码,并让自注意力与交叉注意力分别学习不同关系;
- Decoder-only 结构更统一,可以直接把指令、对话历史、示例、文档和输出组织成连续上下文;
- 具体效果仍取决于任务特点、训练数据、模型规模和实现方式,不能只根据架构名称判断优劣。
4. 从统一文本任务到统一自回归接口
T5 已经把分类、问答、摘要和翻译等任务统一为“文本输入到文本输出”的形式 [4]。例如,分类任务可以输出类别名称,问答任务可以输出答案文本。虽然任务形式得到了统一,T5 内部仍然采用 Encoder–Decoder 结构。
与 T5 不同,Decoder-only 还把指令、输入、示例和输出历史放入同一条序列,并通过统一的因果自注意力进行处理。
例如,下列内容都可以转换为 Token 序列:
- 系统指令;
- 用户问题;
- 历史对话;
- 少样本示例;
- 检索到的资料;
- 工具返回结果;
- 已经生成的内容。
模型始终执行同一个计算目标:
这种统一有两方面意义。
第一,它减少了任务专用结构。分类任务不一定需要单独的分类头,问答、摘要和代码补全也不必分别设计完全不同的输出层。
第二,不同来源和不同形式的数据可以共同训练同一套模型参数。来自语言理解、问答、代码和推理任务的训练信号,都可以更新同一套 Token 嵌入、注意力层、前馈网络和语言模型输出层。模型因而有机会在任务之间复用语言表示、事实知识和处理信息的方法。
规模定律研究表明,语言模型的交叉熵损失与模型规模、数据量和训练计算之间存在较稳定的幂律关系 [6]。GPT-3 的实验还显示,扩大模型规模能够改善多项任务中的少样本表现 [5]。统一接口为不同任务共同更新模型参数提供了条件,但不能单独解释零样本学习(zero-shot learning)、少样本学习(few-shot learning)和上下文学习(in-context learning)的形成。
模型能力还受到数据覆盖范围与质量、参数规模、训练计算、优化方法和后训练方式等因素影响。参数共享有时也会造成任务之间相互干扰。
Decoder-only 统一了任务描述方式、主要计算路径和训练目标,使来自不同任务的数据能够共同更新同一套参数,并在生成时通过统一的上下文格式指定任务。

图 1:Encoder–Decoder 分阶段处理输入和输出;Decoder-only 将指令、输入、示例和已生成内容组织在同一条自回归序列中。
三、注意力机制:根据当前表示整合上下文信息
经过分词、Token 嵌入和位置处理后,输入可以表示为:
其中,\(T\) 是序列长度,\(D\) 是隐藏层维度。每个位置的初始表示包含 Token 信息和位置信息。
模型需要根据当前表示,动态计算当前位置与前文各位置的相关程度。同一个词在不同句子中的含义可能不同。例如,“苹果”可以表示水果,也可以表示公司。固定的位置依赖无法覆盖这种随上下文变化的关系。
自注意力(Self-Attention)通过查询向量(Query)、键向量(Key)和值向量(Value)完成这一计算:
其中,\(Q\)、\(K\) 和 \(V\) 都是由输入表示 \(X\) 经过线性变换得到的矩阵。矩阵中的每一行对应一个位置:\(Q\) 用于发起查询,\(K\) 用于计算位置间的匹配分数,\(V\) 提供随后参与加权求和的内容。
注意力计算为:
\(QK^T\) 计算位置之间的匹配分数,Softmax 将分数转换为权重,再对 \(V\) 做加权求和。\(M\) 表示注意力掩码。在标准 Decoder-only 中,当键位置 \(j\) 位于查询位置 \(i\) 之后时,\(M_{ij}=-\infty\);其余合法位置取 \(0\)。Softmax 之后,未来位置的注意力权重为 \(0\)。
注意力机制由此根据当前位置和上下文内容,动态确定要读取哪些历史信息,以及各部分信息所占的权重。
经过注意力机制处理后,张量形状通常仍然是:
形状没有改变,但每个位置的表示已经结合了与它相关的上下文。这个过程产生的表示通常称为上下文化表示(Contextualized Representation)。
多头注意力会在多个表示子空间中并行完成上述计算。不同注意力头可以学习不同的关系,但这些关系由训练过程形成,并不是人工预先规定的。它们也不一定能够被简单解释为某一种固定的语言关系。
多头注意力使模型能够从多个表示子空间同时整合上下文信息。在 Decoder-only 中,各注意力头仍受同一因果方向约束,只能利用当前位置及其之前的表示。

图 2:\(Q\) 与 \(K\) 计算匹配分数,Softmax 得到注意力权重,再对 \(V\) 提供的内容向量进行加权汇总。
四、FFN:对每个位置的表示进行非线性变换
注意力机制负责从上下文中整合信息,FFN 随后对每个位置的表示继续进行变换。
这一步由前馈网络(Feed-Forward Network,FFN)完成。经典形式为:
其中,\(\sigma\) 是非线性激活函数。如果去掉非线性部分:
两次线性变换仍然可以合并为一次线性变换,无法提供同等的非线性表示能力。
SwiGLU 是部分现代大语言模型采用的门控 FFN 形式,PaLM 和 Llama 3 都使用了这一结构 [9][10]。相关研究在对应实验设置中观察到,Transformer 的 FFN 子层采用部分 GLU 变体时,效果优于 ReLU 或 GELU [7]。
注意力机制负责整合不同位置之间的信息,FFN 负责对每个位置的表示进行非线性变换。二者在 Transformer 层中依次执行,使模型既能利用上下文关系,也能继续更新每个位置的表示。
同一层 FFN 的位置参数共享
在一个标准 Transformer 层中,同一套 FFN 参数会应用到序列的所有位置:
这里的“共享”是指同一层内的不同位置共享参数;不同 Transformer 层通常各自拥有独立的 FFN 参数。
自然语言中的绝对位置通常没有固定语义。第 17 个位置可能是人名、代码、数字或标点,因此没有必要仅根据位置为每个 Token 配置独立的 FFN。
不同内容也可以使用不同的处理参数。混合专家模型(Mixture of Experts,MoE)通过分配器(Router)选择参与计算的专家网络:
分配器根据当前 Token 的表示选择一个或少数几个专家网络进行计算。Switch Transformer 采用稀疏激活的专家选择方式,使不同输入可以调用不同参数,同时避免每次前向计算都激活全部专家 [8]。
参数是否共享应当根据数据中的稳定结构来决定:
- 如果不同位置没有固定语义角色,共享位置参数通常更合适;
- 如果输入内容存在稳定差异,可以根据内容动态选择不同参数;
- 在用户、商品、场景等角色明确的推荐系统中,也可以按字段或角色设计不同的处理模块。
这部分内容属于参数共享方式的延伸。对于 Decoder-only 主线而言,关键点是:标准 FFN 在同一层的所有序列位置共享参数,而 MoE 可以根据当前内容动态选择部分参数。
五、Transformer 的深度:逐层更新上下文表示
单层注意力机制已经能够整合上下文信息,但一层计算通常不足以形成复杂表示。
第 \(l+1\) 层接收的不是原始 Token 表示,而是第 \(l\) 层的输出:
新一层会基于这组表示重新计算:
并再次更新位置之间的注意力权重和每个位置的表示。整个过程可以写成:
每一层都会根据当前表示整合上下文信息,并通过 FFN 更新各位置表示。
因为上一层已经改变了输入表示,下一层计算出的注意力关系也可能不同。因此,多层 Transformer 不是简单重复完全相同的计算结果,而是在前一层结果的基础上继续更新表示。
残差连接和归一化为深层网络训练提供了重要支持。
残差连接的一般形式可以写成:
它让子层在已有表示的基础上学习更新量,同时为信息传播和梯度传播提供较短路径。
归一化用于调节隐藏表示的数值尺度,改善深层网络的训练稳定性。具体模型可能采用 LayerNorm、RMSNorm,以及 Pre-Norm 或 Post-Norm 等不同方案,但目标都是使多层计算更容易优化。
现代大语言模型仍然采用这一基本结构。例如,PaLM 是大规模稠密 Transformer 语言模型 [9],Llama 3 的最大模型也使用稠密 Transformer 主干 [10]。这些实例说明,由注意力机制、FFN、残差连接和归一化组成的多层结构仍被用于超大规模模型。
在 Decoder-only 中,每一层都沿因果方向继续更新上下文表示。网络深度增加了连续更新表示的次数,但不会改变只能读取当前位置及其之前内容的约束。
六、下一 Token 预测目标驱动自回归预训练
经过多层 Transformer 后,位置 \(t\) 得到隐藏表示:
语言模型输出层将它映射到词表空间:
经过 Softmax 后,模型得到下一个 Token 的概率分布。在自回归预训练中,训练标签通常是原序列中紧随其后的 Token,单个位置的交叉熵损失为:
从数学形式上看,每个位置都在完成一次词表范围内的分类。但整个语言模型并不只是一个普通分类器,因为它学习的是序列的条件概率,而且生成阶段会把已经生成的 Token 继续加入上下文。
预训练时,因果掩码允许模型并行计算一个训练序列中多个位置的损失。生成时,后一个 Token 依赖前面已经生成的结果,因此通常需要按顺序生成。监督微调和偏好训练可能采用不同的数据组织方式与损失函数,不属于本节讨论的下一 Token 预训练目标。
在自回归预训练阶段,模型不会直接收到“这个注意力头应当学习指代关系”或“这一层应当完成逻辑推理”的人工标签。训练过程主要提供两类约束:
- 模型结构规定信息参与计算的方式;
- 下一 Token 的预测损失判断输出是否符合训练数据。
模型内部的表示方式和计算模式由数据、目标函数、模型结构和优化过程共同形成。
结语:Decoder-only 的整体认识
Decoder-only 将指令、输入、示例和生成历史组织在同一条 Token 序列中,并始终计算下一个 Token 的条件概率。因果自注意力负责在可见历史范围内整合信息,FFN 更新各位置表示,多层结构则在相同因果约束下持续完成这两类计算。
统一的任务接口使自然语言理解、问答、摘要、代码生成和部分逻辑推理任务能够使用相同的输入输出形式,并共同更新一套模型参数。这种共享为跨任务迁移提供了基础,但不会消除任务差异,也不能单独保证零样本学习、少样本学习和上下文学习等能力形成。
因此,Decoder-only 的主要特点是统一自回归任务定义、上下文组织方式和主要计算路径。模型的最终表现仍由架构、训练数据、参数规模、计算量、优化方法和后训练方式共同决定。
参考论文与资料
[1] Vaswani, A., et al. (2017). Attention Is All You Need. NeurIPS. arXiv:1706.03762
[2] Radford, A., et al. (2018). Improving Language Understanding by Generative Pre-Training. OpenAI. 论文 PDF
[3] Radford, A., et al. (2019). Language Models are Unsupervised Multitask Learners. OpenAI. 论文 PDF
[4] Raffel, C., et al. (2020). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. JMLR. arXiv:1910.10683
[5] Brown, T. B., et al. (2020). Language Models are Few-Shot Learners. NeurIPS. arXiv:2005.14165
[6] Kaplan, J., et al. (2020). Scaling Laws for Neural Language Models. arXiv:2001.08361
[7] Shazeer, N. (2020). GLU Variants Improve Transformer. arXiv:2002.05202
[8] Fedus, W., Zoph, B., & Shazeer, N. (2022). Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity. JMLR. arXiv:2101.03961
[9] Chowdhery, A., et al. (2022). PaLM: Scaling Language Modeling with Pathways. arXiv:2204.02311
[10] Grattafiori, A., et al. (2024). The Llama 3 Herd of Models. arXiv:2407.21783

浙公网安备 33010602011771号