Transformer是一种基于注意力机制的模型,相较于传统的循环结构和卷积结构,它具有更好的效果和更强的并行计算能力,同时训练时间更短。它解决了循环模型在处理长序列语料时的缺陷。
Transformer的结构
Transformer主要包含以下部分:
- Encoder:由6个相同的层构成,每个层包含多头自注意力子层与FFN子层两个子层。层的输入为Input(输入的语句)经过Embedding与Positional Encoding相加后得到的结果。
- Decoder:同样以6个相同的层构成,每个层包含掩码多头自注意力子层、编码-解码注意力子层、FFN子层三个子层。层的输入为Output(输出的语句)经过Embedding与Positional Encoding相加后得到的结果。
- Embedding:包括Input的Embedding和Output的Embedding,这两个Embedding与Pre-softmax层共享权重。
- Positional Encoding:将输入序列信息嵌入至向量表示,使用正弦与余弦公式得到位置的嵌入信息。
- Pre-softmax:与两个Embedding共享权重。
Transformer的子层
Transformer的每个子层的输出维度均为dmodel,论文中dmodel为512。具体子层内容如下:
- 多头自注意力子层:由multi-head attention和add&norm两个构件组成。multi-head attention为多个(论文中为8个,h=8)自注意力构件计算后拼接然后乘以一个矩阵得到,其输出维度与输入维度相同。自注