01. 什么是 Transformer?它的整体结构是什么?
整理 Transformer 的基本定义、模块组成与架构演变。
简单回答
Transformer 是 Google 在 2017 年提出的一种完全基于注意力机制的序列建模架构,抛弃了 RNN 的递归结构。原始结构是 Encoder-Decoder,核心组件是 Multi-Head Self-Attention 和 FFN(Feed-Forward Network),配合残差连接和 LayerNorm 堆叠而成。当前主流大模型基本都走 Decoder-Only 路线。
详细解释
Transformer 出自论文 "Attention Is All You Need",它最核心的贡献是用 Self-Attention 替代了 RNN/LSTM 的序列依赖结构,使得每个 token 可以直接和序列中所有其他 token 交互,不再需要一步步递推。
原始结构分两大块
- Encoder 端:由 N 层(原文是 6 层)堆叠,每层包含两个子层——Multi-Head Self-Attention 和 Position-wise FFN。每个子层后面接残差连接 + LayerNorm。
- Decoder 端:也是 N 层堆叠,但比 Encoder 多了一个 Cross-Attention 子层,用来关注 Encoder 的输出。Decoder 的 Self-Attention 还加了 Causal Mask,确保生成时只能看到当前位置之前的 token。
为什么这样设计
- Self-Attention 让模型具备了全局信息捕获能力,而且计算可以高度并行化,比 RNN 的顺序依赖快很多。
- FFN 提供了非线性变换能力,可以理解为对每个 token 的特征做独立的深层映射。
- 残差连接解决深层网络梯度消失的问题,LayerNorm 帮助训练稳定。
工程视角补充
现在主流大模型基本都走 Decoder-Only 路线(GPT 系列、LLaMA、Qwen 等),Encoder-Decoder 架构主要在 T5、BART 以及一些翻译/摘要场景还在用。面试时提到 Transformer 结构,建议同时说清楚"原始是 Encoder-Decoder,当前主流是 Decoder-Only",这一点面试官会比较在意。
面试时可以这样答
Transformer 是 2017 年 Google 提出的一种基于纯注意力机制的架构,核心思想是用 Self-Attention 替代 RNN 的递归计算,这样序列中的任意两个位置可以直接交互,而且计算可以并行化。
原始结构是 Encoder-Decoder 形式。Encoder 端每层是 Multi-Head Self-Attention 加上 FFN,中间有残差连接和 LayerNorm。Decoder 端在此基础上多了一个 Cross-Attention 来关注 Encoder 的输出,同时 Self-Attention 加了 Causal Mask,保证自回归生成时只能看到前面的 token。
不过现在主流大模型,比如 GPT、LLaMA、Qwen 这些,基本都是 Decoder-Only 架构,把 Encoder 去掉了,只保留带 Causal Mask 的 Decoder 部分。Encoder-Decoder 架构在翻译、摘要等 seq2seq 任务里还有用武之地,比如 T5 和 BART。
真正让 Transformer 成为基础设施的原因,一个是并行训练效率远超 RNN,另一个是它的 Scaling 特性非常好,模型越大、数据越多,性能提升越明显。
常见追问
- Decoder-Only 为什么比 Encoder-Decoder 更适合大模型?(→ 涉及统一建模、Scaling 效率)
- 残差连接和 LayerNorm 的位置有 Pre-Norm 和 Post-Norm 之分,有什么影响?
- Transformer 的计算复杂度是多少?长序列场景下怎么处理?