完整题目
在序列到序列模型中,编码器(Encoder)和解码器(Decoder)的功能有何区别?它们在结构和信息处理流程上有何不同?
三种常见结构
- Encoder-only:读取有效输入的双向上下文,输出通常是
[B,L_src,D]的一组hidden states,而不是天然压成单个固定向量。分类时可再池化。 - Encoder-decoder:encoder把源序列编码成随源长度变化的memory;decoder对目标前缀做causal self-attention,并用cross-attention读取整段memory。机器翻译属于典型场景。
- Decoder-only:没有独立encoder,把条件和输出前缀放进同一因果序列。
训练时encoder位置可以并行;自回归decoder在teacher forcing下也可并行计算各目标位置的loss,只用因果mask阻止未来泄漏。推理时目标token依赖已生成前缀,通常逐token解码。Beam Search只是在解码时保留多个高分候选,不改变teacher forcing造成的训练与推理输入分布差异,因此不能说它修复exposure bias。
比较时应看信息可见范围、是否有cross-attention、输出形式和训练推理方式,而不是简单概括为“encoder理解、decoder生成”。
图解
继续追问 · 3 个问题
- 为什么解码器要用因果掩码而不能看到未来token?
- 编码器-解码器架构和纯解码器架构(如GPT)各有什么优劣?
- Transformer中编码器和解码器的层数设计有什么讲究?