transformer架构面试介绍
“解码器在自注意力上做了遮蔽(mask),保证每个位置只能看到之前生成的 token,同时通过交叉注意力引入编码器输出,使生成能依赖源输入。”
一、解码器的基本原理(面试口径)
“Transformer 解码器本质上和编码器类似,都是多层堆叠的自注意力 + 前馈网络结构,但有几个关键不同点,针对生成任务做了优化。”
1️⃣ 和编码器相同的地方
-
都是 多层堆叠的 Transformer block
-
每层包含:
- 自注意力(Self-Attention)
- 前馈网络(Feed Forward Network)
- 残差连接 + LayerNorm
-
-
都有 Embedding + Positional Encoding
-
都可以捕捉序列内部的依赖关系
面试可说:
“解码器和编码器的共同点在于,都是基于自注意力 + 前馈网络来提取 token 表征,基本模块是一致的。”
2️⃣ 和编码器不同的地方
| 特性 | 编码器 | 解码器 |
|---|---|---|
| 自注意力类型 | 普通自注意力 | Masked 自注意力(防止看到未来 token) |
| 编码器-解码器交互 | 无 | 额外跨注意力层(Cross-Attention),查询 decoder 输出,键值来自 encoder 输出 |
| 用途 | 理解输入序列 | 生成输出序列 |
| 输入 | 整个源序列 | 已生成序列 + 编码器上下文 |
| 输出 | 序列编码表示 | 下一个 token 的概率分布 |
面试口径总结:
“解码器在自注意力上做了遮蔽(mask),保证每个位置只能看到之前生成的 token,同时通过交叉注意力引入编码器输出,使生成能依赖源输入。”
3️⃣ 推理时的特殊设计
-
Masked 自注意力
- 保证生成是自回归的
- 不能看到未来 token → 逐步生成
-
Encoder-Decoder Cross Attention
- 每一层解码器 block 都有 cross-attention
- query = decoder 的 hidden state
- key/value = encoder 输出
- 这样每生成一个 token,都能参考完整输入序列
-
逐步生成 + 缓存
- 推理时每生成一个 token,不用重复算前面 token 的 attention
- 实际项目里叫
past_key_valuescache → 加速推理
面试可说一句:
“解码器的 mask 保证自回归,cross-attention 让生成依赖输入,生成时可以缓存中间 key/value 来加速。”

浙公网安备 33010602011771号