60 秒回答模板

实现上先准备 source 和 target 序列,做 tokenization、padding 和 mask。编码器读取 source,输出隐藏状态或 memory;解码器训练时使用 teacher forcing,把 target 右移一位作为输入,并通过 cross attention 或上下文向量读取 encoder 表示;输出层接 softmax 预测下一个 token。推理时从 BOS 开始自回归生成,用 greedy、beam search 或采样,直到 EOS 或最大长度。

考点 Encoder 得到 memory
难度 算法岗真实面经题
回答目标 讲清方法、取舍和追问

深入解析

01

输入和掩码

实现前要把源序列和目标序列转成 token id,处理 padding、长度和 batch。Transformer 场景还要准备 source padding mask、target causal mask 和 target padding mask。

02

编码器输出 memory

编码器可以是 RNN、CNN 或 Transformer。它把输入序列编码成隐藏状态序列,保留词语语义和上下文关系,供解码器在生成时读取。

03

解码器逐步生成

训练时常用 teacher forcing,把真实目标序列右移后输入解码器,让模型预测下一个 token。推理时没有真实目标,只能用已经生成的 token 自回归继续生成。

04

注意力连接两端

早期 seq2seq 用固定上下文向量,长序列效果受限;attention 让解码器每一步动态关注源序列不同位置。Transformer encoder-decoder 使用 cross attention 完成这种读取。

05

损失和推理策略

训练通常用交叉熵损失并忽略 padding 位置。推理阶段可以用 greedy decoding、beam search、top-k 或 top-p,不同策略在质量、多样性和延迟之间取舍。

易错点

  • 不要只说编码器压成一个向量,现代实现通常保留整段 memory 供 attention 读取。
  • 不要忘记 target 右移和 causal mask,否则训练会看到未来 token。
  • 不要把训练和推理混为一谈,训练可用真实 target,推理只能用已生成内容。
  • 不要忽略 padding mask,padding 位置参与 attention 会污染表示。

面试官追问

teacher forcing 的作用是什么?

它让训练时每一步都基于真实历史 token 预测下一个 token,收敛更快;但训练和推理输入分布不同,可能带来 exposure bias。

beam search 为什么常用于解码?

beam search 保留多个候选序列,避免 greedy 每步局部最优导致整体较差,但 beam 太大会增加延迟并可能降低多样性。

encoder-decoder 和 decoder-only 有什么区别?

encoder-decoder 显式分开源序列编码和目标序列生成,适合翻译、摘要等条件生成;decoder-only 用统一自回归结构,也能通过 prompt 承载条件。