年份:2017 论文链接:https://arxiv.org/pdf/1706.03762
摘要
提出一种完全基于注意力机制的架构,成为transformer,舍弃了之前集递归卷积架构
Model architecture
以往的序列数据处理网络主要为编码器-解码器的架构:序列输入经过encoder得到映射后的特征,然后将Z经过decoder得到输出。在每一步中,模型都是自回归的,在生成下一个符号时,使用之前生成的符号作为附加的输入。
transformer遵循上述架构
Encoder and Decoder Stacks
encoder(左):N=6,由 multi-head self-attention layer 和 feed-forward layer 构成,每一层后面都接入residual connection,每一层的输出为 LayerNorm (x + Sublayer (x))
decoder(右):N=6,比encoder多了一个masked mutil-head attention layer,用于防止泄露后续位置的数据。确保了对位置i的预测只能依赖于小于i的位置的已知输出。
Attention
将查询和一组键-值对映射到输出,其中查询、键、值和输出都是向量,输出为值的加权和,权重是由查询与相应键的相关性函数计算出来的
Scaled Dot-Product Attention
为了避免出现梯度过小的情况,提出scaling factor(1/dk)来缩放查询与相应键之间的点积。
Multi-Head Attention:多个Scaled Dot-Product Attention得到的注意力concatenate在一起,然后再进行线性投影。
模型架构
- 在encoder-decoder attention layer中,queries来自上一个解码器,keys 和 values来自编码器的输出。
位置编码
将第pos位置映射为一个长度与input长度保持一致的向量