简介:本文深入解析Transformer解码器的首个输入机制,揭示其如何通过起始标记与位移操作实现自回归生成。从技术原理、训练策略到典型应用场景,帮助开发者掌握解码器输入的核心逻辑,理解其在序列生成任务中的关键作用。
在Transformer架构中,解码器(Decoder)的第一个输入是带有起始标记的空序列,具体表现为一个仅包含特殊起始符号<s>的向量。这一设计是自回归生成模型的核心特征,其本质是通过逐步预测的方式完成序列生成任务。
以机器翻译场景为例,当需要将”I Love You”翻译为中文时:
[<s> I Love You </s>](添加起始/终止标记)[<s>](首个时间步的输入)[<s> 我]、[<s> 我爱]等这种设计使得模型能够通过”预测下一个词”的方式逐步构建完整序列,而非一次性生成所有输出。
传统序列模型(如RNN)通过隐藏状态传递上下文信息,而Transformer的解码器需要显式处理已生成内容。起始标记<s>作为序列生成的触发信号,为模型提供明确的生成起点。
与完全并行生成的模型(如NAT)相比,自回归方式虽然牺牲了部分速度,但显著提升了生成质量,尤其在长序列和复杂语义场景下表现优异。
输入序列需经过以下预处理:
# 伪代码示例tokens = ["I", "Love", "You"]special_tokens = ["<s>", "</s>"]encoded_input = special_tokens[0] + " " + " ".join(tokens) + " " + special_tokens[1]# 输出: "<s> I Love You </s>"
每个token被映射为高维向量:
E(<s>) ∈ ℝ^dE(I) ∈ ℝ^d...
其中d为模型维度(如512/1024)
采用正弦位置编码保留序列顺序信息:
PE(pos,2i) = sin(pos/10000^(2i/d))PE(pos,2i+1) = cos(pos/10000^(2i/d))
训练阶段采用教师强制(Teacher Forcing)策略,将目标序列整体右移一位:
原始目标序列: [<s> 我 爱 你 </s>]位移后输入: [<s> 我 爱 你]
这种设计使模型在每个时间步预测下一个token,同时通过</s>学习终止条件。
[<s>]的嵌入向量每个新生成的token被追加到输入序列:
时间步1: [<s>] → 预测"我"时间步2: [<s> 我] → 预测"爱"时间步3: [<s> 我爱] → 预测"你"时间步4: [<s> 我爱你] → 预测"</s>"
解码器自注意力采用下三角掩码矩阵,防止模型看到未来信息:
[[1,0,0,0],[1,1,0,0],[1,1,1,0],[1,1,1,1]]
| 特性 | 编码器输入 | 解码器输入 |
|---|---|---|
| 内容构成 | 源序列 + 边界标记 | 目标序列(位移后) + 边界标记 |
| 处理方式 | 并行计算所有位置 | 自回归逐步处理 |
| 注意力机制 | 自注意力 | 自注意力+交叉注意力 |
<s>/</s>)应与通用标记区分Transformer解码器的首个输入设计体现了自回归生成模型的精妙之处:
这种设计已成为现代序列生成模型的标配,后续改进如Prefix Tuning、Prompt Tuning等均在其基础上发展而来。理解解码器首输入机制,是掌握Transformer架构的关键突破口,也是开发高性能生成模型的基础前提。