一、并行计算在训练阶段的解码器
在训练阶段,解码器接收目标序列的前缀(即已生成部分)作为输入,并且目标序列的真实值是已知的。由于所有时间步的目标序列都已知,因此解码器可以并行计算每个时间步的输出。
1.教师强制(Teacher Forcing)
教师强制是训练序列到序列模型的一种技术。在这种方法中,解码器在每个时间步都接收真实的目标序列的前一个词作为输入,而不是它在前一个时间步生成的词。这意味着:
(1)解码器在时间步 \( t \) 的输入是目标序列在时间步 \( t-1 \) 的真实词。
(2)这样所有时间步的输入都是已知的,可以并行计算。
2.解码器的并行计算
由于教师强制,解码器可以并行处理目标序列的每个时间步。具体步骤如下:
(1)编码器处理源序列
编码器将源序列 \( X \) 编码成一系列隐状态表示。
(2)解码器处理目标序列前缀
目标序列前缀(例如,对于目标序列 "I am a student",目标序列前缀是 "\<start> I am a")通过词嵌入和位置编码处理后,输入到解码器。
解码器的自注意力层和编码器-解码器注意力层能够并行处理目标序列的所有时间步,因为所有输入都是已知的。
(3)并行计算输出
解码器的各个时间步的计算(包括自注意力计算和前馈神经网络计算)都是并行进行的,生成每个时间步的预测输出。
二、顺序计算在推理阶段的解码器
在推理阶段(预测阶段),解码器无法使用教师强制,因为目标序列是未知的,需要模型逐步生成。这个过程中涉及顺序计算:
1.初始输入
解码器的初始输入是特殊的起始标记(如 \<start>)。
2.逐步生成
在每个时间步,解码器生成一个词,然后将这个词作为下一个时间步的输入。
生成过程是顺序进行的,因为每个时间步的输出依赖于前一个时间步生成的结果。
三、结合两种计算方式
训练阶段,利用教师强制并行计算解码器的所有时间步,加速训练过程并提高效率。
推理阶段,逐步生成序列,依赖于前一个时间步的输出,因而是顺序进行的。
四、示例
假设目标序列 \( Y \) 为 "I am a student":
训练阶段
目标序列前缀(解码器输入):"\<start> I am a"
解码器并行计算每个时间步的输出:"I", "am", "a", "student"
推理阶段
初始输入:"\<start>"
生成过程:
时间步 1: 生成 "I",下一个输入 "\<start> I"
时间步 2: 生成 "am",下一个输入 "\<start> I am"
时间步 3: 生成 "a",下一个输入 "\<start> I am a"
时间步 4: 生成 "student",结束生成
五、总结
在训练阶段,Transformer的解码器利用教师强制方法进行并行计算,因为所有目标序列的真实值都是已知的。而在推理阶段,由于需要逐步生成序列,解码器采用顺序计算方法。这种设计使得模型在训练时具有高效的并行处理能力,而在推理时能够逐步生成准确的输出序列。