考察点
这道题是结构层面的开胃题,面试官想确认你真正理解 Transformer 的组成部分,而不是只会背「自注意力+前馈网络」。更深的意图是看你能否说清楚三种架构变体的差异,以及为什么 GPT、LLaMA、Qwen 这些主流模型一致选择 Decoder-only。追问一般会往因果注意力的实现细节(attention mask)、Encoder-Decoder 衰落的原因、以及 Prefix LM 这类折中方案上走。
参考答案
Transformer 的基本组成
原始 Transformer(Attention Is All You Need, 2017)是 Encoder-Decoder 结构,为机器翻译设计。无论是哪种变体,核心积木都一样:token embedding 加位置信息作为输入,堆叠 N 个 block,每个 block 包含多头自注意力子层和前馈网络(FFN)子层,每个子层配残差连接和 LayerNorm。FFN 通常是两层线性变换夹一个激活函数,hidden 维度一般放大到 4 倍左右,现代模型多用 SwiGLU 替代 ReLU/GELU。
三种变体的区别在于注意力可见范围:
- Encoder-only(BERT):双向注意力,每个 token 能看到全部上下文。适合做理解类任务——分类、NER、检索向量。
- Decoder-only(GPT 系列):因果注意力(causal attention),每个 token 只能看到自己和左边的 token,通过一个下三角 attention mask 实现。
- Encoder-Decoder(T5、原始 Transformer):Encoder 双向编码输入,Decoder 因果生成,中间用 cross-attention 连接两边。
为什么主流大模型是 Decoder-only
第一,生成是通用范式。几乎所有 NLP 任务都能统一成「给定上文,预测下一个 token」。分类可以变成生成标签,翻译、摘要、问答本来就是生成。Decoder-only 天然就是这个范式,不需要为不同任务设计不同的头和训练目标。
第二,训练目标简单且数据利用率最高。next token prediction 是自监督的,任何文本都能直接拿来训,不需要标注、不需要掩码设计。BERT 的 MLM 每次只预测 15% 的 token,其余 token 的损失被浪费了;Decoder-only 每个位置都有监督信号。
第三,工程上高效。因果 mask 让每个位置只依赖前面的 KV,KV cache 机制顺理成章——推理时只需缓存历史的 key/value,每步只算一个 token 的注意力。Encoder-Decoder 要维护两套状态,cross-attention 还带来额外的工程复杂度。
第四,规模化验证了这条路。GPT-3 用 175B 参数证明了纯 Decoder-only + 大数据 + 大算力能涌现出 few-shot 能力,后续 LLaMA、Qwen、DeepSeek 都沿用并微调这个架构(RMSNorm、RoPE、SwiGLU、GQA),架构本身已经没有本质变化。
Encoder-Decoder 为什么衰落
理论上 Encoder-Decoder 对「输入输出不等长」的任务(翻译)更合理,但实践中发现:足够大的 Decoder-only 模型把输入塞进 prompt 里一样能做这些任务,而且只要一套训练管线。T5、FLAN-T5 这一代之后,工业界基本不再训练大规模 Encoder-Decoder 模型。BERT 代表的 Encoder-only 则退回到检索、embedding 这类专用场景。
可能的追问
- 因果注意力具体怎么实现? 在 softmax 之前给 attention score 矩阵加一个上三角为 -inf 的 mask,softmax 后未来位置的权重归零。
- Prefix LM 是什么? 一种折中:prompt 部分双向可见,生成部分因果。UniLM、GLM 走这条路,但没成为主流。
- 为什么现代模型把 LayerNorm 换成了 RMSNorm? RMSNorm 省去均值平移,只按均方根缩放,计算更省且效果相当,LLaMA 之后成为标配。