Transformer模型中的解码器自回归生成机制
字数 1075 2025-11-26 17:35:27
Transformer模型中的解码器自回归生成机制
题目描述
在Transformer模型的解码器中,自回归生成机制是实现序列生成任务(如机器翻译、文本生成)的核心。该机制通过逐步生成输出序列,每个时间步的预测都依赖于之前已生成的输出。我将详细解释其工作原理、掩码机制实现细节,以及训练与推理阶段的差异。
解题过程
1. 自回归生成的基本概念
自回归生成的核心思想是:在生成序列时,当前时间步的预测仅依赖于之前时间步已生成的输出。对于输出序列(y₁,y₂,...,yₙ),第t个位置的输出yₜ依赖于y₁到yₜ₋₁:
P(y₁,y₂,...,yₙ) = Π P(yₜ|y₁,...,yₜ₋₁)
这种机制确保模型在生成时不会"偷看"未来的信息,符合序列生成的因果约束。
2. 训练阶段的教师强制
在训练阶段,我们使用"教师强制"方法:
- 输入:完整的真实目标序列(右移一位)
- 输出:对应位置的预测结果
- 优势:可以并行计算整个序列的损失,提高训练效率
具体实现时,解码器输入会将目标序列向右移动一位,并在开头添加起始符<sos>。例如对于目标序列"I love deep learning",输入为"<sos> I love deep",期望输出为"I love deep learning"。
3. 推理阶段的自回归生成
推理阶段采用真正的自回归方式:
步骤1: 输入起始符`<sos>`,生成第一个词y₁
步骤2: 将`<sos>` + y₁作为输入,生成y₂
步骤3: 将`<sos>` + y₁ + y₂作为输入,生成y₃
...
步骤n: 当生成结束符`<eos>`或达到最大长度时停止
4. 因果掩码的实现细节
因果掩码(又称前瞻掩码)确保每个位置只能关注之前的位置:
# 掩码矩阵示例(序列长度=4)
[[1, 0, , 0, 0], # 位置1只能看自己
[1, 1, 0, 0], # 位置2只能看1,2
[1, 1, 1, 0], # 位置3只能看1,2,3
[1, 1, 1, 1]] # 位置4可以看全部
在自注意力计算中,通过将未来位置的注意力分数设置为负无穷大来实现:
attention_scores = QKᵀ / √d_k
masked_scores = attention_scores.masked_fill(mask == 0, -1e9)
attention_weights = softmax(masked_scores, dim=-1)
5. 解码器的层次结构
Transformer解码器由N个相同的层堆叠而成,每层包含:
- 掩码自注意力子层:处理已生成的输出序列
- 编码器-解码器注意力子层:结合编码器输出信息
- 前馈神经网络子层:进行非线性变换
每个子层都有残差连接和层归一化:
子层输出 = LayerNorm(x + Sublayer(x))
6. 编码器-解码器注意力机制
这是解码器的关键组件,让生成过程能够参考源序列信息:
- Query:来自解码器的自注意力输出
- Key和Value:来自编码器的最终输出
- 作用:在生成每个目标词时,动态关注源序列的相关部分
7. 束搜索优化生成质量
在实际应用中,常使用束搜索来改进贪婪解码:
- 维护k个最有可能的候选序列(束宽)
- 每步扩展所有候选序列,保留概率最高的k个
- 平衡生成质量与计算效率
8. 训练与推理的技术差异总结
- 并行性:训练时全序列并行,推理时逐步串行
- 输入数据:训练时用真实目标序列,推理时用模型自身输出
- 效率考虑:训练优化吞吐量,推理优化延迟
这种自回归生成机制使得Transformer能够高质量地完成各种序列生成任务,同时保持训练的高效性。