从 Transformer 到文本生成 (From Transformer to Text Generation)
1. 回顾:编码器-解码器 (Encoder-Decoder) 结构的完整流程
在开始讲文本生成前,我们先快速回顾一下经典的 Encoder-Decoder Transformer 如何协同工作,这有助于理解后续 Decoder-only 的演变。以机器翻译为例:
- 编码器: 接收源语言句子(例如,"Hello world!")。通过词嵌入和位置编码,将其转换为一系列包含上下文信息的向量表示。编码器的输出是源句子的一个固定大小的表示。
- 解码器: 接收两个输入:
- 已生成的目标序列前缀: 初始时通常是起始 token (例如,"<start>")。
- 编码器的输出: 源句子的表示。
- 解码器使用带掩码自注意力处理已生成的前缀,确保不“偷看”未来的 token。
- 解码器使用交叉注意力关注编码器的输出,找出源句子的哪些部分与当前要生成的词相关。
- 解码器经过 FFN 和其他处理后,输出一个向量,这个向量通过最后的线性层和 Softmax 预测目标词汇表中下一个 token 的概率分布。
- 选择概率最高的 token 作为预测结果(或使用 Beam