真实面经题目 · 原创解析
Encoder 和 Decoder 中的 Attention 有什么区别?
Encoder 和 Decoder 中 Attention 的核心区别在于可见信息、mask 约束和信息来源不同:Encoder 做双向理解,Decoder 做自回归生成并可能交叉关注 Encoder 输出。
真实面经题目 · 原创解析
Encoder 和 Decoder 中 Attention 的核心区别在于可见信息、mask 约束和信息来源不同:Encoder 做双向理解,Decoder 做自回归生成并可能交叉关注 Encoder 输出。
Encoder 里的 self-attention 通常能看到输入序列的全部 token,用来做双向上下文建模。Decoder 里的 self-attention 要加 causal mask,当前位置只能看已经生成的历史 token,不能看未来。Encoder-Decoder 模型中 Decoder 还会有 cross-attention,Q 来自 Decoder 当前状态,K/V 来自 Encoder 输出,用来在生成时对输入内容对齐和取信息。三者的 QKV 来源、mask 和目标都不同。
Encoder 的 self-attention 面向理解任务,通常可以让每个位置看到整段输入。这样它能同时利用左侧和右侧上下文,形成更完整的输入表示。
Decoder 自回归生成时不能提前看到未来 token,所以 self-attention 会使用 causal mask。当前位置只能聚合前面已经生成的内容,保持训练和推理一致。
在翻译、摘要等 Encoder-Decoder 结构里,Decoder 的 cross-attention 使用 Decoder hidden state 做 Q,Encoder 输出做 K/V,让生成过程对输入片段进行对齐。
Encoder self-attention 的 Q/K/V 都来自输入表示;Decoder masked self-attention 的 Q/K/V 来自目标侧历史;cross-attention 则是 Q 来自目标侧,K/V 来自源侧。
Encoder 偏理解和表征,Decoder 偏逐步生成,cross-attention 偏条件生成时的信息读取。区分这三类,比只说是否有 mask 更完整。
生成时未来 token 尚不存在,训练阶段也要避免信息泄漏,否则推理时行为会不一致。
普通 decoder-only 语言模型通常没有 encoder-decoder cross-attention,但多模态或条件生成结构可能额外接入外部表示。
Q 来自 Decoder 当前状态,K 和 V 来自 Encoder 输出,这样目标侧可以按需读取源侧信息。