13.3 编码器—解码器模型详解
MT 的标准架构是编码器—解码器 Transformer。图 13.5 从高层展示了其直观结构。该架构由两个 Transformer 构成:编码器与第 7 章的基本 Transformer 相同;解码器则增加了称为交叉注意力层(cross-attention layer)的特殊新层。编码器接收源语言输入词元 X=x1,…,xn,通过编码器块堆栈将其映射成输出表示 Henc=h1,…,hn。
解码器本质上是一个关注编码器表示、逐个生成目标词的条件语言模型。在每个时间步,它以源句和此前生成的目标语言词为条件生成一个词元。解码可以采用第 7 章讨论的贪心、温度采样或核采样等任意方法,但 MT 最常用的是 13.4 节将介绍的束搜索。

图 13.5 用于机器翻译的编码器—解码器 Transformer 架构。编码器使用第 7 章介绍的 Transformer 块;解码器使用更强的块,其中额外的交叉注意力层可以关注全部编码器词元。
不过,该架构的组件与此前所见 Transformer 块略有不同。为了关注源语言,解码器中的 Transformer 块多了一个交叉注意力层。回顾第 7 章,Transformer 块由自注意力层及前置层归一化组成,随后是另一个层归一化和前馈层。解码器 Transformer 块则多出一个使用特殊注意力的层——交叉注意力,有时也称编码器—解码器注意力或源注意力。它与普通 Transformer 块中的多头注意力形式相同;区别在于,查询仍来自解码器前一层,而键和值来自编码器输出。
标准多头注意力中,每个注意力层的输入均为 x;交叉注意力的输入则包括编码器最终输出 Henc=h1,…,hn,其形状为 [n×d],每行表示一个输入词元。为了把来自编码器的键和值与解码器前一层的查询连接起来,将编码器输出 Henc 分别乘以交叉注意力层的键权重 WK 与值权重 WV。查询来自解码器前一层输出 Hdec[ℓ−1],再乘以交叉注意力层的查询权重 WQ:
Q=Hdec[ℓ−1]WQ;K=HencWK;V=HencWV(13.11) CrossAttention(Q,K,V)=softmax(dkQKT)V(13.12) 因此,解码器可关注投影到编码器全部最终输出表示中的每个源语言词。每个解码器块中的另一个注意力层——多头注意力层——与第 7 章相同,采用因果(从左到右)注意力。编码器中的多头注意力则可前瞻查看完整源语言文本,因此不使用掩码。

图 13.6 编码器与解码器的 Transformer 块,以残差流视角展示。编码器最终输出 Henc=h1,…,hn 是解码器使用的上下文。解码器是标准 Transformer,但多了一个交叉注意力层;该层接收编码器输出 Henc,用它形成 K、V 输入。
训练编码器—解码器模型时,我们向网络提供源文本,再从分隔词元开始,使用交叉熵损失以自回归方式训练它预测下一词元。回顾语言建模中的交叉熵损失,它由模型赋给正确下一词的概率决定。因此,时间 t 的 CE 损失是模型赋给训练序列中下一词的概率之负对数:
LCE(y^t,yt)=−logy^t[wt+1](13.13) 在这种情况下,解码器使用教师强制(teacher forcing)。也就是说,在解码的每个时间步,强制系统把训练数据中的金标准目标词元作为下一个输入 xt+1,而不是让它依赖可能有误的解码器输出 y^t。