3 Model Architecture
大多数具有争议的自然序列转导模型都具有编码器-解码器结构[5,2,35]。
在此,编码器将符号表示形式(x 1,…,x n)的输入序列映射到连续表示形式z =(z 1,…,z n)的序列。 给定z,则解码器然后一次生成一个元素的符号的输出序列(y 1,…,y m)。 模型的每一步都是自动回归的[10],在生成下一个时,会将先前生成的符号用作附加输入。Transformer遵循这种总体架构,对编码器和解码器使用堆叠式自注意力层和逐点,全连接层,分别如图1的左半部分和右半部分所示。
3.1 Encoder and Decoder Stacks
编码器Encoder:编码器由N = 6个相同层的堆栈组成。 每层都有两个子层。 第一个是多头自我关注机制,第二个是简单的位置完全连接的前馈网络。 我们在两个子层中的每个子层周围采用残差连接[11],然后进行层归一化[1]。 也就是说,每个子层的输出是LayerNorm(x + Sublayer(x)),其中Sublayer(x)是由子层本身实现的功能。 为了促进这些剩余连接,模型中的所有子层以及嵌入层都将产生尺寸为dmodel = 512的输出。
解码器:解码器还由N = 6个相同层的堆栈组成。 除了每个编码器层中的两个子层之外,解码器还插入第三子层,该第三子层对编码器堆栈的输出执行多头关注。 与编码器类似,我们在每个子层周围采用残余连接,然后进行层归一化。 我们还修改了解码器堆栈中的自关注度子层,以防止位置出现在后续位置。 这种堆叠,加上输出嵌入被一个位置偏移的方式,确保了对位置i的预测只能依赖于小于i位置的已知输出。